Replace NGHTTP2_MAX_FRAME_LENGTH with NGHTTP2_MAX_PAYLOADLEN
This commit is contained in:
parent
e803c6b65e
commit
74f899fc01
|
@ -264,13 +264,13 @@ ssize_t nghttp2_frame_pack_headers(nghttp2_buf *buf,
|
||||||
frame */
|
frame */
|
||||||
memset(buf->pos, 0, NGHTTP2_FRAME_HDLEN);
|
memset(buf->pos, 0, NGHTTP2_FRAME_HDLEN);
|
||||||
|
|
||||||
/* pack ctrl header after length is determined */
|
/* pack frame header after length is determined */
|
||||||
if(NGHTTP2_MAX_FRAME_LENGTH < frame->hd.length) {
|
if(NGHTTP2_MAX_PAYLOADLEN < frame->hd.length) {
|
||||||
/* Needs CONTINUATION */
|
/* Needs CONTINUATION */
|
||||||
nghttp2_frame_hd hd = frame->hd;
|
nghttp2_frame_hd hd = frame->hd;
|
||||||
|
|
||||||
hd.flags &= ~NGHTTP2_FLAG_END_HEADERS;
|
hd.flags &= ~NGHTTP2_FLAG_END_HEADERS;
|
||||||
hd.length = NGHTTP2_MAX_FRAME_LENGTH;
|
hd.length = NGHTTP2_MAX_PAYLOADLEN;
|
||||||
|
|
||||||
nghttp2_frame_pack_frame_hd(buf->pos, &hd);
|
nghttp2_frame_pack_frame_hd(buf->pos, &hd);
|
||||||
} else {
|
} else {
|
||||||
|
@ -473,13 +473,13 @@ ssize_t nghttp2_frame_pack_push_promise(nghttp2_buf *buf,
|
||||||
frame */
|
frame */
|
||||||
memset(buf->pos, 0, NGHTTP2_FRAME_HDLEN);
|
memset(buf->pos, 0, NGHTTP2_FRAME_HDLEN);
|
||||||
|
|
||||||
/* pack ctrl header after length is determined */
|
/* pack frame header after length is determined */
|
||||||
if(NGHTTP2_MAX_FRAME_LENGTH < frame->hd.length) {
|
if(NGHTTP2_MAX_PAYLOADLEN < frame->hd.length) {
|
||||||
/* Needs CONTINUATION */
|
/* Needs CONTINUATION */
|
||||||
nghttp2_frame_hd hd = frame->hd;
|
nghttp2_frame_hd hd = frame->hd;
|
||||||
|
|
||||||
hd.flags &= ~NGHTTP2_FLAG_END_HEADERS;
|
hd.flags &= ~NGHTTP2_FLAG_END_HEADERS;
|
||||||
hd.length = NGHTTP2_MAX_FRAME_LENGTH;
|
hd.length = NGHTTP2_MAX_PAYLOADLEN;
|
||||||
|
|
||||||
nghttp2_frame_pack_frame_hd(buf->pos, &hd);
|
nghttp2_frame_pack_frame_hd(buf->pos, &hd);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
/* The maximum payload length of a frame TODO: Must be renamed as
|
/* The maximum payload length of a frame TODO: Must be renamed as
|
||||||
NGHTTP2_MAX_PAYLOAD_LENGTH */
|
NGHTTP2_MAX_PAYLOAD_LENGTH */
|
||||||
#define NGHTTP2_MAX_FRAME_LENGTH ((1 << 14) - 1)
|
#define NGHTTP2_MAX_PAYLOADLEN ((1 << 14) - 1)
|
||||||
|
|
||||||
/* The maximum length of DATA frame payload. To fit entire DATA frame
|
/* The maximum length of DATA frame payload. To fit entire DATA frame
|
||||||
into 4096K buffer, we use subtract header size (8 bytes) + 2 bytes
|
into 4096K buffer, we use subtract header size (8 bytes) + 2 bytes
|
||||||
|
@ -111,9 +111,9 @@ size_t nghttp2_frame_headers_payload_nv_offset(nghttp2_headers *frame);
|
||||||
*
|
*
|
||||||
* frame->hd.length is assigned after length is determined during
|
* frame->hd.length is assigned after length is determined during
|
||||||
* packing process. If payload length is strictly larger than
|
* packing process. If payload length is strictly larger than
|
||||||
* NGHTTP2_MAX_FRAME_LENGTH, payload data is still serialized as is,
|
* NGHTTP2_MAX_PAYLOADLEN, payload data is still serialized as is, but
|
||||||
* but frame->hd.length is set to NGHTTP2_MAX_FRAME_LENGTH and
|
* serialized header's payload length is set to NGHTTP2_MAX_PAYLOADLEN
|
||||||
* NGHTTP2_FLAG_END_HEADERS flag is cleared from frame->hd.flags.
|
* and NGHTTP2_FLAG_END_HEADERS flag is cleared.
|
||||||
*
|
*
|
||||||
* This function returns the size of packed frame (which equals to
|
* This function returns the size of packed frame (which equals to
|
||||||
* nghttp2_buf_len(buf)) if it succeeds, or returns one of the
|
* nghttp2_buf_len(buf)) if it succeeds, or returns one of the
|
||||||
|
@ -254,9 +254,9 @@ int nghttp2_frame_unpack_settings_payload2(nghttp2_settings_entry **iv_ptr,
|
||||||
*
|
*
|
||||||
* frame->hd.length is assigned after length is determined during
|
* frame->hd.length is assigned after length is determined during
|
||||||
* packing process. If payload length is strictly larger than
|
* packing process. If payload length is strictly larger than
|
||||||
* NGHTTP2_MAX_FRAME_LENGTH, payload data is still serialized as is,
|
* NGHTTP2_MAX_PAYLOADLEN, payload data is still serialized as is, but
|
||||||
* but frame->hd.length is set to NGHTTP2_MAX_FRAME_LENGTH and
|
* serialized header's payload length is set to NGHTTP2_MAX_PAYLOADLEN
|
||||||
* NGHTTP2_FLAG_END_HEADERS flag is cleared from frame->hd.flags.
|
* and NGHTTP2_FLAG_END_HEADERS flag is cleared.
|
||||||
*
|
*
|
||||||
* This function returns the size of packed frame (which equals to
|
* This function returns the size of packed frame (which equals to
|
||||||
* nghttp2_buf_len(buf)) if it succeeds, or returns one of the
|
* nghttp2_buf_len(buf)) if it succeeds, or returns one of the
|
||||||
|
|
|
@ -1178,15 +1178,15 @@ static ssize_t session_headers_add_pad(nghttp2_session *session,
|
||||||
DEBUGF(fprintf(stderr, "padding selected: payloadlen=%zu, padlen=%zu\n",
|
DEBUGF(fprintf(stderr, "padding selected: payloadlen=%zu, padlen=%zu\n",
|
||||||
frame->hd.length, frame->headers.padlen));
|
frame->hd.length, frame->headers.padlen));
|
||||||
|
|
||||||
if(frame->hd.length > NGHTTP2_MAX_FRAME_LENGTH) {
|
if(frame->hd.length > NGHTTP2_MAX_PAYLOADLEN) {
|
||||||
nghttp2_frame_hd hd = frame->hd;
|
nghttp2_frame_hd hd = frame->hd;
|
||||||
hd.flags &= ~NGHTTP2_FLAG_END_HEADERS;
|
hd.flags &= ~NGHTTP2_FLAG_END_HEADERS;
|
||||||
hd.length = NGHTTP2_MAX_FRAME_LENGTH;
|
hd.length = NGHTTP2_MAX_PAYLOADLEN;
|
||||||
|
|
||||||
if(NGHTTP2_MAX_FRAME_LENGTH > frame->hd.length - frame->headers.padlen) {
|
if(NGHTTP2_MAX_PAYLOADLEN > frame->hd.length - frame->headers.padlen) {
|
||||||
size_t padlen;
|
size_t padlen;
|
||||||
|
|
||||||
padlen = NGHTTP2_MAX_FRAME_LENGTH -
|
padlen = NGHTTP2_MAX_PAYLOADLEN -
|
||||||
(frame->hd.length - frame->headers.padlen);
|
(frame->hd.length - frame->headers.padlen);
|
||||||
|
|
||||||
DEBUGF(fprintf(stderr, "padding across 2 frames\n"));
|
DEBUGF(fprintf(stderr, "padding across 2 frames\n"));
|
||||||
|
@ -1608,7 +1608,7 @@ static int nghttp2_session_after_frame_sent(nghttp2_session *session)
|
||||||
nghttp2_frame_hd cont_hd;
|
nghttp2_frame_hd cont_hd;
|
||||||
|
|
||||||
cont_hd.length = nghttp2_min(framebuf->last - framebuf->mark,
|
cont_hd.length = nghttp2_min(framebuf->last - framebuf->mark,
|
||||||
NGHTTP2_MAX_FRAME_LENGTH);
|
NGHTTP2_MAX_PAYLOADLEN);
|
||||||
cont_hd.type = NGHTTP2_CONTINUATION;
|
cont_hd.type = NGHTTP2_CONTINUATION;
|
||||||
cont_hd.stream_id = frame->hd.stream_id;
|
cont_hd.stream_id = frame->hd.stream_id;
|
||||||
cont_hd.flags = NGHTTP2_FLAG_NONE;
|
cont_hd.flags = NGHTTP2_FLAG_NONE;
|
||||||
|
@ -1970,7 +1970,7 @@ ssize_t nghttp2_session_mem_send(nghttp2_session *session,
|
||||||
/* We have to get frame size from headers, because
|
/* We have to get frame size from headers, because
|
||||||
frame->hd.length does not always shows the actual frame
|
frame->hd.length does not always shows the actual frame
|
||||||
size, especially for HEADERS size >
|
size, especially for HEADERS size >
|
||||||
NGHTTP2_MAX_FRAME_LENGTH */
|
NGHTTP2_MAX_PAYLOADLEN */
|
||||||
frame = nghttp2_outbound_item_get_ctrl_frame(item);
|
frame = nghttp2_outbound_item_get_ctrl_frame(item);
|
||||||
|
|
||||||
framebuf->mark = framebuf->pos + NGHTTP2_FRAME_HDLEN +
|
framebuf->mark = framebuf->pos + NGHTTP2_FRAME_HDLEN +
|
||||||
|
|
|
@ -3628,19 +3628,19 @@ void test_nghttp2_session_flow_control_data_recv(void)
|
||||||
NGHTTP2_PRI_DEFAULT,
|
NGHTTP2_PRI_DEFAULT,
|
||||||
NGHTTP2_STREAM_OPENED, NULL);
|
NGHTTP2_STREAM_OPENED, NULL);
|
||||||
|
|
||||||
session->local_window_size = NGHTTP2_MAX_FRAME_LENGTH;
|
session->local_window_size = NGHTTP2_MAX_PAYLOADLEN;
|
||||||
stream->local_window_size = NGHTTP2_MAX_FRAME_LENGTH;
|
stream->local_window_size = NGHTTP2_MAX_PAYLOADLEN;
|
||||||
|
|
||||||
/* Create DATA frame */
|
/* Create DATA frame */
|
||||||
memset(data, 0, sizeof(data));
|
memset(data, 0, sizeof(data));
|
||||||
hd.length = NGHTTP2_MAX_FRAME_LENGTH;
|
hd.length = NGHTTP2_MAX_PAYLOADLEN;
|
||||||
hd.type = NGHTTP2_DATA;
|
hd.type = NGHTTP2_DATA;
|
||||||
hd.flags = NGHTTP2_FLAG_END_STREAM;
|
hd.flags = NGHTTP2_FLAG_END_STREAM;
|
||||||
hd.stream_id = 1;
|
hd.stream_id = 1;
|
||||||
nghttp2_frame_pack_frame_hd(data, &hd);
|
nghttp2_frame_pack_frame_hd(data, &hd);
|
||||||
CU_ASSERT(NGHTTP2_MAX_FRAME_LENGTH+NGHTTP2_FRAME_HDLEN ==
|
CU_ASSERT(NGHTTP2_MAX_PAYLOADLEN+NGHTTP2_FRAME_HDLEN ==
|
||||||
nghttp2_session_mem_recv(session, data,
|
nghttp2_session_mem_recv(session, data,
|
||||||
NGHTTP2_MAX_FRAME_LENGTH +
|
NGHTTP2_MAX_PAYLOADLEN +
|
||||||
NGHTTP2_FRAME_HDLEN));
|
NGHTTP2_FRAME_HDLEN));
|
||||||
|
|
||||||
item = nghttp2_session_get_next_ob_item(session);
|
item = nghttp2_session_get_next_ob_item(session);
|
||||||
|
@ -3648,7 +3648,7 @@ void test_nghttp2_session_flow_control_data_recv(void)
|
||||||
issued, but connection-level does. */
|
issued, but connection-level does. */
|
||||||
CU_ASSERT(NGHTTP2_WINDOW_UPDATE == OB_CTRL_TYPE(item));
|
CU_ASSERT(NGHTTP2_WINDOW_UPDATE == OB_CTRL_TYPE(item));
|
||||||
CU_ASSERT(0 == OB_CTRL(item)->hd.stream_id);
|
CU_ASSERT(0 == OB_CTRL(item)->hd.stream_id);
|
||||||
CU_ASSERT(NGHTTP2_MAX_FRAME_LENGTH ==
|
CU_ASSERT(NGHTTP2_MAX_PAYLOADLEN ==
|
||||||
OB_CTRL(item)->window_update.window_size_increment);
|
OB_CTRL(item)->window_update.window_size_increment);
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
|
@ -3658,15 +3658,15 @@ void test_nghttp2_session_flow_control_data_recv(void)
|
||||||
RST_STREAM is issued by the remote, but the local side keeps
|
RST_STREAM is issued by the remote, but the local side keeps
|
||||||
sending DATA frames. Without calculating connection-level window,
|
sending DATA frames. Without calculating connection-level window,
|
||||||
the subsequent flow control gets confused. */
|
the subsequent flow control gets confused. */
|
||||||
CU_ASSERT(NGHTTP2_MAX_FRAME_LENGTH+NGHTTP2_FRAME_HDLEN ==
|
CU_ASSERT(NGHTTP2_MAX_PAYLOADLEN+NGHTTP2_FRAME_HDLEN ==
|
||||||
nghttp2_session_mem_recv(session, data,
|
nghttp2_session_mem_recv(session, data,
|
||||||
NGHTTP2_MAX_FRAME_LENGTH +
|
NGHTTP2_MAX_PAYLOADLEN +
|
||||||
NGHTTP2_FRAME_HDLEN));
|
NGHTTP2_FRAME_HDLEN));
|
||||||
|
|
||||||
item = nghttp2_session_get_next_ob_item(session);
|
item = nghttp2_session_get_next_ob_item(session);
|
||||||
CU_ASSERT(NGHTTP2_WINDOW_UPDATE == OB_CTRL_TYPE(item));
|
CU_ASSERT(NGHTTP2_WINDOW_UPDATE == OB_CTRL_TYPE(item));
|
||||||
CU_ASSERT(0 == OB_CTRL(item)->hd.stream_id);
|
CU_ASSERT(0 == OB_CTRL(item)->hd.stream_id);
|
||||||
CU_ASSERT(NGHTTP2_MAX_FRAME_LENGTH ==
|
CU_ASSERT(NGHTTP2_MAX_PAYLOADLEN ==
|
||||||
OB_CTRL(item)->window_update.window_size_increment);
|
OB_CTRL(item)->window_update.window_size_increment);
|
||||||
|
|
||||||
nghttp2_session_del(session);
|
nghttp2_session_del(session);
|
||||||
|
@ -4199,7 +4199,7 @@ void test_nghttp2_session_pack_headers_with_padding(void)
|
||||||
nva, ARRLEN(nva), NULL, NULL));
|
nva, ARRLEN(nva), NULL, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
|
|
||||||
CU_ASSERT(acc.length > NGHTTP2_MAX_FRAME_LENGTH);
|
CU_ASSERT(acc.length > NGHTTP2_MAX_PAYLOADLEN);
|
||||||
ud.frame_recv_cb_called = 0;
|
ud.frame_recv_cb_called = 0;
|
||||||
CU_ASSERT((ssize_t)acc.length ==
|
CU_ASSERT((ssize_t)acc.length ==
|
||||||
nghttp2_session_mem_recv(sv_session, acc.buf, acc.length));
|
nghttp2_session_mem_recv(sv_session, acc.buf, acc.length));
|
||||||
|
@ -4213,7 +4213,7 @@ void test_nghttp2_session_pack_headers_with_padding(void)
|
||||||
acc.length = 0;
|
acc.length = 0;
|
||||||
CU_ASSERT(0 == nghttp2_session_send(sv_session));
|
CU_ASSERT(0 == nghttp2_session_send(sv_session));
|
||||||
|
|
||||||
CU_ASSERT(acc.length > NGHTTP2_MAX_FRAME_LENGTH);
|
CU_ASSERT(acc.length > NGHTTP2_MAX_PAYLOADLEN);
|
||||||
ud.frame_recv_cb_called = 0;
|
ud.frame_recv_cb_called = 0;
|
||||||
CU_ASSERT((ssize_t)acc.length ==
|
CU_ASSERT((ssize_t)acc.length ==
|
||||||
nghttp2_session_mem_recv(session, acc.buf, acc.length));
|
nghttp2_session_mem_recv(session, acc.buf, acc.length));
|
||||||
|
@ -4261,7 +4261,7 @@ void test_nghttp2_session_pack_headers_with_padding2(void)
|
||||||
nva, ARRLEN(nva), NULL, NULL));
|
nva, ARRLEN(nva), NULL, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
|
|
||||||
CU_ASSERT(acc.length > NGHTTP2_MAX_FRAME_LENGTH);
|
CU_ASSERT(acc.length > NGHTTP2_MAX_PAYLOADLEN);
|
||||||
|
|
||||||
ud.frame_recv_cb_called = 0;
|
ud.frame_recv_cb_called = 0;
|
||||||
CU_ASSERT((ssize_t)acc.length ==
|
CU_ASSERT((ssize_t)acc.length ==
|
||||||
|
@ -4310,7 +4310,7 @@ void test_nghttp2_session_pack_headers_with_padding3(void)
|
||||||
nva, ARRLEN(nva), NULL, NULL));
|
nva, ARRLEN(nva), NULL, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
|
|
||||||
CU_ASSERT(acc.length > NGHTTP2_MAX_FRAME_LENGTH);
|
CU_ASSERT(acc.length > NGHTTP2_MAX_PAYLOADLEN);
|
||||||
ud.frame_recv_cb_called = 0;
|
ud.frame_recv_cb_called = 0;
|
||||||
CU_ASSERT((ssize_t)acc.length ==
|
CU_ASSERT((ssize_t)acc.length ==
|
||||||
nghttp2_session_mem_recv(sv_session, acc.buf, acc.length));
|
nghttp2_session_mem_recv(sv_session, acc.buf, acc.length));
|
||||||
|
@ -4354,7 +4354,7 @@ void test_nghttp2_session_pack_headers_with_padding4(void)
|
||||||
nva, ARRLEN(nva), NULL, NULL));
|
nva, ARRLEN(nva), NULL, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
|
|
||||||
CU_ASSERT(acc.length < NGHTTP2_MAX_FRAME_LENGTH);
|
CU_ASSERT(acc.length < NGHTTP2_MAX_PAYLOADLEN);
|
||||||
ud.frame_recv_cb_called = 0;
|
ud.frame_recv_cb_called = 0;
|
||||||
CU_ASSERT((ssize_t)acc.length ==
|
CU_ASSERT((ssize_t)acc.length ==
|
||||||
nghttp2_session_mem_recv(sv_session, acc.buf, acc.length));
|
nghttp2_session_mem_recv(sv_session, acc.buf, acc.length));
|
||||||
|
|
Loading…
Reference in New Issue