From 788b200e90d0f84b54ecffba932ebdb6e1ed7a08 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 20 Dec 2019 16:08:24 +0800 Subject: [PATCH] For #1508, check the error by http_errno for http-parser. --- trunk/src/service/srs_service_http_conn.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/trunk/src/service/srs_service_http_conn.cpp b/trunk/src/service/srs_service_http_conn.cpp index 2802a44b1..5610c78dc 100644 --- a/trunk/src/service/srs_service_http_conn.cpp +++ b/trunk/src/service/srs_service_http_conn.cpp @@ -116,8 +116,12 @@ srs_error_t SrsHttpParser::parse_message_imp(ISrsReader* reader) while (true) { if (buffer->size() > 0) { ssize_t nparsed = http_parser_execute(&parser, &settings, buffer->bytes(), buffer->size()); - if (buffer->size() != nparsed) { - return srs_error_new(ERROR_HTTP_PARSE_HEADER, "parse failed, nparsed=%d, size=%d", nparsed, buffer->size()); + + // The error is set in http_errno. + enum http_errno code; + if ((code = HTTP_PARSER_ERRNO(&parser)) != HPE_OK) { + return srs_error_new(ERROR_HTTP_PARSE_HEADER, "parse %dB, nparsed=%d, err=%d/%s %s", + buffer->size(), nparsed, http_errno_name(code), http_errno_description(code)); } // The consumed size, does not include the body.