TSG-9390 修复由于HTTP2流窗口限制导致部分大于6M文件hijack下载失败

This commit is contained in:
fengweihao
2022-04-14 10:10:29 +08:00
parent dc12d0dd6b
commit 8e6155ef31
3 changed files with 317 additions and 394 deletions

View File

@@ -116,9 +116,9 @@ struct tfe_h2_stream
unsigned int thread_id; unsigned int thread_id;
/** for down stream as server */ /** for down stream as server */
nghttp2_session *as_server; nghttp2_session *http2_server_handle;
/** for up stream as client*/ /** for up stream as client*/
nghttp2_session *as_client; nghttp2_session *http2_client_handle;
const struct tfe_stream *tf_stream; const struct tfe_stream *tf_stream;
}; };

File diff suppressed because it is too large Load Diff

View File

@@ -196,7 +196,7 @@ TEST(Http2StreamParser, GetFrameWithMagic)
EXPECT_EQ(memcmp(magic_headers, kMagicHello, MAGIC_FRAME_LENGTH), 0); EXPECT_EQ(memcmp(magic_headers, kMagicHello, MAGIC_FRAME_LENGTH), 0);
/*Recv data magic**/ /*Recv data magic**/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_server, magic_headers, sizeof(magic_headers)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_server_handle, magic_headers, sizeof(magic_headers));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
sess_data_ctx_fini(tapinfo->h2_stream_info, NULL, 0); sess_data_ctx_fini(tapinfo->h2_stream_info, NULL, 0);
@@ -216,14 +216,14 @@ TEST(Http2StreamParser, GetFrameWithHeader_01)
struct tfe_h2_stream *h2_stream_info = tapinfo->h2_stream_info; struct tfe_h2_stream *h2_stream_info = tapinfo->h2_stream_info;
/*Recv data magic**/ /*Recv data magic**/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_server, magic_headers, sizeof(magic_headers)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_server_handle, magic_headers, sizeof(magic_headers));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Recv request Headers**/ /*Recv request Headers**/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_server, request_get_headers, sizeof(request_get_headers)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_server_handle, request_get_headers, sizeof(request_get_headers));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
UT_Parse_ReqHeaders(h2_stream_info->as_server); UT_Parse_ReqHeaders(h2_stream_info->http2_server_handle);
sess_data_ctx_fini(tapinfo->h2_stream_info, NULL, 0); sess_data_ctx_fini(tapinfo->h2_stream_info, NULL, 0);
free(tapinfo->h2_stream_info); free(tapinfo->h2_stream_info);
@@ -242,11 +242,11 @@ TEST(Http2StreamParser, GetFrameWithHeader_02)
struct tfe_h2_stream *h2_stream_info = tapinfo->h2_stream_info; struct tfe_h2_stream *h2_stream_info = tapinfo->h2_stream_info;
/*Recv data magic**/ /*Recv data magic**/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_server, magic_headers, sizeof(magic_headers)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_server_handle, magic_headers, sizeof(magic_headers));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Recv request Headers**/ /*Recv request Headers**/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_server, request_get_headers, sizeof(request_get_headers)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_server_handle, request_get_headers, sizeof(request_get_headers));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Send data message**/ /*Send data message**/
@@ -271,11 +271,11 @@ TEST(Http2StreamParser, RespFrameWithHead_01)
struct tfe_h2_stream *h2_stream_info = tapinfo->h2_stream_info; struct tfe_h2_stream *h2_stream_info = tapinfo->h2_stream_info;
/*Recv data magic**/ /*Recv data magic**/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_server, magic_headers, sizeof(magic_headers)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_server_handle, magic_headers, sizeof(magic_headers));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Recv request Headers**/ /*Recv request Headers**/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_server, request_get_headers, sizeof(request_get_headers)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_server_handle, request_get_headers, sizeof(request_get_headers));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Send data head message**/ /*Send data head message**/
@@ -284,13 +284,13 @@ TEST(Http2StreamParser, RespFrameWithHead_01)
//EXPECT_EQ(stream_action, ACTION_DROP_DATA); //EXPECT_EQ(stream_action, ACTION_DROP_DATA);
/*Recv response settings*/ /*Recv response settings*/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_client, response_settings, sizeof(response_settings)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_client_handle, response_settings, sizeof(response_settings));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
/*Recv response Header*/ /*Recv response Header*/
readlen = nghttp2_session_mem_recv(h2_stream_info->as_client, response_header2, sizeof(response_header2)); readlen = nghttp2_session_mem_recv(h2_stream_info->http2_client_handle, response_header2, sizeof(response_header2));
EXPECT_GT(readlen, 0); EXPECT_GT(readlen, 0);
UT_Parse_RespHeaders(h2_stream_info->as_client); UT_Parse_RespHeaders(h2_stream_info->http2_client_handle);
sess_data_ctx_fini(tapinfo->h2_stream_info, NULL, 0); sess_data_ctx_fini(tapinfo->h2_stream_info, NULL, 0);
free(tapinfo->h2_stream_info); free(tapinfo->h2_stream_info);