diff --git a/deps/http_parser/http_parser.c b/deps/http_parser/http_parser.c
index 808d11e..d3f34dd 100644
--- a/deps/http_parser/http_parser.c
+++ b/deps/http_parser/http_parser.c
@@ -1256,21 +1256,21 @@ size_t parse (http_parser *parser, const char *data, size_t len, int start_state
         }
 
         parser->body_read = 0;
 
         CALLBACK2(headers_complete);
         
         if (parser->flags & F_CHUNKED) {
           /* chunked encoding - ignore Content-Length header */
           state = s_chunk_size_start;
         } else {
-          if (parser->content_length == 0) {
+          if (parser->content_length == 0 || parser->method == HTTP_HEAD) {
             /* Content-Length header given but zero: Content-Length: 0\r\n */
             CALLBACK2(message_complete);
             state = NEW_MESSAGE();
           } else if (parser->content_length > 0) {
             /* Content-Length header given and non-zero */
             state = s_body_identity;
           } else {
             if (start_state == s_start_req || http_should_keep_alive(parser)) {
               /* Assume content-length 0 - read the next */
               CALLBACK2(message_complete);

