From fae8886f8aa5d996c8de607abea8b677216549b5 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 31 Jul 2013 18:29:03 +0200 Subject: client: prevent further read calls after a client has been freed Signed-off-by: Felix Fietkau --- client.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'client.c') diff --git a/client.c b/client.c index 173285a..3185b8f 100644 --- a/client.c +++ b/client.c @@ -24,6 +24,7 @@ #include "tls.h" static LIST_HEAD(clients); +static bool client_done = false; int n_clients = 0; struct config conf = {}; @@ -442,6 +443,7 @@ void uh_client_read_cb(struct client *cl) char *str; int len; + client_done = false; do { str = ustream_get_read_buf(us, &len); if (!str || !len) @@ -456,11 +458,12 @@ void uh_client_read_cb(struct client *cl) uh_header_error(cl, 413, "Request Entity Too Large"); break; } - } while(1); + } while (!client_done); } static void client_close(struct client *cl) { + client_done = true; n_clients--; uh_dispatch_done(cl); uloop_timeout_cancel(&cl->timeout); -- cgit v1.2.3