Sprinkle CLOEXEC around.
This commit is contained in:
@@ -47,7 +47,7 @@ static void incoming_handler(struct peer *peer) {
|
||||
struct sockaddr peer_addr, local_addr;
|
||||
socklen_t peer_addrlen = sizeof(peer_addr), local_addrlen = sizeof(local_addr);
|
||||
|
||||
int fd = accept4(incoming->peer.fd, &peer_addr, &peer_addrlen, SOCK_NONBLOCK);
|
||||
int fd = accept4(incoming->peer.fd, &peer_addr, &peer_addrlen, SOCK_NONBLOCK | SOCK_CLOEXEC);
|
||||
if (fd == -1) {
|
||||
fprintf(stderr, "I %s: Failed to accept new connection on %s/%s: %s\n", incoming->id, incoming->node, incoming->service, strerror(errno));
|
||||
return;
|
||||
@@ -81,7 +81,7 @@ static void incoming_listen(struct incoming *incoming) {
|
||||
assert(getnameinfo(addr->ai_addr, addr->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0);
|
||||
fprintf(stderr, "I %s: Listening on %s/%s...\n", incoming->id, hbuf, sbuf);
|
||||
|
||||
incoming->peer.fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
|
||||
incoming->peer.fd = socket(addr->ai_family, addr->ai_socktype | SOCK_CLOEXEC, addr->ai_protocol);
|
||||
assert(incoming->peer.fd >= 0);
|
||||
|
||||
int optval = 1;
|
||||
|
||||
@@ -54,7 +54,7 @@ static void outgoing_connect_next(struct outgoing *outgoing) {
|
||||
assert(getnameinfo(outgoing->addr->ai_addr, outgoing->addr->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0);
|
||||
fprintf(stderr, "O %s: Connecting to %s/%s...\n", outgoing->id, hbuf, sbuf);
|
||||
|
||||
outgoing->peer.fd = socket(outgoing->addr->ai_family, outgoing->addr->ai_socktype | SOCK_NONBLOCK, outgoing->addr->ai_protocol);
|
||||
outgoing->peer.fd = socket(outgoing->addr->ai_family, outgoing->addr->ai_socktype | SOCK_NONBLOCK | SOCK_CLOEXEC, outgoing->addr->ai_protocol);
|
||||
assert(outgoing->peer.fd >= 0);
|
||||
|
||||
int result = connect(outgoing->peer.fd, outgoing->addr->ai_addr, outgoing->addr->ai_addrlen);
|
||||
|
||||
@@ -36,7 +36,7 @@ void peer_init() {
|
||||
assert(peer_epoll_fd >= 0);
|
||||
|
||||
int cancel_fds[2];
|
||||
assert(!pipe2(cancel_fds, O_NONBLOCK));
|
||||
assert(!pipe2(cancel_fds, O_CLOEXEC));
|
||||
|
||||
struct peer *cancel_peer = malloc(sizeof(*cancel_peer));
|
||||
assert(cancel_peer);
|
||||
|
||||
Reference in New Issue
Block a user