WebSocket: fix header parsing
This commit is contained in:
parent
58408ae74a
commit
d73aa0436c
|
@ -1302,7 +1302,7 @@ struct ws_context
|
|||
char *key; ///< Key for the current handshake
|
||||
|
||||
http_parser hp; ///< HTTP parser
|
||||
bool parsing_header_value; ///< Parsing header value or field?
|
||||
bool have_header_value; ///< Parsing header value or field?
|
||||
struct str field; ///< Field part buffer
|
||||
struct str value; ///< Value part buffer
|
||||
struct str_map headers; ///< HTTP Headers
|
||||
|
@ -1431,14 +1431,14 @@ static int
|
|||
backend_ws_on_header_field (http_parser *parser, const char *at, size_t len)
|
||||
{
|
||||
struct ws_context *self = parser->data;
|
||||
if (self->parsing_header_value)
|
||||
if (self->have_header_value)
|
||||
{
|
||||
backend_ws_on_header_read (self);
|
||||
str_reset (&self->field);
|
||||
str_reset (&self->value);
|
||||
}
|
||||
str_append_data (&self->field, at, len);
|
||||
self->parsing_header_value = false;
|
||||
self->have_header_value = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1447,13 +1447,17 @@ backend_ws_on_header_value (http_parser *parser, const char *at, size_t len)
|
|||
{
|
||||
struct ws_context *self = parser->data;
|
||||
str_append_data (&self->value, at, len);
|
||||
self->parsing_header_value = true;
|
||||
self->have_header_value = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
backend_ws_on_headers_complete (http_parser *parser)
|
||||
{
|
||||
struct ws_context *self = parser->data;
|
||||
if (self->have_header_value)
|
||||
backend_ws_on_header_read (self);
|
||||
|
||||
// We strictly require a protocol upgrade
|
||||
if (!parser->upgrade)
|
||||
return 2;
|
||||
|
|
Loading…
Reference in New Issue