version 1.204, 2019/06/27 18:03:37 |
version 1.205, 2019/06/28 13:35:02 |
|
|
close(s); |
close(s); |
s = local_listen(host, uport, hints); |
s = local_listen(host, uport, hints); |
} |
} |
if (s < 0) |
if (s == -1) |
err(1, NULL); |
err(1, NULL); |
if (uflag && kflag) { |
if (uflag && kflag) { |
/* |
/* |
|
|
len = sizeof(z); |
len = sizeof(z); |
rv = recvfrom(s, buf, sizeof(buf), MSG_PEEK, |
rv = recvfrom(s, buf, sizeof(buf), MSG_PEEK, |
(struct sockaddr *)&z, &len); |
(struct sockaddr *)&z, &len); |
if (rv < 0) |
if (rv == -1) |
err(1, "recvfrom"); |
err(1, "recvfrom"); |
|
|
rv = connect(s, (struct sockaddr *)&z, len); |
rv = connect(s, (struct sockaddr *)&z, len); |
if (rv < 0) |
if (rv == -1) |
err(1, "connect"); |
err(1, "connect"); |
|
|
if (vflag) |
if (vflag) |
|
|
tls_free(tls_cctx); |
tls_free(tls_cctx); |
} |
} |
if (family == AF_UNIX && uflag) { |
if (family == AF_UNIX && uflag) { |
if (connect(s, NULL, 0) < 0) |
if (connect(s, NULL, 0) == -1) |
err(1, "connect"); |
err(1, "connect"); |
} |
} |
|
|
|
|
|
|
/* Create unix domain socket. */ |
/* Create unix domain socket. */ |
if ((s = socket(AF_UNIX, flags | (uflag ? SOCK_DGRAM : SOCK_STREAM), |
if ((s = socket(AF_UNIX, flags | (uflag ? SOCK_DGRAM : SOCK_STREAM), |
0)) < 0) |
0)) == -1) |
return -1; |
return -1; |
|
|
memset(&s_un, 0, sizeof(struct sockaddr_un)); |
memset(&s_un, 0, sizeof(struct sockaddr_un)); |
|
|
return -1; |
return -1; |
} |
} |
|
|
if (bind(s, (struct sockaddr *)&s_un, sizeof(s_un)) < 0) { |
if (bind(s, (struct sockaddr *)&s_un, sizeof(s_un)) == -1) { |
save_errno = errno; |
save_errno = errno; |
close(s); |
close(s); |
errno = save_errno; |
errno = save_errno; |
|
|
int s, save_errno; |
int s, save_errno; |
|
|
if (uflag) { |
if (uflag) { |
if ((s = unix_bind(unix_dg_tmp_socket, SOCK_CLOEXEC)) < 0) |
if ((s = unix_bind(unix_dg_tmp_socket, SOCK_CLOEXEC)) == -1) |
return -1; |
return -1; |
} else { |
} else { |
if ((s = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) < 0) |
if ((s = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) == -1) |
return -1; |
return -1; |
} |
} |
|
|
|
|
errno = ENAMETOOLONG; |
errno = ENAMETOOLONG; |
return -1; |
return -1; |
} |
} |
if (connect(s, (struct sockaddr *)&s_un, sizeof(s_un)) < 0) { |
if (connect(s, (struct sockaddr *)&s_un, sizeof(s_un)) == -1) { |
save_errno = errno; |
save_errno = errno; |
close(s); |
close(s); |
errno = save_errno; |
errno = save_errno; |
|
|
{ |
{ |
int s; |
int s; |
|
|
if ((s = unix_bind(path, 0)) < 0) |
if ((s = unix_bind(path, 0)) == -1) |
return -1; |
return -1; |
if (listen(s, 5) < 0) { |
if (listen(s, 5) == -1) { |
close(s); |
close(s); |
return -1; |
return -1; |
} |
} |
|
|
|
|
for (res = res0; res; res = res->ai_next) { |
for (res = res0; res; res = res->ai_next) { |
if ((s = socket(res->ai_family, res->ai_socktype | |
if ((s = socket(res->ai_family, res->ai_socktype | |
SOCK_NONBLOCK, res->ai_protocol)) < 0) |
SOCK_NONBLOCK, res->ai_protocol)) == -1) |
continue; |
continue; |
|
|
/* Bind to a local port or source address if specified. */ |
/* Bind to a local port or source address if specified. */ |
|
|
errx(1, "getaddrinfo: %s", gai_strerror(error)); |
errx(1, "getaddrinfo: %s", gai_strerror(error)); |
|
|
if (bind(s, (struct sockaddr *)ares->ai_addr, |
if (bind(s, (struct sockaddr *)ares->ai_addr, |
ares->ai_addrlen) < 0) |
ares->ai_addrlen) == -1) |
err(1, "bind failed"); |
err(1, "bind failed"); |
freeaddrinfo(ares); |
freeaddrinfo(ares); |
} |
} |
|
|
|
|
for (res = res0; res; res = res->ai_next) { |
for (res = res0; res; res = res->ai_next) { |
if ((s = socket(res->ai_family, res->ai_socktype, |
if ((s = socket(res->ai_family, res->ai_socktype, |
res->ai_protocol)) < 0) |
res->ai_protocol)) == -1) |
continue; |
continue; |
|
|
ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); |
ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); |
|
|
} |
} |
|
|
if (!uflag && s != -1) { |
if (!uflag && s != -1) { |
if (listen(s, 1) < 0) |
if (listen(s, 1) == -1) |
err(1, "listen"); |
err(1, "listen"); |
} |
} |
if (vflag && s != -1) { |
if (vflag && s != -1) { |