From 814aaa844a71290aaff497510e4a0d72ab1ca8ba Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Wed, 15 Apr 2009 11:18:09 +0300 Subject: [PATCH] Fix small HTTP processing issues Parse "Transfer-Encoding: chunked" properly. Get more data if read buffer is empty when starting to process the body. --- src/wps/httpread.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/wps/httpread.c b/src/wps/httpread.c index 313b4687c..0d7165e9c 100644 --- a/src/wps/httpread.c +++ b/src/wps/httpread.c @@ -206,7 +206,8 @@ static int httpread_hdr_option_analyze( h->got_content_length = 1; return 0; } - if (word_eq(hbp, "TRANSFER_ENCODING:")) { + if (word_eq(hbp, "TRANSFER_ENCODING:") || + word_eq(hbp, "TRANSFER-ENCODING:")) { while (isgraph(*hbp)) hbp++; while (*hbp == ' ' || *hbp == '\t') @@ -214,7 +215,7 @@ static int httpread_hdr_option_analyze( /* There should (?) be no encodings of interest * other than chunked... */ - if (os_strncmp(hbp, "CHUNKED", 7)) { + if (word_eq(hbp, "CHUNKED")) { h->chunked = 1; h->in_chunk_data = 0; /* ignore possible ; */ @@ -513,6 +514,8 @@ static void httpread_read_handler(int sd, void *eloop_ctx, void *sock_ctx) * consists of chunks each with a header, ending with * an ending header. */ + if (nread == 0) + goto get_more; if (!h->got_body) { /* Here to get (more of) body */ /* ensure we have enough room for worst case for body