TSG-376 修复Proxy Event Logs中Request Line、Response Line显示为空,Stream Trace Id显示为0

1)修复重定向命中URL+请求头,域名输入错误页面本身重定向失败问题
This commit is contained in:
fengweihao
2019-12-05 19:04:04 +08:00
parent 70da622393
commit 7476f84fa1
3 changed files with 32 additions and 11 deletions

View File

@@ -214,18 +214,35 @@ int pangu_send_log(struct pangu_logger* handle, const struct pangu_log* log_msg)
cJSON_AddStringToObject(common_obj, "http_version", app_proto[http->major_version]); cJSON_AddStringToObject(common_obj, "http_version", app_proto[http->major_version]);
cJSON_AddStringToObject(common_obj, "common_schema_type", "HTTP"); cJSON_AddStringToObject(common_obj, "common_schema_type", "HTTP");
uint64_t opt_val; char opt_val[24]; uint16_t opt_out_size;
uint16_t opt_out_size;
struct tfe_cmsg * cmsg = tfe_stream_get0_cmsg(log_msg->stream); struct tfe_cmsg * cmsg = tfe_stream_get0_cmsg(log_msg->stream);
if (cmsg!=NULL) if (cmsg!=NULL)
{ {
int ret=tfe_cmsg_get_value(cmsg, TFE_CMSG_STREAM_TRACE_ID, (unsigned char *) &opt_val, sizeof(opt_val), &opt_out_size); int ret=tfe_cmsg_get_value(cmsg, TFE_CMSG_STREAM_TRACE_ID, (unsigned char *) opt_val, sizeof(opt_val), &opt_out_size);
if (ret==0) if (ret==0)
{ {
cJSON_AddNumberToObject(common_obj, "common_stream_trace_id", opt_val); cJSON_AddStringToObject(common_obj, "common_stream_trace_id", opt_val);
} }
} }
if (http->req)
{
char *request_line=NULL;
struct tfe_http_req_spec req_spec=http->req->req_spec;
asprintf(&request_line, "%s %s HTTP/%d.%d", http_std_method_to_string(req_spec.method), req_spec.url, http->major_version, http->minor_version);
cJSON_AddStringToObject(common_obj, "http_request_line", request_line);
free(request_line);
}
if (http->resp)
{
char *response_line=NULL;
struct tfe_http_resp_spec resp_spec=http->resp->resp_spec;
asprintf(&response_line, "HTTP/%d.%d %d OK", http->major_version, http->minor_version, resp_spec.resp_code);
cJSON_AddStringToObject(common_obj, "http_response_line", response_line);
free(response_line);
}
switch(addr->addrtype) switch(addr->addrtype)
{ {
case TFE_ADDR_STREAM_TUPLE4_V4: case TFE_ADDR_STREAM_TUPLE4_V4:

View File

@@ -224,8 +224,9 @@ static int inflate_gzip_read(struct z_stream_st **strm, char **dest, int *outlen
(*strm)->zst.avail_out = CHUNK; (*strm)->zst.avail_out = CHUNK;
(*strm)->zst.next_out = out; (*strm)->zst.next_out = out;
ret = inflate(&((*strm)->zst), Z_NO_FLUSH); ret = inflate(&((*strm)->zst), Z_NO_FLUSH);
assert(ret != Z_STREAM_ERROR); /* state not clobbered */
switch (ret) { switch (ret) {
case Z_STREAM_ERROR:
ret = Z_STREAM_ERROR;
case Z_NEED_DICT: case Z_NEED_DICT:
ret = Z_DATA_ERROR; /* and fall through */ ret = Z_DATA_ERROR; /* and fall through */
case Z_DATA_ERROR: case Z_DATA_ERROR:

View File

@@ -731,6 +731,13 @@ nghttp2_frame_submit_built_resp(struct tfe_h2_stream *h2_stream_info,
if (h2_header->nvlen <= 0) if (h2_header->nvlen <= 0)
return ACTION_FORWARD_DATA; return ACTION_FORWARD_DATA;
char value[128] = {0}; struct http_field_name field;
field.field_id = TFE_HTTP_UNKNOWN_FIELD;
field.field_name = ":status";
snprintf(value, sizeof(value), "%d", pangu_resp->method_or_status);
tfe_http_nonstd_field_write(&pangu_resp->half_public, ":status", NULL);
tfe_h2_header_add_field(h2_header, &field, (const char *)value, 0);
struct tfe_h2_payload *body = &pangu_resp->h2_payload; struct tfe_h2_payload *body = &pangu_resp->h2_payload;
body->flags |= NGHTTP2_FLAG_END_STREAM; body->flags |= NGHTTP2_FLAG_END_STREAM;
char str_sz_evbuf_body[TFE_STRING_MAX]; char str_sz_evbuf_body[TFE_STRING_MAX];
@@ -1507,11 +1514,6 @@ nghttp2_submit_built_response(struct tfe_h2_stream *h2_stream_info,
snprintf(value, sizeof(value), "tfe/%s", tfe_version()); snprintf(value, sizeof(value), "tfe/%s", tfe_version());
tfe_h2_header_add_field(&resp->header, &field, (const char *)value, 0); tfe_h2_header_add_field(&resp->header, &field, (const char *)value, 0);
field.field_id = TFE_HTTP_UNKNOWN_FIELD;
field.field_name = ":status";
snprintf(value, sizeof(value), "%d", resp->method_or_status);
tfe_h2_header_add_field(&resp->header, &field, (const char *)value, 0);
stream_action = nghttp2_frame_submit_built_resp(h2_stream_info, h2_session); stream_action = nghttp2_frame_submit_built_resp(h2_stream_info, h2_session);
if (stream_action == ACTION_DROP_DATA) if (stream_action == ACTION_DROP_DATA)
{ {
@@ -1544,7 +1546,8 @@ nghttp2_server_frame_submit_header(struct tfe_h2_stream *h2_stream_info,
{ {
stream_action = nghttp2_submit_built_response(h2_stream_info, h2_session); stream_action = nghttp2_submit_built_response(h2_stream_info, h2_session);
} }
else{ else
{
stream_action = (enum tfe_stream_action)ACTION_USER_DATA; stream_action = (enum tfe_stream_action)ACTION_USER_DATA;
} }
return stream_action; return stream_action;