From aa664c80401508438b8570b0ca5b1012fbfc2eaa Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 25 Aug 2009 12:56:54 +0200 Subject: [PATCH] Add close() to coupling pump. Wasn't getting EOF. --- deps/coupling/coupling.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/deps/coupling/coupling.c b/deps/coupling/coupling.c index bd7b4b8a7f..e4817dabc1 100644 --- a/deps/coupling/coupling.c +++ b/deps/coupling/coupling.c @@ -176,11 +176,14 @@ pump (int pullfd, int pushfd) r = select(maxfd+1, &readfds, &writefds, &exceptfds, NULL); if (r < 0 || FD_ISSET(pushfd, &exceptfds)) { + close(pushfd); + close(pullfd); pushfd = pullfd = -1; return; } if (pullfd >= 0 && FD_ISSET(pullfd, &exceptfds)) { + close(pullfd); pullfd = -1; } @@ -188,6 +191,7 @@ pump (int pullfd, int pushfd) r = ring_buffer_pull(&ring, pullfd); if (r == 0) { /* eof */ + close(pullfd); pullfd = -1; } else if (r < 0) { @@ -205,6 +209,8 @@ pump (int pullfd, int pushfd) case EPIPE: /* TODO catch SIGPIPE? */ + close(pushfd); + close(pullfd); pushfd = pullfd = -1; return; @@ -215,9 +221,13 @@ pump (int pullfd, int pushfd) } } + close(pushfd); + close(pullfd); return; error: + close(pushfd); + close(pullfd); perror("(coupling) pump"); }