单元测试通过

This commit is contained in:
zhengchao
2018-09-28 15:41:29 +08:00
parent 5e6dde5e51
commit 53c7ec5c16
6 changed files with 173 additions and 95 deletions

View File

@@ -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)