mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
Fix bug when the value of http header is empty (#2888)
* Fix bug when the value of http header is empty * add utest
This commit is contained in:
parent
a4a231e396
commit
290c3b95a5
2 changed files with 26 additions and 5 deletions
|
@ -263,12 +263,12 @@ int SrsHttpParser::on_header_value(http_parser* parser, const char* at, size_t l
|
|||
|
||||
if (length > 0) {
|
||||
obj->field_value.append(at, (int)length);
|
||||
}
|
||||
|
||||
// When header parsed, we must save the position of start for body,
|
||||
// because we have to consume the header in buffer.
|
||||
// @see https://github.com/ossrs/srs/issues/1508
|
||||
obj->p_header_tail = at;
|
||||
// When header parsed, we must save the position of start for body,
|
||||
// because we have to consume the header in buffer.
|
||||
// @see https://github.com/ossrs/srs/issues/1508
|
||||
obj->p_header_tail = at;
|
||||
}
|
||||
|
||||
srs_info("Header value(%d bytes): %.*s", (int)length, (int)length, at);
|
||||
return 0;
|
||||
|
|
|
@ -143,6 +143,16 @@ string mock_http_response2(int status, string content)
|
|||
return ss.str();
|
||||
}
|
||||
|
||||
string mock_http_response3(int status, string content)
|
||||
{
|
||||
stringstream ss;
|
||||
ss << "HTTP/1.1 " << status << " " << srs_generate_http_status_text(status) << "\r\n"
|
||||
<< "Server:" << "\r\n"
|
||||
<< "\r\n"
|
||||
<< content;
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
bool is_string_contain(string substr, string str)
|
||||
{
|
||||
return (string::npos != str.find(substr));
|
||||
|
@ -528,6 +538,17 @@ VOID TEST(ProtocolHTTPTest, ClientRequest)
|
|||
EXPECT_STREQ("Hello, world!", res.c_str());
|
||||
srs_freep(msg);
|
||||
}
|
||||
|
||||
// Normal case, with empty server.
|
||||
if(true) {
|
||||
MockBufferIO io; io.append(mock_http_response3(200, "Hello, world!"));
|
||||
SrsHttpParser hp; HELPER_ASSERT_SUCCESS(hp.initialize(HTTP_RESPONSE));
|
||||
ISrsHttpMessage* msg = NULL; HELPER_ASSERT_SUCCESS(hp.parse_message(&io, &msg));
|
||||
string res; HELPER_ASSERT_SUCCESS(msg->body_read_all(res));
|
||||
EXPECT_EQ(200, msg->status_code());
|
||||
EXPECT_STREQ("Hello, world!", res.c_str());
|
||||
srs_freep(msg);
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ProtocolHTTPTest, ResponseHTTPError)
|
||||
|
|
Loading…
Reference in a new issue