22 lines
637 B
Diff
22 lines
637 B
Diff
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];
|