#174 在 http2 解析 header 时,修改 headerlength 的获取方式
* 原来是使用 strlen(header) 获取 headerlength * 现在改为使用 http2 callback 传入的 headerlength 暗示着 header 字段可能不以 '\0' 结尾
This commit is contained in:
@@ -1872,7 +1872,8 @@ nghttp2_fill_up_header(nghttp2_session *ngh2_session, const nghttp2_frame *frame
|
||||
struct tfe_h2_half_private *half = (dir == CONN_DIR_UPSTREAM) ? h2_session->resp : h2_session->req;
|
||||
|
||||
struct http_field_name field;
|
||||
field.field_id = (enum tfe_http_std_field)http2_header_str_to_val((const char *)name, __str_std_header_field_map, __str_std_header_field_map_size);
|
||||
// "name" may not terminated with '\0', so use "namelen"
|
||||
field.field_id = (enum tfe_http_std_field)http2_header_str_to_val((const char *)name, namelen, __str_std_header_field_map, __str_std_header_field_map_size);
|
||||
if (field.field_id == TFE_HTTP_UNKNOWN_FIELD)
|
||||
{
|
||||
field.field_name = (const char *)name;
|
||||
@@ -1906,7 +1907,8 @@ nghttp2_fill_up_promise(nghttp2_session *ngh2_session, const nghttp2_frame *fram
|
||||
}
|
||||
resp = h2_session->resp;
|
||||
struct http_field_name field;
|
||||
field.field_id = (enum tfe_http_std_field)http2_header_str_to_val((const char *)name, __str_std_header_field_map, __str_std_header_field_map_size);
|
||||
// "name" may not terminated with '\0', so use "namelen"
|
||||
field.field_id = (enum tfe_http_std_field)http2_header_str_to_val((const char *)name, namelen, __str_std_header_field_map, __str_std_header_field_map_size);
|
||||
if (field.field_id == TFE_HTTP_UNKNOWN_FIELD)
|
||||
{
|
||||
field.field_name = (const char *)name;
|
||||
|
||||
Reference in New Issue
Block a user