Commit 9c4c99bf authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

Adjust transmission frame buffer size to support maximum payload size

parent 9d9eb482
......@@ -43,18 +43,16 @@
/* The number of bytes of frame header. */
#define NGHTTP2_FRAME_HDLEN 8
/* The maximum frame and payload length. The spec allows maximum
payload length up to 16383 bytes. Due to efficient buffer
allocation, we choose smaller buffer. Actual payload limit offsets
frame header and possible PAD_HIGH and PAD_LOW to ease
serialization and save memcopying. */
#define NGHTTP2_MAX_FRAMELEN 8192
#define NGHTTP2_MAX_PAYLOADLEN (NGHTTP2_MAX_FRAMELEN - NGHTTP2_FRAME_HDLEN - 2)
/* The maximum length of DATA frame payload. To fit entire DATA frame
into 4096K buffer, we use subtract header size (8 bytes) + 2 bytes
padding. See nghttp2_session_pack_data(). */
#define NGHTTP2_DATA_PAYLOAD_LENGTH (4096 - NGHTTP2_FRAME_HDLEN - 2)
#define NGHTTP2_MAX_PAYLOADLEN 16383
/* The one frame buffer length for tranmission. We may use several of
them to support CONTINUATION. To account for padding specifiers
(PAD_HIGH and PAD_LOW), we allocate extra 2 bytes, which saves
extra large memcopying. */
#define NGHTTP2_FRAMEBUF_CHUNKLEN \
(NGHTTP2_FRAME_HDLEN + 2 + NGHTTP2_MAX_PAYLOADLEN)
/* The maximum length of DATA frame payload. */
#define NGHTTP2_DATA_PAYLOAD_LENGTH 4096
/* The number of bytes for each SETTINGS entry */
#define NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH 5
......
......@@ -321,12 +321,9 @@ static int nghttp2_session_new(nghttp2_session **session_ptr,
(*session_ptr)->server = 1;
}
/* 2 for PAD_HIGH and PAD_LOW. We have maximum 64KB of frame
serialization buffer for transmission */
/* 2 for PAD_HIGH and PAD_LOW. */
rv = nghttp2_bufs_init3(&(*session_ptr)->aob.framebufs,
NGHTTP2_MAX_FRAMELEN,
(1 << 17) / NGHTTP2_MAX_FRAMELEN,
(1 << 13) / NGHTTP2_MAX_FRAMELEN,
NGHTTP2_FRAMEBUF_CHUNKLEN, 8, 1,
NGHTTP2_FRAME_HDLEN + 2);
if(rv != 0) {
goto fail_aob_framebuf;
......
......@@ -4659,7 +4659,7 @@ void test_nghttp2_session_pack_headers_with_padding(void)
accumulator acc;
my_user_data ud;
nghttp2_session_callbacks callbacks;
nghttp2_nv nva[4086];
nghttp2_nv nva[8172];
size_t i;
nghttp2_priority_spec pri_spec;
......@@ -4725,7 +4725,7 @@ void test_nghttp2_session_pack_headers_with_padding2(void)
accumulator acc;
my_user_data ud;
nghttp2_session_callbacks callbacks;
nghttp2_nv nva[8182];
nghttp2_nv nva[16364];
size_t i;
for(i = 0; i < ARRLEN(nva); ++i) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment