diff --git a/web/chttp.c b/web/chttp.c index 36048ef..810f73b 100644 --- a/web/chttp.c +++ b/web/chttp.c @@ -4057,7 +4057,7 @@ http_server_conn_process_events(HTTP_Server *server, HTTP_ServerConn *conn) byte_queue_write_ack(&conn->input, num); - if (byte_queue_error(&conn->output)) { + if (byte_queue_error(&conn->input)) { socket_close(&server->sockets, conn->handle); } else { check_request_buffer(server, conn); diff --git a/web/main.c b/web/main.c index 36d7730..e82964f 100644 --- a/web/main.c +++ b/web/main.c @@ -186,7 +186,7 @@ int main(int argc, char **argv) return -1; int num_polled = num_http_polled + num_toasty_polled; - if (num_polled > 0) + if (num_http_polled != 0 && num_toasty_polled != 0) POLL(polled, num_polled, -1); // First, process toasty events so that we free space @@ -331,9 +331,11 @@ int main(int argc, char **argv) if (http_server_process_events(&server, ®) < 0) return -1; - HTTP_Request *request; - HTTP_ResponseBuilder builder; - if (http_server_next_request(&server, &request, &builder)) { + for (;;) { + HTTP_Request *request; + HTTP_ResponseBuilder builder; + if (!http_server_next_request(&server, &request, &builder)) + break; switch (request->method) { case HTTP_METHOD_GET: