| diff -aburN xqf.orig/src/launch.c xqf/src/launch.c |
| --- xqf.orig/src/launch.c 2009-10-13 11:58:24.000000000 +0200 |
| +++ xqf/src/launch.c 2009-10-13 11:59:35.000000000 +0200 |
| @@ -168,13 +168,17 @@ |
| |
| res = read (fd, cl->buffer + cl->pos, CLIENT_ERROR_BUFFER - 1 - cl->pos); |
| |
| - if (res <= 0) { /* read error or EOF */ |
| + if (res < 0) { /* read error or EOF */ |
| if (errno == EAGAIN || errno == EWOULDBLOCK) |
| return; |
| |
| client_detach (cl); |
| return; |
| } |
| + else if (res == 0) { |
| + client_detach (cl); |
| + return; |
| + } |
| |
| if (cl->pos + res == CLIENT_ERROR_BUFFER - 1) { |
| tmp = &cl->buffer[CLIENT_ERROR_BUFFER - 1]; |