单元测试通过
This commit is contained in:
@@ -399,6 +399,9 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio
|
||||
enum tfe_http_event events, const unsigned char * body_frag, size_t frag_size, struct pangu_http_ctx * ctx)
|
||||
{
|
||||
struct tfe_http_session * to_write_sess = NULL;
|
||||
char * rewrite_buff = NULL;
|
||||
size_t rewrite_sz = 0;
|
||||
|
||||
to_write_sess = tfe_http_session_allow_write(session);
|
||||
if (to_write_sess == NULL) //fail to wirte, abandon.
|
||||
{
|
||||
@@ -431,14 +434,15 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio
|
||||
|
||||
if ((events & EV_HTTP_REQ_HDR) || (events & EV_HTTP_RESP_HDR))
|
||||
{
|
||||
struct evbuffer * rewrite_uri = NULL;
|
||||
char * rewrite_uri = NULL;
|
||||
size_t rewrite_uri_sz=0;
|
||||
if (is_http_request(events))
|
||||
{
|
||||
rewrite_uri = execute_replace_rule(in_req_spec->uri, strlen(in_req_spec->uri),
|
||||
kZoneRequestUri, rep_ctx->rule, rep_ctx->n_rule);
|
||||
rewrite_uri_sz = execute_replace_rule(in_req_spec->uri, strlen(in_req_spec->uri),
|
||||
kZoneRequestUri, rep_ctx->rule, rep_ctx->n_rule, &rewrite_uri);
|
||||
|
||||
rep_ctx->replacing = tfe_http_session_request_create(to_write_sess, in_req_spec->method,
|
||||
rewrite_uri != NULL ? (char *) evbuffer_pullup(rewrite_uri, -1) : in_req_spec->uri);
|
||||
rewrite_uri_sz >0 ? rewrite_uri : in_req_spec->uri);
|
||||
|
||||
tfe_http_session_request_set(to_write_sess, rep_ctx->replacing);
|
||||
}
|
||||
@@ -450,8 +454,7 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio
|
||||
|
||||
if (rewrite_uri != NULL)
|
||||
{
|
||||
evbuffer_free(rewrite_uri);
|
||||
rewrite_uri = NULL;
|
||||
FREE(&rewrite_uri);
|
||||
}
|
||||
|
||||
enum replace_zone zone = is_http_request(events) ? kZoneRequestHeaders : kZoneResponseHeader;
|
||||
@@ -468,21 +471,14 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio
|
||||
break;
|
||||
}
|
||||
|
||||
struct evbuffer * rewrite_buff = execute_replace_rule(in_header_value,
|
||||
strlen(in_header_value), zone, rep_ctx->rule, rep_ctx->n_rule);
|
||||
|
||||
if (rewrite_buff != NULL)
|
||||
rewrite_buff = NULL;
|
||||
rewrite_sz = 0;
|
||||
rewrite_sz=execute_replace_rule(in_header_value,
|
||||
strlen(in_header_value), zone, rep_ctx->rule, rep_ctx->n_rule, &rewrite_buff);
|
||||
tfe_http_field_write(rep_ctx->replacing, &in_header_field, rewrite_sz>0? rewrite_buff : in_header_value);
|
||||
if(rewrite_buff != NULL)
|
||||
{
|
||||
tfe_http_field_write(rep_ctx->replacing, &in_header_field, (char *) evbuffer_pullup(rewrite_buff, -1));
|
||||
}
|
||||
else
|
||||
{
|
||||
tfe_http_field_write(rep_ctx->replacing, &in_header_field, in_header_value);
|
||||
}
|
||||
|
||||
if (rewrite_buff != NULL)
|
||||
{
|
||||
evbuffer_free(rewrite_buff);
|
||||
FREE(&rewrite_buff);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -503,25 +499,18 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio
|
||||
char * __http_body = (char *) evbuffer_pullup(rep_ctx->http_body, -1);
|
||||
size_t __http_body_len = evbuffer_get_length(rep_ctx->http_body);
|
||||
|
||||
enum replace_zone replace_zone = is_http_request(events) ? kZoneRequestHeaders : kZoneResponseHeader;
|
||||
struct evbuffer * rewrite_buff;
|
||||
enum replace_zone r_zone = is_http_request(events) ? kZoneRequestBody : kZoneResponseBody;
|
||||
|
||||
rewrite_buff = NULL;
|
||||
rewrite_sz = 0;
|
||||
|
||||
rewrite_sz = execute_replace_rule(__http_body, __http_body_len, r_zone,
|
||||
rep_ctx->rule, rep_ctx->n_rule, &rewrite_buff);
|
||||
|
||||
|
||||
if (is_http_request(events))
|
||||
if (rewrite_sz >0 )
|
||||
{
|
||||
rewrite_buff = execute_replace_rule(__http_body, __http_body_len, kZoneRequestBody,
|
||||
rep_ctx->rule, rep_ctx->n_rule);
|
||||
}
|
||||
else
|
||||
{
|
||||
rewrite_buff = execute_replace_rule(__http_body, __http_body_len, kZoneResponseBody,
|
||||
rep_ctx->rule, rep_ctx->n_rule);
|
||||
}
|
||||
|
||||
if (rewrite_buff != NULL)
|
||||
{
|
||||
char * __rewrite_buff = (char *) evbuffer_pullup(rewrite_buff, -1);
|
||||
size_t __sz_rewrite_buff = evbuffer_get_length(rewrite_buff);
|
||||
tfe_http_half_append_body(rep_ctx->replacing, __rewrite_buff, __sz_rewrite_buff, 0);
|
||||
tfe_http_half_append_body(rep_ctx->replacing, rewrite_buff, rewrite_sz, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -530,8 +519,7 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio
|
||||
|
||||
if (rewrite_buff != NULL)
|
||||
{
|
||||
evbuffer_free(rewrite_buff);
|
||||
rewrite_buff = NULL;
|
||||
FREE(&rewrite_buff);
|
||||
}
|
||||
|
||||
if (rep_ctx->http_body != NULL)
|
||||
|
||||
Reference in New Issue
Block a user