1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

Merge branch '2.0release' of github.com:winlinvip/simple-rtmp-server into 2.0release

This commit is contained in:
winlin 2015-04-20 11:28:20 +08:00
commit 623e37e22a
2 changed files with 6 additions and 7 deletions

View file

@ -1401,7 +1401,7 @@ int SrsHttpParser::parse_message(SrsStSocket* skt, SrsHttpMessage** ppmsg)
header = http_parser(); header = http_parser();
url = ""; url = "";
headers.clear(); headers.clear();
body_parsed = 0; header_parsed = 0;
// do parse // do parse
if ((ret = parse_message_imp(skt)) != ERROR_SUCCESS) { if ((ret = parse_message_imp(skt)) != ERROR_SUCCESS) {
@ -1437,12 +1437,12 @@ int SrsHttpParser::parse_message_imp(SrsStSocket* skt)
// when buffer not empty, parse it. // when buffer not empty, parse it.
if (buffer->size() > 0) { if (buffer->size() > 0) {
nparsed = http_parser_execute(&parser, &settings, buffer->bytes(), buffer->size()); nparsed = http_parser_execute(&parser, &settings, buffer->bytes(), buffer->size());
srs_info("buffer=%d, nparsed=%d, body=%d", buffer->size(), (int)nparsed, body_parsed); srs_info("buffer=%d, nparsed=%d, header=%d", buffer->size(), (int)nparsed, header_parsed);
} }
// consume the parsed bytes. // consume the parsed bytes.
if (nparsed && nparsed - body_parsed > 0) { if (nparsed && header_parsed) {
buffer->read_slice((int)nparsed - (int)body_parsed); buffer->read_slice(header_parsed);
} }
// ok atleast header completed, // ok atleast header completed,
@ -1491,6 +1491,7 @@ int SrsHttpParser::on_headers_complete(http_parser* parser)
obj->header = *parser; obj->header = *parser;
// save the parser when header parse completed. // save the parser when header parse completed.
obj->state = SrsHttpParseStateHeaderComplete; obj->state = SrsHttpParseStateHeaderComplete;
obj->header_parsed = (int)parser->nread;
srs_info("***HEADERS COMPLETE***"); srs_info("***HEADERS COMPLETE***");
@ -1567,8 +1568,6 @@ int SrsHttpParser::on_body(http_parser* parser, const char* at, size_t length)
SrsHttpParser* obj = (SrsHttpParser*)parser->data; SrsHttpParser* obj = (SrsHttpParser*)parser->data;
srs_assert(obj); srs_assert(obj);
obj->body_parsed += length;
srs_info("Body: %.*s", (int)length, at); srs_info("Body: %.*s", (int)length, at);
return 0; return 0;

View file

@ -599,7 +599,7 @@ private:
http_parser header; http_parser header;
std::string url; std::string url;
std::vector<SrsHttpHeaderField> headers; std::vector<SrsHttpHeaderField> headers;
int body_parsed; int header_parsed;
public: public:
SrsHttpParser(); SrsHttpParser();
virtual ~SrsHttpParser(); virtual ~SrsHttpParser();