修正HTTP解析层处理HTTP-Header的错误流程
* 原流程在解析同一个Field-Value对时,无法正确处理Header多次调用拼成完整字符串的情况,现修正; * 原流程在处理Field-Value底层Buffer时计算长度有误,导致清空buffer时剩余最后的'\0',现修正。
This commit is contained in:
@@ -51,8 +51,12 @@ struct http_half_private
|
||||
short minor;
|
||||
|
||||
struct evbuffer * evbuf_uri;
|
||||
|
||||
struct evbuffer * evbuf_header_field;
|
||||
struct evbuffer * evbuf_header_value;
|
||||
bool is_evbuf_header_field_set;
|
||||
bool is_evbuf_header_value_set;
|
||||
|
||||
struct evbuffer * evbuf_body;
|
||||
|
||||
enum hf_private_status body_status;
|
||||
@@ -64,6 +68,7 @@ struct http_half_private
|
||||
};
|
||||
|
||||
struct http_half_private * hf_private_create(tfe_http_direction ht_dir, short major, short minor);
|
||||
|
||||
void hf_private_destory(struct http_half_private * hf_private);
|
||||
|
||||
/** Parse the raw tcp input for HTTP half structure
|
||||
@@ -83,5 +88,7 @@ int hf_private_parse(struct http_half_private * hf_private, const unsigned char
|
||||
void hf_private_set_callback(struct http_half_private * hf_private, hf_private_cb * cb,
|
||||
void * user, void (* fn_user_deleter)(void *));
|
||||
|
||||
void hf_private_set_session(struct http_half_private * hf_private, struct http_session_private * hs_private);
|
||||
|
||||
struct http_session_private * hs_private_create(struct http_connection_private * hc_private,
|
||||
struct http_half_private * hf_private_req, struct http_half_private * hf_private_resp);
|
||||
|
||||
Reference in New Issue
Block a user