Detect errors on EOF

v0.6
Ryan Dahl 14 years ago
parent fcdbc2629f
commit 1c3624a963

@ -331,10 +331,20 @@ size_t http_parser_execute (http_parser *parser,
uint64_t nread = parser->nread; uint64_t nread = parser->nread;
if (len == 0) { if (len == 0) {
if (state == s_body_identity_eof) { switch (state) {
CALLBACK2(message_complete); case s_body_identity_eof:
CALLBACK2(message_complete);
return 0;
case s_dead:
case s_start_req_or_res:
case s_start_res:
case s_start_req:
return 0;
default:
return 1; // error
} }
return 0;
} }
/* technically we could combine all of these (except for url_mark) into one /* technically we could combine all of these (except for url_mark) into one

@ -1735,14 +1735,22 @@ main (void)
/// REQUESTS /// REQUESTS
test_simple("hello world", 0); test_simple("hello world", 0);
test_simple("GET / HTP/1.1\r\n\r\n", 0); test_simple("GET / HTP/1.1\r\n\r\n", 0);
test_simple("ASDF / HTTP/1.1\r\n\r\n", 0); test_simple("ASDF / HTTP/1.1\r\n\r\n", 0);
test_simple("PROPPATCHA / HTTP/1.1\r\n\r\n", 0); test_simple("PROPPATCHA / HTTP/1.1\r\n\r\n", 0);
test_simple("GETA / HTTP/1.1\r\n\r\n", 0); test_simple("GETA / HTTP/1.1\r\n\r\n", 0);
// Well-formed but incomplete
test_simple("GET / HTTP/1.1\r\n"
"Content-Type: text/plain\r\n"
"Content-Length: 6\r\n"
"\r\n"
"fooba",
0);
static const char *all_methods[] = { static const char *all_methods[] = {
"DELETE", "DELETE",
"GET", "GET",

Loading…
Cancel
Save