From 8d68feb78b3ea56d2ea4103b9ef9b8770053981c Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 6 Jun 2013 17:12:35 +0100 Subject: [PATCH] Stream read fix. --- src/worker.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/worker.c b/src/worker.c index d37e3f9a2..828d2b4cc 100644 --- a/src/worker.c +++ b/src/worker.c @@ -299,15 +299,23 @@ read_socket (f_str_t * in, void *arg) break; case READ_MESSAGE: /* Allow half-closed connections to be proceed */ - task->dispatcher->want_read = FALSE; + if (task->content_length > 0) { task->msg->begin = in->begin; task->msg->len = in->len; debug_task ("got string of length %z", task->msg->len); task->state = WAIT_FILTER; - + task->dispatcher->want_read = FALSE; } else { + if (!task->dispatcher->want_read && in->len == 0) { + /* + * Skip initial zero length string remain from + * buffer policy switch + */ + task->dispatcher->want_read = FALSE; + return TRUE; + } if (in->len > 0) { if (task->msg->begin == NULL) { /* Allocate buf */ -- 2.39.5