From d03b80bc1219c673aec8906b60cce6be0ad85700 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sat, 14 Apr 2012 23:12:36 +0200 Subject: [PATCH] deps: upgrade http_parser to joyent/http-parser@da91852 --- deps/http_parser/http_parser.c | 3 ++ deps/http_parser/test.c | 50 ++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/deps/http_parser/http_parser.c b/deps/http_parser/http_parser.c index 5e135f7b20..913799ffae 100644 --- a/deps/http_parser/http_parser.c +++ b/deps/http_parser/http_parser.c @@ -433,6 +433,9 @@ size_t http_parser_execute (http_parser *parser, /* this state is used after a 'Connection: close' message * the parser will error out if it reads another message */ + if (ch == CR || ch == LF) + break; + SET_ERRNO(HPE_CLOSED_CONNECTION); goto error; diff --git a/deps/http_parser/test.c b/deps/http_parser/test.c index be633eb3b8..535a07526b 100644 --- a/deps/http_parser/test.c +++ b/deps/http_parser/test.c @@ -680,6 +680,56 @@ const struct message requests[] = ,.body= "" } +/* see https://github.com/ry/http-parser/issues/47 */ +#define EAT_TRAILING_CRLF_NO_CONNECTION_CLOSE 28 +, {.name = "eat CRLF between requests, no \"Connection: close\" header" + ,.raw= "POST / HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: 4\r\n" + "\r\n" + "q=42\r\n" /* note the trailing CRLF */ + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.request_url= "/" + ,.num_headers= 3 + ,.upgrade= 0 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/x-www-form-urlencoded" } + , { "Content-Length", "4" } + } + ,.body= "q=42" + } + +/* see https://github.com/ry/http-parser/issues/47 */ +#define EAT_TRAILING_CRLF_WITH_CONNECTION_CLOSE 29 +, {.name = "eat CRLF between requests even if \"Connection: close\" is set" + ,.raw= "POST / HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: 4\r\n" + "Connection: close\r\n" + "\r\n" + "q=42\r\n" /* note the trailing CRLF */ + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE /* input buffer isn't empty when on_message_complete is called */ + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.request_url= "/" + ,.num_headers= 4 + ,.upgrade= 0 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/x-www-form-urlencoded" } + , { "Content-Length", "4" } + , { "Connection", "close" } + } + ,.body= "q=42" + } + , {.name= NULL } /* sentinel */ };