MEDIUM: listeners: set O_CLOEXEC on the accepted FDs

Set the O_CLOEXEC flag on the accept, useful to avoid an FD leak in the
master process, since it reexecutes itself during a reload
diff --git a/src/listener.c b/src/listener.c
index fb23069..a730b18 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -545,7 +545,7 @@
 		/* with sockpair@ we don't want to do an accept */
 		if (unlikely(l->addr.ss_family == AF_CUST_SOCKPAIR)) {
 			if ((cfd = recv_fd_uxst(fd)) != -1)
-				fcntl(cfd, F_SETFL, O_NONBLOCK);
+				fcntl(cfd, F_SETFL, O_NONBLOCK|O_CLOEXEC);
 		} else
 
 #ifdef USE_ACCEPT4
@@ -553,12 +553,12 @@
 		 * fallback to the legacy accept() + fcntl().
 		 */
 		if (unlikely(accept4_broken ||
-			((cfd = accept4(fd, (struct sockaddr *)&addr, &laddr, SOCK_NONBLOCK)) == -1 &&
+			((cfd = accept4(fd, (struct sockaddr *)&addr, &laddr, SOCK_NONBLOCK|SOCK_CLOEXEC)) == -1 &&
 			(errno == ENOSYS || errno == EINVAL || errno == EBADF) &&
 			(accept4_broken = 1))))
 #endif
 			if ((cfd = accept(fd, (struct sockaddr *)&addr, &laddr)) != -1)
-				fcntl(cfd, F_SETFL, O_NONBLOCK);
+				fcntl(cfd, F_SETFL, O_NONBLOCK|O_CLOEXEC);
 
 		if (unlikely(cfd == -1)) {
 			switch (errno) {