bugfix: 修改brotli压缩等级

This commit is contained in:
fengweihao
2021-09-13 17:12:18 +08:00
parent 8d8b5eb039
commit 745187d0a3
3 changed files with 20 additions and 19 deletions

View File

@@ -249,6 +249,8 @@ struct hf_content_compress * hf_content_compress_create(unsigned int content_enc
{ {
cv_object->brenc_state = BrotliEncoderCreateInstance(NULL, NULL, NULL); cv_object->brenc_state = BrotliEncoderCreateInstance(NULL, NULL, NULL);
if (unlikely(cv_object->brenc_state == NULL)) goto __errout; if (unlikely(cv_object->brenc_state == NULL)) goto __errout;
BrotliEncoderSetParameter(cv_object->brenc_state, BROTLI_PARAM_QUALITY, 3);
} }
return cv_object; return cv_object;

View File

@@ -299,6 +299,8 @@ int deflate_init(struct z_stream_st **strm, int gzip)
(*strm)->brenc_state = BrotliEncoderCreateInstance(NULL, NULL, NULL); (*strm)->brenc_state = BrotliEncoderCreateInstance(NULL, NULL, NULL);
if ( (*strm)->brenc_state == NULL) if ( (*strm)->brenc_state == NULL)
ret = -1; ret = -1;
BrotliEncoderSetParameter((*strm)->brenc_state, BROTLI_PARAM_QUALITY, 3);
} }
if (ret != Z_OK) if (ret != Z_OK)
FREE(strm); FREE(strm);

View File

@@ -836,20 +836,18 @@ nghttp2_submit_end_data_by_h2_half(struct tfe_h2_stream *h2_stream_info, int32_t
} }
static enum tfe_stream_action static enum tfe_stream_action
nghttp2_submit_data_by_h2_half(struct tfe_h2_stream *connection, nghttp2_submit_data_by_h2_half(struct tfe_h2_stream *connection, struct tfe_h2_session *h2_session, enum tfe_conn_dir dir, int compress_result)
struct tfe_h2_session *h2_session,
enum tfe_conn_dir dir)
{ {
enum tfe_stream_action stream_action = ACTION_DROP_DATA; enum tfe_stream_action stream_action = ACTION_DROP_DATA;
struct tfe_h2_half_private *h2_half = tfe_h2_stream_get_half(h2_session, dir); struct tfe_h2_half_private *h2_half = tfe_h2_stream_get_half(h2_session, dir);
nghttp2_session *ngh2_session = tfe_h2_stream_get_nghttp2_session(connection, dir); nghttp2_session *ngh2_session = tfe_h2_stream_get_nghttp2_session(connection, dir);
if (h2_session->plugin_built_resp) if (h2_session->plugin_built_resp && compress_result)
{ {
stream_action = nghttp2_frame_submit_built_resp(connection, h2_session); stream_action = nghttp2_frame_submit_built_resp(connection, h2_session);
} }
else if (h2_session->plugin_built_req) else if (h2_session->plugin_built_req && compress_result)
{ {
stream_action = nghttp2_frame_submit_built_req(connection, h2_session); stream_action = nghttp2_frame_submit_built_req(connection, h2_session);
} }
@@ -1210,7 +1208,7 @@ nghttp2_submit_complete_data(struct tfe_h2_stream *h2_stream_info,
h2_half->body_state = H2_READ_STATE_COMPLETE; h2_half->body_state = H2_READ_STATE_COMPLETE;
h2_half->message_state = H2_READ_STATE_COMPLETE; h2_half->message_state = H2_READ_STATE_COMPLETE;
stream_action = nghttp2_submit_data_by_h2_half(h2_stream_info, h2_session, dir); stream_action = nghttp2_submit_data_by_h2_half(h2_stream_info, h2_session, dir, 1);
if (stream_action == ACTION_DROP_DATA) if (stream_action == ACTION_DROP_DATA)
{ {
xret = nghttp2_session_send(ngh2_session); xret = nghttp2_session_send(ngh2_session);
@@ -2041,7 +2039,7 @@ nghttp2_client_on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
{ {
size_t len; size_t len;
char *uncompr = NULL; char *uncompr = NULL;
int xret = -1; int xret = -1, compress_result = 1;
enum tfe_stream_action stream_action = ACTION_DROP_DATA; enum tfe_stream_action stream_action = ACTION_DROP_DATA;
int uncompr_len = 0, __attribute__((__unused__))ret = 0; int uncompr_len = 0, __attribute__((__unused__))ret = 0;
const unsigned char *data; const unsigned char *data;
@@ -2066,8 +2064,7 @@ nghttp2_client_on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
evbuffer_add(resp->h2_payload.evbuf_body, input, input_len); evbuffer_add(resp->h2_payload.evbuf_body, input, input_len);
if (resp->h2_payload.gzip != HTTP2_CONTENT_ENCODING_NONE) if (resp->h2_payload.gzip != HTTP2_CONTENT_ENCODING_NONE)
{ {
ret = inflate_read(input, input_len, &uncompr, &uncompr_len, ret = inflate_read(input, input_len, &uncompr, &uncompr_len, &resp->h2_payload.inflate, resp->h2_payload.gzip);
&resp->h2_payload.inflate, resp->h2_payload.gzip);
if (((ret == Z_STREAM_END) || (ret == Z_OK)) && uncompr_len > 0) if (((ret == Z_STREAM_END) || (ret == Z_OK)) && uncompr_len > 0)
{ {
input = (const uint8_t*)uncompr; input = (const uint8_t*)uncompr;
@@ -2075,6 +2072,7 @@ nghttp2_client_on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
} }
else else
{ {
compress_result = 0;
/*if input is end_stream, send by nghttp2_submit_frame_data **/ /*if input is end_stream, send by nghttp2_submit_frame_data **/
if (flags != NGHTTP2_FLAG_END_STREAM && h2_session->plugin_built_resp == NULL) if (flags != NGHTTP2_FLAG_END_STREAM && h2_session->plugin_built_resp == NULL)
{ {
@@ -2101,7 +2099,7 @@ nghttp2_client_on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
data = input; data = input;
len = input_len; len = input_len;
if (resp->body_state == H2_READ_STATE_BEGIN) if (resp->body_state == H2_READ_STATE_BEGIN && compress_result)
{ {
if (resp->event_cb) if (resp->event_cb)
{ {
@@ -2117,12 +2115,11 @@ nghttp2_client_on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
} }
resp->body_state = H2_READ_STATE_READING; resp->body_state = H2_READ_STATE_READING;
} }
if (resp->body_state == H2_READ_STATE_READING) if (resp->body_state == H2_READ_STATE_READING && compress_result)
{ {
if (resp->event_cb) if (resp->event_cb)
{ {
resp->event_cb(resp, EV_HTTP_RESP_BODY_CONT, data, len, resp->event_cb(resp, EV_HTTP_RESP_BODY_CONT, data, len, resp->event_cb_user);
resp->event_cb_user);
} }
if (flags & NGHTTP2_FLAG_END_STREAM) if (flags & NGHTTP2_FLAG_END_STREAM)
{ {
@@ -2136,11 +2133,11 @@ nghttp2_client_on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
{ {
FREE(&uncompr); FREE(&uncompr);
} }
stream_action = nghttp2_submit_data_by_h2_half(h2_stream_info, h2_session, CONN_DIR_UPSTREAM); stream_action = nghttp2_submit_data_by_h2_half(h2_stream_info, h2_session, CONN_DIR_UPSTREAM, compress_result);
if (stream_action == ACTION_DROP_DATA) if (stream_action == ACTION_DROP_DATA)
{ {
xret = nghttp2_session_send(h2_stream_info->as_server); xret = nghttp2_session_send(h2_stream_info->as_server);
if (xret != 0) if (xret != 0)
{ {
stream_action = ACTION_FORWARD_DATA; stream_action = ACTION_FORWARD_DATA;
TFE_LOG_ERROR(logger()->handle, "Fatal upstream(%d) send error: %s\n",stream_id, nghttp2_strerror(xret)); TFE_LOG_ERROR(logger()->handle, "Fatal upstream(%d) send error: %s\n",stream_id, nghttp2_strerror(xret));
@@ -2476,7 +2473,7 @@ nghttp2_server_on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
} }
if (uncompr_len) FREE(&uncompr); if (uncompr_len) FREE(&uncompr);
stream_action = nghttp2_submit_data_by_h2_half(h2_stream_info, h2_session, CONN_DIR_DOWNSTREAM); stream_action = nghttp2_submit_data_by_h2_half(h2_stream_info, h2_session, CONN_DIR_DOWNSTREAM, 1);
if (stream_action == ACTION_DROP_DATA){ if (stream_action == ACTION_DROP_DATA){
xret = nghttp2_session_send(h2_stream_info->as_client); xret = nghttp2_session_send(h2_stream_info->as_client);
if (xret != 0) if (xret != 0)