Sprinkle CLOEXEC around.

This commit is contained in:
Ian Gulliver
2016-02-23 12:00:17 -08:00
parent f676cc531a
commit 77ee1422c1
3 changed files with 4 additions and 4 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);