Lines Matching refs:iframe

231   session->iframe.state = NGHTTP2_IB_IGN_ALL;
306 nghttp2_inbound_frame *iframe = &session->iframe;
310 iframe->frame.hd.type is 0, so that no free is performed. */
311 switch (iframe->frame.hd.type) {
315 nghttp2_frame_headers_free(&iframe->frame.headers, mem);
318 nghttp2_frame_priority_free(&iframe->frame.priority);
321 nghttp2_frame_rst_stream_free(&iframe->frame.rst_stream);
324 nghttp2_frame_settings_free(&iframe->frame.settings, mem);
326 nghttp2_mem_free(mem, iframe->iv);
328 iframe->iv = NULL;
329 iframe->niv = 0;
330 iframe->max_niv = 0;
334 nghttp2_frame_push_promise_free(&iframe->frame.push_promise, mem);
337 nghttp2_frame_ping_free(&iframe->frame.ping);
340 nghttp2_frame_goaway_free(&iframe->frame.goaway, mem);
343 nghttp2_frame_window_update_free(&iframe->frame.window_update);
348 iframe->frame.hd.type)) {
349 nghttp2_frame_extension_free(&iframe->frame.ext);
351 switch (iframe->frame.hd.type) {
356 nghttp2_frame_altsvc_free(&iframe->frame.ext, mem);
362 nghttp2_frame_origin_free(&iframe->frame.ext, mem);
378 memset(&iframe->frame, 0, sizeof(nghttp2_frame));
379 memset(&iframe->ext_frame_payload, 0, sizeof(nghttp2_ext_frame_payload));
381 iframe->state = NGHTTP2_IB_READ_HEAD;
383 nghttp2_buf_wrap_init(&iframe->sbuf, iframe->raw_sbuf,
384 sizeof(iframe->raw_sbuf));
385 iframe->sbuf.mark += NGHTTP2_FRAME_HDLEN;
387 nghttp2_buf_free(&iframe->lbuf, mem);
388 nghttp2_buf_wrap_init(&iframe->lbuf, NULL, 0);
390 iframe->raw_lbuf = NULL;
392 iframe->payloadleft = 0;
393 iframe->padlen = 0;
625 nghttp2_inbound_frame *iframe = &(*session_ptr)->iframe;
629 iframe->state = NGHTTP2_IB_READ_CLIENT_MAGIC;
630 iframe->payloadleft = NGHTTP2_CLIENT_MAGIC_LEN;
632 iframe->state = NGHTTP2_IB_READ_FIRST_SETTINGS;
3682 nghttp2_inbound_frame *iframe = &session->iframe;
3683 nghttp2_frame *frame = &iframe->frame;
3701 nghttp2_inbound_frame *iframe = &session->iframe;
3702 nghttp2_frame *frame = &iframe->frame;
3901 if (session->iframe.state == NGHTTP2_IB_READ_HEADER_BLOCK) {
4056 nghttp2_frame *frame = &session->iframe.frame;
4364 nghttp2_inbound_frame *iframe = &session->iframe;
4365 nghttp2_frame *frame = &iframe->frame;
4368 nghttp2_frame_unpack_headers_payload(&frame->headers, iframe->sbuf.pos);
4453 nghttp2_inbound_frame *iframe = &session->iframe;
4454 nghttp2_frame *frame = &iframe->frame;
4458 nghttp2_frame_unpack_priority_payload(&frame->priority, iframe->sbuf.pos);
4514 nghttp2_inbound_frame *iframe = &session->iframe;
4515 nghttp2_frame *frame = &iframe->frame;
4517 nghttp2_frame_unpack_rst_stream_payload(&frame->rst_stream, iframe->sbuf.pos);
4927 nghttp2_inbound_frame *iframe = &session->iframe;
4928 nghttp2_frame *frame = &iframe->frame;
4932 if (iframe->max_niv) {
4933 min_header_size_entry = iframe->iv[iframe->max_niv - 1];
4937 SETTINGS_HEADER_TABLE_SIZE in i < iframe->niv */
4938 for (i = 0; i < iframe->niv; ++i) {
4939 if (iframe->iv[i].settings_id == NGHTTP2_SETTINGS_HEADER_TABLE_SIZE) {
4944 assert(i < iframe->niv);
4946 if (min_header_size_entry.value != iframe->iv[i].value) {
4947 iframe->iv[iframe->niv++] = iframe->iv[i];
4948 iframe->iv[i] = min_header_size_entry;
4953 nghttp2_frame_unpack_settings_payload(&frame->settings, iframe->iv,
4954 iframe->niv);
4956 iframe->iv = NULL;
4957 iframe->niv = 0;
4958 iframe->max_niv = 0;
5050 nghttp2_inbound_frame *iframe = &session->iframe;
5051 nghttp2_frame *frame = &iframe->frame;
5054 iframe->sbuf.pos);
5080 nghttp2_inbound_frame *iframe = &session->iframe;
5081 nghttp2_frame *frame = &iframe->frame;
5083 nghttp2_frame_unpack_ping_payload(&frame->ping, iframe->sbuf.pos);
5121 nghttp2_inbound_frame *iframe = &session->iframe;
5122 nghttp2_frame *frame = &iframe->frame;
5124 nghttp2_frame_unpack_goaway_payload(&frame->goaway, iframe->sbuf.pos,
5125 iframe->lbuf.pos,
5126 nghttp2_buf_len(&iframe->lbuf));
5128 nghttp2_buf_wrap_init(&iframe->lbuf, NULL, 0);
5206 nghttp2_inbound_frame *iframe = &session->iframe;
5207 nghttp2_frame *frame = &iframe->frame;
5210 iframe->sbuf.pos);
5333 nghttp2_inbound_frame *iframe = &session->iframe;
5334 nghttp2_frame *frame = &iframe->frame;
5337 &frame->ext, nghttp2_get_uint16(iframe->sbuf.pos), iframe->lbuf.pos,
5338 nghttp2_buf_len(&iframe->lbuf));
5341 iframe->lbuf */
5342 nghttp2_buf_wrap_init(&iframe->lbuf, NULL, 0);
5348 nghttp2_inbound_frame *iframe = &session->iframe;
5349 nghttp2_frame *frame = &iframe->frame;
5353 rv = nghttp2_frame_unpack_origin_payload(&frame->ext, iframe->lbuf.pos,
5354 nghttp2_buf_len(&iframe->lbuf), mem);
5367 nghttp2_inbound_frame *iframe = &session->iframe;
5368 nghttp2_frame *frame = &iframe->frame;
5370 nghttp2_frame_unpack_priority_update_payload(&frame->ext, iframe->sbuf.pos,
5371 nghttp2_buf_len(&iframe->sbuf));
5378 nghttp2_inbound_frame *iframe = &session->iframe;
5379 nghttp2_frame *frame = &iframe->frame;
5443 nghttp2_frame *public_data_frame = &session->iframe.frame;
5585 * indicated by |session->iframe.frame.hd.stream_id|. If it is a
5603 nghttp2_inbound_frame *iframe;
5608 iframe = &session->iframe;
5609 stream_id = iframe->frame.hd.stream_id;
5669 static size_t inbound_frame_payload_readlen(nghttp2_inbound_frame *iframe,
5672 return nghttp2_min((size_t)(last - in), iframe->payloadleft);
5676 * Resets iframe->sbuf and advance its mark pointer by |left| bytes.
5678 static void inbound_frame_set_mark(nghttp2_inbound_frame *iframe, size_t left) {
5679 nghttp2_buf_reset(&iframe->sbuf);
5680 iframe->sbuf.mark += left;
5683 static size_t inbound_frame_buf_read(nghttp2_inbound_frame *iframe,
5688 nghttp2_min((size_t)(last - in), nghttp2_buf_mark_avail(&iframe->sbuf));
5690 iframe->sbuf.last = nghttp2_cpymem(iframe->sbuf.last, in, readlen);
5696 * Unpacks SETTINGS entry in iframe->sbuf.
5698 static void inbound_frame_set_settings_entry(nghttp2_inbound_frame *iframe) {
5703 nghttp2_frame_unpack_settings_entry(&iv, iframe->sbuf.pos);
5718 iframe->iv[iframe->niv++] = iv;
5723 for (i = 0; i < iframe->niv; ++i) {
5724 if (iframe->iv[i].settings_id == iv.settings_id) {
5725 iframe->iv[i] = iv;
5730 if (i == iframe->niv) {
5731 iframe->iv[iframe->niv++] = iv;
5736 min_header_table_size_entry = &iframe->iv[iframe->max_niv - 1];
5745 * Checks PADDED flags and set iframe->sbuf to read them accordingly.
5749 static int inbound_frame_handle_pad(nghttp2_inbound_frame *iframe,
5755 inbound_frame_set_mark(iframe, 1);
5766 static ssize_t inbound_frame_compute_pad(nghttp2_inbound_frame *iframe) {
5770 padlen = (size_t)(iframe->sbuf.pos[0] + 1);
5774 /* We cannot use iframe->frame.hd.length because of CONTINUATION */
5775 if (padlen - 1 > iframe->payloadleft) {
5779 iframe->padlen = padlen;
5790 static ssize_t inbound_frame_effective_readlen(nghttp2_inbound_frame *iframe,
5794 nghttp2_frame_trail_padlen(&iframe->frame, iframe->padlen);
5812 nghttp2_inbound_frame *iframe = &session->iframe;
5848 switch (iframe->state) {
5850 readlen = nghttp2_min(inlen, iframe->payloadleft);
5853 iframe->payloadleft],
5858 iframe->payloadleft -= readlen;
5861 if (iframe->payloadleft == 0) {
5863 iframe->state = NGHTTP2_IB_READ_FIRST_SETTINGS;
5870 readlen = inbound_frame_buf_read(iframe, in, last);
5873 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
5877 if (iframe->sbuf.pos[3] != NGHTTP2_SETTINGS ||
5878 (iframe->sbuf.pos[4] & NGHTTP2_FLAG_ACK)) {
5899 iframe->state = NGHTTP2_IB_READ_HEAD;
5907 readlen = inbound_frame_buf_read(iframe, in, last);
5910 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
5914 nghttp2_frame_unpack_frame_hd(&iframe->frame.hd, iframe->sbuf.pos);
5915 iframe->payloadleft = iframe->frame.hd.length;
5918 iframe->frame.hd.length, iframe->frame.hd.type,
5919 iframe->frame.hd.flags, iframe->frame.hd.stream_id);
5921 if (iframe->frame.hd.length > session->local_settings.max_frame_size) {
5922 DEBUGF("recv: length is too large %zu > %u\n", iframe->frame.hd.length,
5935 switch (iframe->frame.hd.type) {
5939 iframe->frame.hd.flags &=
5946 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
5951 iframe->frame.hd.stream_id);
5952 iframe->state = NGHTTP2_IB_IGN_DATA;
5960 rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
5973 iframe->state = NGHTTP2_IB_READ_PAD_DATA;
5977 iframe->state = NGHTTP2_IB_READ_DATA;
5984 iframe->frame.hd.flags &=
5988 rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
6000 iframe->state = NGHTTP2_IB_READ_NBYTE;
6004 pri_fieldlen = nghttp2_frame_priority_len(iframe->frame.hd.flags);
6007 if (iframe->payloadleft < pri_fieldlen) {
6009 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6013 iframe->state = NGHTTP2_IB_READ_NBYTE;
6015 inbound_frame_set_mark(iframe, pri_fieldlen);
6023 rv = session_call_on_begin_frame(session, &iframe->frame.hd);
6038 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6044 session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
6048 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6053 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6057 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6063 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6065 if (iframe->payloadleft != NGHTTP2_PRIORITY_SPECLEN) {
6068 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6073 iframe->state = NGHTTP2_IB_READ_NBYTE;
6075 inbound_frame_set_mark(iframe, NGHTTP2_PRIORITY_SPECLEN);
6081 switch (iframe->frame.hd.type) {
6091 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6093 if (iframe->payloadleft != 4) {
6095 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6099 iframe->state = NGHTTP2_IB_READ_NBYTE;
6101 inbound_frame_set_mark(iframe, 4);
6107 iframe->frame.hd.flags &= NGHTTP2_FLAG_ACK;
6109 if ((iframe->frame.hd.length % NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH) ||
6110 ((iframe->frame.hd.flags & NGHTTP2_FLAG_ACK) &&
6111 iframe->payloadleft > 0)) {
6113 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6119 !(iframe->frame.hd.flags & NGHTTP2_FLAG_ACK)) {
6123 iframe->state = NGHTTP2_IB_READ_SETTINGS;
6125 if (iframe->payloadleft) {
6130 iframe->max_niv =
6131 iframe->frame.hd.length / NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH + 1;
6133 if (iframe->max_niv - 1 > session->max_settings) {
6143 iframe->iv = nghttp2_mem_malloc(mem, sizeof(nghttp2_settings_entry) *
6144 iframe->max_niv);
6146 if (!iframe->iv) {
6150 min_header_table_size_entry = &iframe->iv[iframe->max_niv - 1];
6155 inbound_frame_set_mark(iframe, NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH);
6161 inbound_frame_set_mark(iframe, 0);
6167 iframe->frame.hd.flags &=
6170 rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
6182 iframe->state = NGHTTP2_IB_READ_NBYTE;
6186 if (iframe->payloadleft < 4) {
6188 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6192 iframe->state = NGHTTP2_IB_READ_NBYTE;
6194 inbound_frame_set_mark(iframe, 4);
6200 iframe->frame.hd.flags &= NGHTTP2_FLAG_ACK;
6202 if (iframe->payloadleft != 8) {
6204 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6208 iframe->state = NGHTTP2_IB_READ_NBYTE;
6209 inbound_frame_set_mark(iframe, 8);
6215 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6217 if (iframe->payloadleft < 8) {
6219 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6223 iframe->state = NGHTTP2_IB_READ_NBYTE;
6224 inbound_frame_set_mark(iframe, 8);
6243 iframe->frame.hd.type)) {
6249 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6256 iframe->state = NGHTTP2_IB_READ_EXTENSION_PAYLOAD;
6260 switch (iframe->frame.hd.type) {
6265 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6271 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6272 iframe->frame.ext.payload = &iframe->ext_frame_payload.altsvc;
6276 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6280 if (iframe->payloadleft < 2) {
6282 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6288 iframe->state = NGHTTP2_IB_READ_NBYTE;
6289 inbound_frame_set_mark(iframe, 2);
6295 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6301 iframe->frame.ext.payload = &iframe->ext_frame_payload.origin;
6303 if (session->server || iframe->frame.hd.stream_id ||
6304 (iframe->frame.hd.flags & 0xf0)) {
6306 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6310 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6312 if (iframe->payloadleft) {
6313 iframe->raw_lbuf = nghttp2_mem_malloc(mem, iframe->payloadleft);
6315 if (iframe->raw_lbuf == NULL) {
6319 nghttp2_buf_wrap_init(&iframe->lbuf, iframe->raw_lbuf,
6320 iframe->payloadleft);
6325 iframe->state = NGHTTP2_IB_READ_ORIGIN_PAYLOAD;
6332 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6338 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6339 iframe->frame.ext.payload =
6340 &iframe->ext_frame_payload.priority_update;
6352 if (iframe->payloadleft < 4) {
6354 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6359 iframe->payloadleft > sizeof(iframe->raw_sbuf)) {
6361 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6367 iframe->state = NGHTTP2_IB_READ_NBYTE;
6368 inbound_frame_set_mark(iframe, iframe->payloadleft);
6374 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6382 switch (iframe->state) {
6390 rv = session_call_on_begin_frame(session, &iframe->frame.hd);
6403 readlen = inbound_frame_buf_read(iframe, in, last);
6405 iframe->payloadleft -= readlen;
6408 iframe->payloadleft, nghttp2_buf_mark_avail(&iframe->sbuf));
6410 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6414 switch (iframe->frame.hd.type) {
6416 if (iframe->padlen == 0 &&
6417 (iframe->frame.hd.flags & NGHTTP2_FLAG_PADDED)) {
6418 pri_fieldlen = nghttp2_frame_priority_len(iframe->frame.hd.flags);
6419 padlen = inbound_frame_compute_pad(iframe);
6421 (size_t)padlen + pri_fieldlen > 1 + iframe->payloadleft) {
6429 iframe->frame.headers.padlen = (size_t)padlen;
6432 if (iframe->payloadleft < pri_fieldlen) {
6434 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6437 iframe->state = NGHTTP2_IB_READ_NBYTE;
6438 inbound_frame_set_mark(iframe, pri_fieldlen);
6442 inbound_frame_set_mark(iframe, 0);
6453 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6459 session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
6463 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6468 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6472 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6483 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6497 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6505 if (iframe->padlen == 0 &&
6506 (iframe->frame.hd.flags & NGHTTP2_FLAG_PADDED)) {
6507 padlen = inbound_frame_compute_pad(iframe);
6509 > 1 + iframe->payloadleft) {
6519 iframe->frame.push_promise.padlen = (size_t)padlen;
6521 if (iframe->payloadleft < 4) {
6523 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6527 iframe->state = NGHTTP2_IB_READ_NBYTE;
6529 inbound_frame_set_mark(iframe, 4);
6541 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6547 session, iframe->frame.push_promise.promised_stream_id,
6552 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6557 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6561 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6570 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6581 debuglen = iframe->frame.hd.length - 8;
6584 iframe->raw_lbuf = nghttp2_mem_malloc(mem, debuglen);
6586 if (iframe->raw_lbuf == NULL) {
6590 nghttp2_buf_wrap_init(&iframe->lbuf, iframe->raw_lbuf, debuglen);
6595 iframe->state = NGHTTP2_IB_READ_GOAWAY_DEBUG;
6605 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6615 origin_len = nghttp2_get_uint16(iframe->sbuf.pos);
6619 if (origin_len > iframe->payloadleft) {
6621 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6625 if (iframe->frame.hd.length > 2) {
6626 iframe->raw_lbuf =
6627 nghttp2_mem_malloc(mem, iframe->frame.hd.length - 2);
6629 if (iframe->raw_lbuf == NULL) {
6633 nghttp2_buf_wrap_init(&iframe->lbuf, iframe->raw_lbuf,
6634 iframe->frame.hd.length);
6639 iframe->state = NGHTTP2_IB_READ_ALTSVC_PAYLOAD;
6644 nghttp2_get_uint32(iframe->sbuf.pos) & NGHTTP2_STREAM_ID_MASK);
6668 if (iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK) {
6675 readlen = inbound_frame_payload_readlen(iframe, in, last);
6678 iframe->payloadleft - readlen);
6681 iframe, iframe->payloadleft - readlen, readlen);
6688 trail_padlen = nghttp2_frame_trail_padlen(&iframe->frame, iframe->padlen);
6690 final = (iframe->frame.hd.flags & NGHTTP2_FLAG_END_HEADERS) &&
6691 iframe->payloadleft - (size_t)data_readlen == trail_padlen;
6699 inflate_header_block(session, &iframe->frame, &hd_proclen,
6701 iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK);
6707 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6713 iframe->payloadleft -= hd_proclen;
6723 iframe->payloadleft -= hd_proclen;
6728 iframe->frame.hd.type == NGHTTP2_PUSH_PROMISE
6729 ? iframe->frame.push_promise.promised_stream_id
6730 : iframe->frame.hd.stream_id,
6736 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6741 iframe->payloadleft -= readlen;
6745 if (iframe->payloadleft == 0) {
6749 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6755 iframe->payloadleft -= readlen;
6758 if (iframe->payloadleft) {
6762 if ((iframe->frame.hd.flags & NGHTTP2_FLAG_END_HEADERS) == 0) {
6764 inbound_frame_set_mark(iframe, NGHTTP2_FRAME_HDLEN);
6766 iframe->padlen = 0;
6768 if (iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK) {
6769 iframe->state = NGHTTP2_IB_EXPECT_CONTINUATION;
6771 iframe->state = NGHTTP2_IB_IGN_CONTINUATION;
6774 if (iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK) {
6787 readlen = inbound_frame_payload_readlen(iframe, in, last);
6788 iframe->payloadleft -= readlen;
6792 iframe->payloadleft);
6794 if (iframe->payloadleft) {
6798 switch (iframe->frame.hd.type) {
6820 assert(iframe->state == NGHTTP2_IB_IGN_ALL);
6826 readlen = inbound_frame_buf_read(iframe, in, last);
6827 iframe->payloadleft -= readlen;
6831 iframe->payloadleft);
6833 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6838 inbound_frame_set_settings_entry(iframe);
6840 if (iframe->payloadleft) {
6841 inbound_frame_set_mark(iframe, NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH);
6851 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6861 readlen = inbound_frame_payload_readlen(iframe, in, last);
6864 iframe->lbuf.last = nghttp2_cpymem(iframe->lbuf.last, in, readlen);
6866 iframe->payloadleft -= readlen;
6871 iframe->payloadleft);
6873 if (iframe->payloadleft) {
6874 assert(nghttp2_buf_avail(&iframe->lbuf) > 0);
6885 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6895 if (iframe->state == NGHTTP2_IB_EXPECT_CONTINUATION) {
6902 readlen = inbound_frame_buf_read(iframe, in, last);
6905 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6909 nghttp2_frame_unpack_frame_hd(&cont_hd, iframe->sbuf.pos);
6910 iframe->payloadleft = cont_hd.length;
6916 cont_hd.stream_id != iframe->frame.hd.stream_id) {
6919 iframe->frame.hd.stream_id, NGHTTP2_CONTINUATION,
6933 iframe->frame.hd.flags =
6934 (uint8_t)(iframe->frame.hd.flags |
6936 iframe->frame.hd.length += cont_hd.length;
6940 if (iframe->state == NGHTTP2_IB_EXPECT_CONTINUATION) {
6941 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6949 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6956 readlen = inbound_frame_buf_read(iframe, in, last);
6958 iframe->payloadleft -= readlen;
6961 iframe->payloadleft, nghttp2_buf_mark_avail(&iframe->sbuf));
6963 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6973 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6979 nghttp2_session_consume(session, iframe->frame.hd.stream_id, readlen);
6985 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6989 stream = nghttp2_session_get_stream(session, iframe->frame.hd.stream_id);
6993 iframe->payloadleft ||
6994 (iframe->frame.hd.flags & NGHTTP2_FLAG_END_STREAM) == 0);
7002 padlen = inbound_frame_compute_pad(iframe);
7012 iframe->frame.data.padlen = (size_t)padlen;
7014 iframe->state = NGHTTP2_IB_READ_DATA;
7018 stream = nghttp2_session_get_stream(session, iframe->frame.hd.stream_id);
7022 iframe->state = NGHTTP2_IB_IGN_DATA;
7028 readlen = inbound_frame_payload_readlen(iframe, in, last);
7029 iframe->payloadleft -= readlen;
7033 iframe->payloadleft);
7044 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7050 iframe->payloadleft ||
7051 (iframe->frame.hd.flags & NGHTTP2_FLAG_END_STREAM) == 0);
7057 iframe, iframe->payloadleft, readlen);
7068 rv = nghttp2_session_consume(session, iframe->frame.hd.stream_id,
7075 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7094 if (iframe->state == NGHTTP2_IB_IGN_DATA) {
7100 session, iframe->frame.hd.stream_id, NGHTTP2_PROTOCOL_ERROR);
7105 iframe->state = NGHTTP2_IB_IGN_DATA;
7111 session, iframe->frame.hd.flags, iframe->frame.hd.stream_id,
7124 if (iframe->payloadleft) {
7139 readlen = inbound_frame_payload_readlen(iframe, in, last);
7140 iframe->payloadleft -= readlen;
7144 iframe->payloadleft);
7155 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7168 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7174 if (iframe->payloadleft) {
7186 readlen = inbound_frame_payload_readlen(iframe, in, last);
7187 iframe->payloadleft -= readlen;
7191 iframe->payloadleft);
7203 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
7209 if (iframe->payloadleft > 0) {
7224 readlen = inbound_frame_payload_readlen(iframe, in, last);
7226 iframe->lbuf.last = nghttp2_cpymem(iframe->lbuf.last, in, readlen);
7228 iframe->payloadleft -= readlen;
7233 iframe->payloadleft);
7235 if (iframe->payloadleft) {
7236 assert(nghttp2_buf_avail(&iframe->lbuf) > 0);
7252 readlen = inbound_frame_payload_readlen(iframe, in, last);
7255 iframe->lbuf.last = nghttp2_cpymem(iframe->lbuf.last, in, readlen);
7257 iframe->payloadleft -= readlen;
7262 iframe->payloadleft);
7264 if (iframe->payloadleft) {
7265 assert(nghttp2_buf_avail(&iframe->lbuf) > 0);
7276 if (iframe->state == NGHTTP2_IB_IGN_ALL) {