diff options
| author | luwenpeng <[email protected]> | 2021-04-28 18:01:32 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2021-04-28 18:01:59 +0800 |
| commit | 19a3fe92173dae7d4303f2bcec94b5973c483f35 (patch) | |
| tree | f3f19f6ef1c7587326cdf2ca971bdce84aa83f9c /plugin/business/doh/src | |
| parent | 68a8b6c94e81a977d4e29826ebd844be206d253a (diff) | |
TSG-6228 修复 ATCA 性能测试时 perf 火焰图显示 tfe_stream_addr_to_str 耗时较高的问题
Diffstat (limited to 'plugin/business/doh/src')
| -rw-r--r-- | plugin/business/doh/src/doh.cpp | 54 | ||||
| -rw-r--r-- | plugin/business/doh/src/pub.h | 1 |
2 files changed, 23 insertions, 32 deletions
diff --git a/plugin/business/doh/src/doh.cpp b/plugin/business/doh/src/doh.cpp index 805433d..a4c0d97 100644 --- a/plugin/business/doh/src/doh.cpp +++ b/plugin/business/doh/src/doh.cpp @@ -94,7 +94,7 @@ static cJSON *doh_get_answer_records(cJSON *object, int qtype) return NULL; } -static void doh_get_cheat_data(Maat_rule_t *p_result, int qtype, struct doh_ctx *ctx) +static void doh_get_cheat_data(Maat_rule_t *p_result, int qtype, struct doh_ctx *ctx, const char *str_stream_info) { int i; int answer_size = 0; @@ -106,7 +106,7 @@ static void doh_get_cheat_data(Maat_rule_t *p_result, int qtype, struct doh_ctx tmp = (char *)calloc(1, p_result->serv_def_len + 1); Maat_read_rule(g_doh_conf->maat, p_result, MAAT_RULE_SERV_DEFINE, tmp, p_result->serv_def_len); - TFE_LOG_INFO(g_doh_conf->local_logger, "%s hit %d %s", ctx->addr_string, p_result->config_id, tmp); + TFE_LOG_INFO(g_doh_conf->local_logger, "%s hit %d %s", str_stream_info, p_result->config_id, tmp); object = cJSON_Parse(tmp); if (object == NULL) @@ -210,19 +210,19 @@ static void doh_maat_scan(const struct tfe_stream *stream, const struct tfe_http struct Maat_rule_t *p_result = NULL; struct Maat_rule_t result[MAX_SCAN_RESULT]; - scan_ret = tfe_scan_subscribe_id(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger, ctx->addr_string); + scan_ret = tfe_scan_subscribe_id(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger); if (scan_ret > 0) { hit_cnt += scan_ret; } - scan_ret = tfe_scan_ip_location(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger, ctx->addr_string, &(ctx->location_server), &(ctx->location_client)); + scan_ret = tfe_scan_ip_location(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger, &(ctx->location_server), &(ctx->location_client)); if (scan_ret > 0) { hit_cnt += scan_ret; } - scan_ret = tfe_scan_ip_asn(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger, ctx->addr_string, &(ctx->asn_server), &(ctx->asn_client)); + scan_ret = tfe_scan_ip_asn(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger, &(ctx->asn_server), &(ctx->asn_client)); if (scan_ret > 0) { hit_cnt += scan_ret; @@ -237,16 +237,16 @@ static void doh_maat_scan(const struct tfe_stream *stream, const struct tfe_http if (scan_ret > 0) { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, Hit host: %s scan ret: %d policy_id: %d service: %d action: %d addr: %s", - g_doh_conf->tables[TYPE_HOST].name, host, scan_ret, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action, ctx->addr_string); + g_doh_conf->tables[TYPE_HOST].name, host, scan_ret, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action, stream->str_stream_info); hit_cnt += scan_ret; } else { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, NO hit host: %s scan ret: %d addr: %s", - g_doh_conf->tables[TYPE_HOST].name, host, scan_ret, ctx->addr_string); + g_doh_conf->tables[TYPE_HOST].name, host, scan_ret, stream->str_stream_info); } - scan_ret = tfe_scan_fqdn_cat(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger, ctx->addr_string, g_doh_conf->tables[TYPE_HOST].id); + scan_ret = tfe_scan_fqdn_cat(stream, result, &(ctx->scan_mid), hit_cnt, ctx->thread_id, g_doh_conf->local_logger, g_doh_conf->tables[TYPE_HOST].id); if( scan_ret > 0) { hit_cnt += scan_ret; @@ -260,13 +260,13 @@ static void doh_maat_scan(const struct tfe_stream *stream, const struct tfe_http if (scan_ret > 0) { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, Hit addr: %s scan ret: %d policy_id: %d service: %d action: %d", - g_doh_conf->tables[TYPE_ADDR].name, ctx->addr_string, scan_ret, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action); + g_doh_conf->tables[TYPE_ADDR].name, stream->str_stream_info, scan_ret, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action); hit_cnt += scan_ret; } else { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, NO hit addr: %s scan ret: %d", - g_doh_conf->tables[TYPE_ADDR].name, ctx->addr_string, scan_ret); + g_doh_conf->tables[TYPE_ADDR].name, stream->str_stream_info, scan_ret); } // scan appid @@ -274,13 +274,13 @@ static void doh_maat_scan(const struct tfe_stream *stream, const struct tfe_http if (scan_ret > 0) { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, Hit proto: %d scan ret: %d policy_id: %d service: %d action: %d addr: %s", - g_doh_conf->tables[TYPE_APPID].name, app_id, scan_ret, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action, ctx->addr_string); + g_doh_conf->tables[TYPE_APPID].name, app_id, scan_ret, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action, stream->str_stream_info); hit_cnt += scan_ret; } else { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, NO hit proto: %d scan ret: %d addr: %s", - g_doh_conf->tables[TYPE_APPID].name, app_id, scan_ret, ctx->addr_string); + g_doh_conf->tables[TYPE_APPID].name, app_id, scan_ret, stream->str_stream_info); } // scan qname @@ -289,13 +289,13 @@ static void doh_maat_scan(const struct tfe_stream *stream, const struct tfe_http if (scan_ret > 0) { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, Hit domain: %s scan ret: %d qtype: %d policy_id: %d service: %d action: %d addr: %s", - g_doh_conf->tables[TYPE_QNAME].name, qname, scan_ret, qtype, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action, ctx->addr_string); + g_doh_conf->tables[TYPE_QNAME].name, qname, scan_ret, qtype, result[hit_cnt].config_id, result[hit_cnt].service_id, result[hit_cnt].action, stream->str_stream_info); hit_cnt += scan_ret; } else { TFE_LOG_INFO(g_doh_conf->local_logger, "Scan %s, NO hit domain: %s scan ret: %d addr: %s", - g_doh_conf->tables[TYPE_QNAME].name, qname, scan_ret, ctx->addr_string); + g_doh_conf->tables[TYPE_QNAME].name, qname, scan_ret, stream->str_stream_info); } if (hit_cnt) @@ -306,7 +306,7 @@ static void doh_maat_scan(const struct tfe_stream *stream, const struct tfe_http ctx->result_num = 1; ctx->result = ALLOC(struct Maat_rule_t, ctx->result_num); memcpy(ctx->result, p_result, sizeof(struct Maat_rule_t)); - doh_get_cheat_data(p_result, qtype, ctx); + doh_get_cheat_data(p_result, qtype, ctx, stream->str_stream_info); } } } @@ -408,12 +408,6 @@ static void doh_ctx_free(struct doh_ctx *ctx) ctx->http_req_body = NULL; } - if (ctx->addr_string) - { - free(ctx->addr_string); - ctx->addr_string = NULL; - } - if (ctx->asn_client) { free(ctx->asn_client); @@ -506,21 +500,21 @@ static void doh_process_req(const struct tfe_stream *stream, const struct tfe_ht int temp_size = (req_len / 3 + 1) * 4; char *temp = (char *)ALLOC(char, temp_size); int len = base64_encode(temp, temp_size - 1, req_data, req_len); - TFE_LOG_ERROR(g_doh_conf->local_logger, "%s Doh parser request failed, PASSTHROUGH, data:%s", ctx->addr_string, len > 0 ? temp : ""); + TFE_LOG_ERROR(g_doh_conf->local_logger, "%s Doh parser request failed, PASSTHROUGH, data:%s", stream->str_stream_info, len > 0 ? temp : ""); free(temp); goto end; } TFE_LOG_DEBUG(g_doh_conf->local_logger, "%s qtype %d qname:%s", - ctx->addr_string, ctx->doh_req->query_question.qtype, ctx->doh_req->query_question.qname); + stream->str_stream_info, ctx->doh_req->query_question.qtype, ctx->doh_req->query_question.qname); if (ctx->doh_req->query_question.qtype != DNS_TYPE_A && ctx->doh_req->query_question.qtype != DNS_TYPE_AAAA) { - TFE_LOG_INFO(g_doh_conf->local_logger, "%s Doh qtype not A/AAAA, PASSTHROUGH", ctx->addr_string); + TFE_LOG_INFO(g_doh_conf->local_logger, "%s Doh qtype not A/AAAA, PASSTHROUGH", stream->str_stream_info); goto end; } if (strlen((char *)ctx->doh_req->query_question.qname) == 0) { - TFE_LOG_INFO(g_doh_conf->local_logger, "%s Doh qname is empty, PASSTHROUGH", ctx->addr_string); + TFE_LOG_INFO(g_doh_conf->local_logger, "%s Doh qname is empty, PASSTHROUGH", stream->str_stream_info); goto end; } @@ -529,7 +523,7 @@ static void doh_process_req(const struct tfe_stream *stream, const struct tfe_ht ctx->scan_mid = NULL; if (!ctx->opts_num) { - TFE_LOG_INFO(g_doh_conf->local_logger, "%s Doh no hit answer type, PASSTHROUGH", ctx->addr_string); + TFE_LOG_INFO(g_doh_conf->local_logger, "%s Doh no hit answer type, PASSTHROUGH", stream->str_stream_info); goto end; } @@ -538,7 +532,7 @@ static void doh_process_req(const struct tfe_stream *stream, const struct tfe_ht rsp_len = dns_cheat_response(ctx->doh_req, ctx->opts, ctx->opts_num, rsp_buff, rsp_size - 1); if (rsp_len < 0) { - TFE_LOG_ERROR(g_doh_conf->local_logger, "%s Doh cheat response failed: %d, PASSTHROUGH", ctx->addr_string, rsp_len); + TFE_LOG_ERROR(g_doh_conf->local_logger, "%s Doh cheat response failed: %d, PASSTHROUGH", stream->str_stream_info, rsp_len); goto end; } @@ -640,8 +634,6 @@ void doh_on_begin(const struct tfe_stream *stream, const struct tfe_http_session assert(ctx == NULL); ctx = doh_ctx_new(thread_id); - ctx->addr_string = tfe_stream_addr_to_str(stream->addr); - *pme = ctx; } @@ -667,7 +659,7 @@ int doh_on_data(const struct tfe_stream *stream, const struct tfe_http_session * ctx->count = 1; ATOMIC_INC(&(g_doh_conf->stat_val[STAT_SESSION])); TFE_LOG_DEBUG(g_doh_conf->local_logger, "%s method:%s content-type:%s accept:%s url:%s", - ctx->addr_string, + stream->str_stream_info, http_std_method_to_string(session->req->req_spec.method), tfe_http_std_field_read(session->req, TFE_HTTP_CONT_TYPE), tfe_http_nonstd_field_read(session->req, "Accept"), @@ -730,7 +722,7 @@ int doh_on_data(const struct tfe_stream *stream, const struct tfe_http_session * len = tfe_decode_base64url(temp, dns_data); if (len == 0) { - TFE_LOG_ERROR(g_doh_conf->local_logger, "%s Doh base64 decode uri failed:%s, PASSTHROUGH", ctx->addr_string, session->req->req_spec.uri); + TFE_LOG_ERROR(g_doh_conf->local_logger, "%s Doh base64 decode uri failed:%s, PASSTHROUGH", stream->str_stream_info, session->req->req_spec.uri); goto error; } diff --git a/plugin/business/doh/src/pub.h b/plugin/business/doh/src/pub.h index 540bd0d..7954e68 100644 --- a/plugin/business/doh/src/pub.h +++ b/plugin/business/doh/src/pub.h @@ -80,7 +80,6 @@ struct doh_ctx int magic_num; int manipulate; int opts_num; - char *addr_string; size_t result_num; Maat_rule_t *result; cheat_pkt_opt_t *opts; |
