proc: consume all data after the pipe dies, instead of looping with 100% cpu usage
[project/uhttpd.git] / proc.c
diff --git a/proc.c b/proc.c
index 02e056c..5be6232 100644 (file)
--- a/proc.c
+++ b/proc.c
@@ -263,6 +263,7 @@ static void proc_relay_write_cb(struct client *cl)
                return;
 
        ustream_set_read_blocked(&p->r.sfd.stream, false);
+       p->r.sfd.stream.notify_read(&p->r.sfd.stream, 0);
 }
 
 static int proc_data_send(struct client *cl, const char *data, int len)
@@ -281,9 +282,8 @@ static int proc_data_send(struct client *cl, const char *data, int len)
                        if (errno == EAGAIN || errno == EWOULDBLOCK)
                                break;
 
-                       /* error, no retry */
-                       len = 0;
-                       break;
+                       /* consume all data */
+                       ret = len;
                }
 
                if (!ret)