From 5ebceac0c061754d22841c68a3ae296b972c8b88 Mon Sep 17 00:00:00 2001 From: zhengchao Date: Sun, 9 Dec 2018 20:31:04 +0600 Subject: [PATCH] =?UTF-8?q?http=20response=20body=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E5=91=BD=E4=B8=AD=E9=98=BB=E6=96=AD=E8=A7=84=E5=88=99=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E8=B0=83=E7=94=A8tfe=5Fhttp=5Fsession=5Fallo?= =?UTF-8?q?w=5Fwrite=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/business/pangu-http/src/pangu_http.cpp | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/plugin/business/pangu-http/src/pangu_http.cpp b/plugin/business/pangu-http/src/pangu_http.cpp index 775cfcb..bdf54ed 100644 --- a/plugin/business/pangu-http/src/pangu_http.cpp +++ b/plugin/business/pangu-http/src/pangu_http.cpp @@ -863,24 +863,30 @@ static void http_reject(const struct tfe_http_session * session, enum tfe_http_e ctx->enforce_rules[0].config_id, ctx->enforce_para); ctx->action = PG_ACTION_NONE; - goto error_out; + return; } - to_write_sess = tfe_http_session_allow_write(session); - response = tfe_http_session_response_create(to_write_sess, resp_code); + if(events & EV_HTTP_RESP_HDR || tfe_http_in_request(events)) + { + to_write_sess = tfe_http_session_allow_write(session); + response = tfe_http_session_response_create(to_write_sess, resp_code); - html_generate(resp_code, ctx->enforce_rules[0].config_id, msg, &page_buff, &page_size); - tfe_http_std_field_write(response, TFE_HTTP_CONT_TYPE, "text/html; charset=utf-8"); - snprintf(cont_len_str, sizeof(cont_len_str), "%lu", page_size); - tfe_http_std_field_write(response, TFE_HTTP_CONT_LENGTH, cont_len_str); + html_generate(resp_code, ctx->enforce_rules[0].config_id, msg, &page_buff, &page_size); + tfe_http_std_field_write(response, TFE_HTTP_CONT_TYPE, "text/html; charset=utf-8"); + snprintf(cont_len_str, sizeof(cont_len_str), "%lu", page_size); + tfe_http_std_field_write(response, TFE_HTTP_CONT_LENGTH, cont_len_str); - tfe_http_half_append_body(response, page_buff, page_size, 0); - tfe_http_half_append_body(response, NULL, 0, 0); - tfe_http_session_response_set(to_write_sess, response); - tfe_http_session_detach(session); - -error_out: - html_free(&page_buff); + tfe_http_half_append_body(response, page_buff, page_size, 0); + tfe_http_half_append_body(response, NULL, 0, 0); + tfe_http_session_response_set(to_write_sess, response); + tfe_http_session_detach(session); + html_free(&page_buff); + } + else + { + //TODO: close http session. + } + return; } static void http_redirect(const struct tfe_http_session * session, enum tfe_http_event events,