From: Rusty Russell Date: Tue, 5 Aug 2014 11:07:44 +0000 (+0930) Subject: ccan/io: use shutdown() before close. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=31df8231a077488a9f4010a8863ca38993aa69c8 ccan/io: use shutdown() before close. During a debugging session, I wondered why poll() wasn't exiting when I killed a (local) peer. Signed-off-by: Rusty Russell --- diff --git a/ccan/io/poll.c b/ccan/io/poll.c index 078de140..8f77dd42 100644 --- a/ccan/io/poll.c +++ b/ccan/io/poll.c @@ -78,6 +78,12 @@ static void del_fd(struct fd *fd) } num_fds--; fd->backend_info = -1; + + /* Closing a local socket doesn't wake poll() because other end + * has them open. See 2.6. When should I use shutdown()? + * in http://www.faqs.org/faqs/unix-faq/socket/ */ + shutdown(fd->fd, SHUT_RDWR); + close(fd->fd); }