diff --git a/libs/xmlrpc-c/lib/abyss/src/socket_unix.c b/libs/xmlrpc-c/lib/abyss/src/socket_unix.c index 5d0bb0a360..623185269e 100644 --- a/libs/xmlrpc-c/lib/abyss/src/socket_unix.c +++ b/libs/xmlrpc-c/lib/abyss/src/socket_unix.c @@ -77,6 +77,10 @@ initInterruptPipe(interruptPipe * pipeP, static void termInterruptPipe(interruptPipe *pipeP) { if (pipeP->inuse) { + int x = 0; + write(pipeP->interruptorFd, &x, sizeof(x)); + usleep(500); + shutdown(pipeP->interrupteeFd, 2); sane_close(pipeP->interruptorFd); sane_close(pipeP->interrupteeFd); } @@ -310,6 +314,7 @@ channelWait(TChannel * const channelP, rc = poll(pollfds, ARRAY_SIZE(pollfds), timeoutMs == TIME_INFINITE ? -1 : timeoutMs); + if (rc < 0) { if (errno == EINTR) { failed = FALSE;