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;
630 nghttp2_inbound_frame *iframe = &(*session_ptr)->iframe;
634 iframe->state = NGHTTP2_IB_READ_CLIENT_MAGIC;
635 iframe->payloadleft = NGHTTP2_CLIENT_MAGIC_LEN;
637 iframe->state = NGHTTP2_IB_READ_FIRST_SETTINGS;
3687 nghttp2_inbound_frame *iframe = &session->iframe;
3688 nghttp2_frame *frame = &iframe->frame;
3706 nghttp2_inbound_frame *iframe = &session->iframe;
3707 nghttp2_frame *frame = &iframe->frame;
3906 if (session->iframe.state == NGHTTP2_IB_READ_HEADER_BLOCK) {
4061 nghttp2_frame *frame = &session->iframe.frame;
4369 nghttp2_inbound_frame *iframe = &session->iframe;
4370 nghttp2_frame *frame = &iframe->frame;
4373 nghttp2_frame_unpack_headers_payload(&frame->headers, iframe->sbuf.pos);
4458 nghttp2_inbound_frame *iframe = &session->iframe;
4459 nghttp2_frame *frame = &iframe->frame;
4463 nghttp2_frame_unpack_priority_payload(&frame->priority, iframe->sbuf.pos);
4519 nghttp2_inbound_frame *iframe = &session->iframe;
4520 nghttp2_frame *frame = &iframe->frame;
4522 nghttp2_frame_unpack_rst_stream_payload(&frame->rst_stream, iframe->sbuf.pos);
4932 nghttp2_inbound_frame *iframe = &session->iframe;
4933 nghttp2_frame *frame = &iframe->frame;
4937 if (iframe->max_niv) {
4938 min_header_size_entry = iframe->iv[iframe->max_niv - 1];
4942 SETTINGS_HEADER_TABLE_SIZE in i < iframe->niv */
4943 for (i = 0; i < iframe->niv; ++i) {
4944 if (iframe->iv[i].settings_id == NGHTTP2_SETTINGS_HEADER_TABLE_SIZE) {
4949 assert(i < iframe->niv);
4951 if (min_header_size_entry.value != iframe->iv[i].value) {
4952 iframe->iv[iframe->niv++] = iframe->iv[i];
4953 iframe->iv[i] = min_header_size_entry;
4958 nghttp2_frame_unpack_settings_payload(&frame->settings, iframe->iv,
4959 iframe->niv);
4961 iframe->iv = NULL;
4962 iframe->niv = 0;
4963 iframe->max_niv = 0;
5055 nghttp2_inbound_frame *iframe = &session->iframe;
5056 nghttp2_frame *frame = &iframe->frame;
5059 iframe->sbuf.pos);
5085 nghttp2_inbound_frame *iframe = &session->iframe;
5086 nghttp2_frame *frame = &iframe->frame;
5088 nghttp2_frame_unpack_ping_payload(&frame->ping, iframe->sbuf.pos);
5126 nghttp2_inbound_frame *iframe = &session->iframe;
5127 nghttp2_frame *frame = &iframe->frame;
5129 nghttp2_frame_unpack_goaway_payload(&frame->goaway, iframe->sbuf.pos,
5130 iframe->lbuf.pos,
5131 nghttp2_buf_len(&iframe->lbuf));
5133 nghttp2_buf_wrap_init(&iframe->lbuf, NULL, 0);
5211 nghttp2_inbound_frame *iframe = &session->iframe;
5212 nghttp2_frame *frame = &iframe->frame;
5215 iframe->sbuf.pos);
5338 nghttp2_inbound_frame *iframe = &session->iframe;
5339 nghttp2_frame *frame = &iframe->frame;
5342 &frame->ext, nghttp2_get_uint16(iframe->sbuf.pos), iframe->lbuf.pos,
5343 nghttp2_buf_len(&iframe->lbuf));
5346 iframe->lbuf */
5347 nghttp2_buf_wrap_init(&iframe->lbuf, NULL, 0);
5353 nghttp2_inbound_frame *iframe = &session->iframe;
5354 nghttp2_frame *frame = &iframe->frame;
5358 rv = nghttp2_frame_unpack_origin_payload(&frame->ext, iframe->lbuf.pos,
5359 nghttp2_buf_len(&iframe->lbuf), mem);
5372 nghttp2_inbound_frame *iframe = &session->iframe;
5373 nghttp2_frame *frame = &iframe->frame;
5375 nghttp2_frame_unpack_priority_update_payload(&frame->ext, iframe->sbuf.pos,
5376 nghttp2_buf_len(&iframe->sbuf));
5383 nghttp2_inbound_frame *iframe = &session->iframe;
5384 nghttp2_frame *frame = &iframe->frame;
5448 nghttp2_frame *public_data_frame = &session->iframe.frame;
5590 * indicated by |session->iframe.frame.hd.stream_id|. If it is a
5608 nghttp2_inbound_frame *iframe;
5613 iframe = &session->iframe;
5614 stream_id = iframe->frame.hd.stream_id;
5674 static size_t inbound_frame_payload_readlen(nghttp2_inbound_frame *iframe,
5677 return nghttp2_min((size_t)(last - in), iframe->payloadleft);
5681 * Resets iframe->sbuf and advance its mark pointer by |left| bytes.
5683 static void inbound_frame_set_mark(nghttp2_inbound_frame *iframe, size_t left) {
5684 nghttp2_buf_reset(&iframe->sbuf);
5685 iframe->sbuf.mark += left;
5688 static size_t inbound_frame_buf_read(nghttp2_inbound_frame *iframe,
5693 nghttp2_min((size_t)(last - in), nghttp2_buf_mark_avail(&iframe->sbuf));
5695 iframe->sbuf.last = nghttp2_cpymem(iframe->sbuf.last, in, readlen);
5701 * Unpacks SETTINGS entry in iframe->sbuf.
5703 static void inbound_frame_set_settings_entry(nghttp2_inbound_frame *iframe) {
5708 nghttp2_frame_unpack_settings_entry(&iv, iframe->sbuf.pos);
5723 iframe->iv[iframe->niv++] = iv;
5728 for (i = 0; i < iframe->niv; ++i) {
5729 if (iframe->iv[i].settings_id == iv.settings_id) {
5730 iframe->iv[i] = iv;
5735 if (i == iframe->niv) {
5736 iframe->iv[iframe->niv++] = iv;
5741 min_header_table_size_entry = &iframe->iv[iframe->max_niv - 1];
5750 * Checks PADDED flags and set iframe->sbuf to read them accordingly.
5754 static int inbound_frame_handle_pad(nghttp2_inbound_frame *iframe,
5760 inbound_frame_set_mark(iframe, 1);
5771 static ssize_t inbound_frame_compute_pad(nghttp2_inbound_frame *iframe) {
5775 padlen = (size_t)(iframe->sbuf.pos[0] + 1);
5779 /* We cannot use iframe->frame.hd.length because of CONTINUATION */
5780 if (padlen - 1 > iframe->payloadleft) {
5784 iframe->padlen = padlen;
5795 static ssize_t inbound_frame_effective_readlen(nghttp2_inbound_frame *iframe,
5799 nghttp2_frame_trail_padlen(&iframe->frame, iframe->padlen);
5817 nghttp2_inbound_frame *iframe = &session->iframe;
5853 switch (iframe->state) {
5855 readlen = nghttp2_min(inlen, iframe->payloadleft);
5858 iframe->payloadleft],
5863 iframe->payloadleft -= readlen;
5866 if (iframe->payloadleft == 0) {
5868 iframe->state = NGHTTP2_IB_READ_FIRST_SETTINGS;
5875 readlen = inbound_frame_buf_read(iframe, in, last);
5878 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
5882 if (iframe->sbuf.pos[3] != NGHTTP2_SETTINGS ||
5883 (iframe->sbuf.pos[4] & NGHTTP2_FLAG_ACK)) {
5904 iframe->state = NGHTTP2_IB_READ_HEAD;
5912 readlen = inbound_frame_buf_read(iframe, in, last);
5915 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
5919 nghttp2_frame_unpack_frame_hd(&iframe->frame.hd, iframe->sbuf.pos);
5920 iframe->payloadleft = iframe->frame.hd.length;
5923 iframe->frame.hd.length, iframe->frame.hd.type,
5924 iframe->frame.hd.flags, iframe->frame.hd.stream_id);
5926 if (iframe->frame.hd.length > session->local_settings.max_frame_size) {
5927 DEBUGF("recv: length is too large %zu > %u\n", iframe->frame.hd.length,
5940 switch (iframe->frame.hd.type) {
5944 iframe->frame.hd.flags &=
5951 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
5956 iframe->frame.hd.stream_id);
5957 iframe->state = NGHTTP2_IB_IGN_DATA;
5965 rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
5978 iframe->state = NGHTTP2_IB_READ_PAD_DATA;
5982 iframe->state = NGHTTP2_IB_READ_DATA;
5989 iframe->frame.hd.flags &=
5993 rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
6005 iframe->state = NGHTTP2_IB_READ_NBYTE;
6009 pri_fieldlen = nghttp2_frame_priority_len(iframe->frame.hd.flags);
6012 if (iframe->payloadleft < pri_fieldlen) {
6014 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6018 iframe->state = NGHTTP2_IB_READ_NBYTE;
6020 inbound_frame_set_mark(iframe, pri_fieldlen);
6028 rv = session_call_on_begin_frame(session, &iframe->frame.hd);
6043 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6049 session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
6053 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6058 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6062 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6068 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6070 if (iframe->payloadleft != NGHTTP2_PRIORITY_SPECLEN) {
6073 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6078 iframe->state = NGHTTP2_IB_READ_NBYTE;
6080 inbound_frame_set_mark(iframe, NGHTTP2_PRIORITY_SPECLEN);
6086 switch (iframe->frame.hd.type) {
6096 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6098 if (iframe->payloadleft != 4) {
6100 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6104 iframe->state = NGHTTP2_IB_READ_NBYTE;
6106 inbound_frame_set_mark(iframe, 4);
6112 iframe->frame.hd.flags &= NGHTTP2_FLAG_ACK;
6114 if ((iframe->frame.hd.length % NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH) ||
6115 ((iframe->frame.hd.flags & NGHTTP2_FLAG_ACK) &&
6116 iframe->payloadleft > 0)) {
6118 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6124 !(iframe->frame.hd.flags & NGHTTP2_FLAG_ACK)) {
6128 iframe->state = NGHTTP2_IB_READ_SETTINGS;
6130 if (iframe->payloadleft) {
6135 iframe->max_niv =
6136 iframe->frame.hd.length / NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH + 1;
6138 if (iframe->max_niv - 1 > session->max_settings) {
6148 iframe->iv = nghttp2_mem_malloc(mem, sizeof(nghttp2_settings_entry) *
6149 iframe->max_niv);
6151 if (!iframe->iv) {
6155 min_header_table_size_entry = &iframe->iv[iframe->max_niv - 1];
6160 inbound_frame_set_mark(iframe, NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH);
6166 inbound_frame_set_mark(iframe, 0);
6172 iframe->frame.hd.flags &=
6175 rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
6187 iframe->state = NGHTTP2_IB_READ_NBYTE;
6191 if (iframe->payloadleft < 4) {
6193 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6197 iframe->state = NGHTTP2_IB_READ_NBYTE;
6199 inbound_frame_set_mark(iframe, 4);
6205 iframe->frame.hd.flags &= NGHTTP2_FLAG_ACK;
6207 if (iframe->payloadleft != 8) {
6209 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6213 iframe->state = NGHTTP2_IB_READ_NBYTE;
6214 inbound_frame_set_mark(iframe, 8);
6220 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6222 if (iframe->payloadleft < 8) {
6224 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6228 iframe->state = NGHTTP2_IB_READ_NBYTE;
6229 inbound_frame_set_mark(iframe, 8);
6248 iframe->frame.hd.type)) {
6254 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6261 iframe->state = NGHTTP2_IB_READ_EXTENSION_PAYLOAD;
6265 switch (iframe->frame.hd.type) {
6270 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6276 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6277 iframe->frame.ext.payload = &iframe->ext_frame_payload.altsvc;
6281 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6285 if (iframe->payloadleft < 2) {
6287 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6293 iframe->state = NGHTTP2_IB_READ_NBYTE;
6294 inbound_frame_set_mark(iframe, 2);
6300 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6306 iframe->frame.ext.payload = &iframe->ext_frame_payload.origin;
6308 if (session->server || iframe->frame.hd.stream_id ||
6309 (iframe->frame.hd.flags & 0xf0)) {
6311 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6315 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6317 if (iframe->payloadleft) {
6318 iframe->raw_lbuf = nghttp2_mem_malloc(mem, iframe->payloadleft);
6320 if (iframe->raw_lbuf == NULL) {
6324 nghttp2_buf_wrap_init(&iframe->lbuf, iframe->raw_lbuf,
6325 iframe->payloadleft);
6330 iframe->state = NGHTTP2_IB_READ_ORIGIN_PAYLOAD;
6337 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6343 iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
6344 iframe->frame.ext.payload =
6345 &iframe->ext_frame_payload.priority_update;
6357 if (iframe->payloadleft < 4) {
6359 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6364 iframe->payloadleft > sizeof(iframe->raw_sbuf)) {
6366 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6372 iframe->state = NGHTTP2_IB_READ_NBYTE;
6373 inbound_frame_set_mark(iframe, iframe->payloadleft);
6379 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6387 switch (iframe->state) {
6395 rv = session_call_on_begin_frame(session, &iframe->frame.hd);
6408 readlen = inbound_frame_buf_read(iframe, in, last);
6410 iframe->payloadleft -= readlen;
6413 iframe->payloadleft, nghttp2_buf_mark_avail(&iframe->sbuf));
6415 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6419 switch (iframe->frame.hd.type) {
6421 if (iframe->padlen == 0 &&
6422 (iframe->frame.hd.flags & NGHTTP2_FLAG_PADDED)) {
6423 pri_fieldlen = nghttp2_frame_priority_len(iframe->frame.hd.flags);
6424 padlen = inbound_frame_compute_pad(iframe);
6426 (size_t)padlen + pri_fieldlen > 1 + iframe->payloadleft) {
6434 iframe->frame.headers.padlen = (size_t)padlen;
6437 if (iframe->payloadleft < pri_fieldlen) {
6439 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6442 iframe->state = NGHTTP2_IB_READ_NBYTE;
6443 inbound_frame_set_mark(iframe, pri_fieldlen);
6447 inbound_frame_set_mark(iframe, 0);
6458 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6464 session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
6468 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6473 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6477 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6488 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6502 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6510 if (iframe->padlen == 0 &&
6511 (iframe->frame.hd.flags & NGHTTP2_FLAG_PADDED)) {
6512 padlen = inbound_frame_compute_pad(iframe);
6514 > 1 + iframe->payloadleft) {
6524 iframe->frame.push_promise.padlen = (size_t)padlen;
6526 if (iframe->payloadleft < 4) {
6528 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6532 iframe->state = NGHTTP2_IB_READ_NBYTE;
6534 inbound_frame_set_mark(iframe, 4);
6546 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6552 session, iframe->frame.push_promise.promised_stream_id,
6557 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6562 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6566 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6575 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6586 debuglen = iframe->frame.hd.length - 8;
6589 iframe->raw_lbuf = nghttp2_mem_malloc(mem, debuglen);
6591 if (iframe->raw_lbuf == NULL) {
6595 nghttp2_buf_wrap_init(&iframe->lbuf, iframe->raw_lbuf, debuglen);
6600 iframe->state = NGHTTP2_IB_READ_GOAWAY_DEBUG;
6610 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6620 origin_len = nghttp2_get_uint16(iframe->sbuf.pos);
6624 if (origin_len > iframe->payloadleft) {
6626 iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
6630 if (iframe->frame.hd.length > 2) {
6631 iframe->raw_lbuf =
6632 nghttp2_mem_malloc(mem, iframe->frame.hd.length - 2);
6634 if (iframe->raw_lbuf == NULL) {
6638 nghttp2_buf_wrap_init(&iframe->lbuf, iframe->raw_lbuf,
6639 iframe->frame.hd.length);
6644 iframe->state = NGHTTP2_IB_READ_ALTSVC_PAYLOAD;
6649 nghttp2_get_uint32(iframe->sbuf.pos) & NGHTTP2_STREAM_ID_MASK);
6673 if (iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK) {
6680 readlen = inbound_frame_payload_readlen(iframe, in, last);
6683 iframe->payloadleft - readlen);
6686 iframe, iframe->payloadleft - readlen, readlen);
6693 trail_padlen = nghttp2_frame_trail_padlen(&iframe->frame, iframe->padlen);
6695 final = (iframe->frame.hd.flags & NGHTTP2_FLAG_END_HEADERS) &&
6696 iframe->payloadleft - (size_t)data_readlen == trail_padlen;
6704 inflate_header_block(session, &iframe->frame, &hd_proclen,
6706 iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK);
6712 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6718 iframe->payloadleft -= hd_proclen;
6728 iframe->payloadleft -= hd_proclen;
6733 iframe->frame.hd.type == NGHTTP2_PUSH_PROMISE
6734 ? iframe->frame.push_promise.promised_stream_id
6735 : iframe->frame.hd.stream_id,
6741 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6746 iframe->payloadleft -= readlen;
6750 if (iframe->payloadleft == 0) {
6754 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
6760 iframe->payloadleft -= readlen;
6763 if (iframe->payloadleft) {
6767 if ((iframe->frame.hd.flags & NGHTTP2_FLAG_END_HEADERS) == 0) {
6769 inbound_frame_set_mark(iframe, NGHTTP2_FRAME_HDLEN);
6771 iframe->padlen = 0;
6773 if (iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK) {
6774 iframe->state = NGHTTP2_IB_EXPECT_CONTINUATION;
6776 iframe->state = NGHTTP2_IB_IGN_CONTINUATION;
6779 if (iframe->state == NGHTTP2_IB_READ_HEADER_BLOCK) {
6794 readlen = inbound_frame_payload_readlen(iframe, in, last);
6795 iframe->payloadleft -= readlen;
6799 iframe->payloadleft);
6801 if (iframe->payloadleft) {
6805 switch (iframe->frame.hd.type) {
6827 assert(iframe->state == NGHTTP2_IB_IGN_ALL);
6833 readlen = inbound_frame_buf_read(iframe, in, last);
6834 iframe->payloadleft -= readlen;
6838 iframe->payloadleft);
6840 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6845 inbound_frame_set_settings_entry(iframe);
6847 if (iframe->payloadleft) {
6848 inbound_frame_set_mark(iframe, NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH);
6858 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6868 readlen = inbound_frame_payload_readlen(iframe, in, last);
6871 iframe->lbuf.last = nghttp2_cpymem(iframe->lbuf.last, in, readlen);
6873 iframe->payloadleft -= readlen;
6878 iframe->payloadleft);
6880 if (iframe->payloadleft) {
6881 assert(nghttp2_buf_avail(&iframe->lbuf) > 0);
6892 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6902 if (iframe->state == NGHTTP2_IB_EXPECT_CONTINUATION) {
6913 readlen = inbound_frame_buf_read(iframe, in, last);
6916 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6920 nghttp2_frame_unpack_frame_hd(&cont_hd, iframe->sbuf.pos);
6921 iframe->payloadleft = cont_hd.length;
6927 cont_hd.stream_id != iframe->frame.hd.stream_id) {
6930 iframe->frame.hd.stream_id, NGHTTP2_CONTINUATION,
6944 iframe->frame.hd.flags =
6945 (uint8_t)(iframe->frame.hd.flags |
6947 iframe->frame.hd.length += cont_hd.length;
6951 if (iframe->state == NGHTTP2_IB_EXPECT_CONTINUATION) {
6952 iframe->state = NGHTTP2_IB_READ_HEADER_BLOCK;
6960 iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
6967 readlen = inbound_frame_buf_read(iframe, in, last);
6969 iframe->payloadleft -= readlen;
6972 iframe->payloadleft, nghttp2_buf_mark_avail(&iframe->sbuf));
6974 if (nghttp2_buf_mark_avail(&iframe->sbuf)) {
6984 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
6990 nghttp2_session_consume(session, iframe->frame.hd.stream_id, readlen);
6996 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7000 stream = nghttp2_session_get_stream(session, iframe->frame.hd.stream_id);
7004 iframe->payloadleft ||
7005 (iframe->frame.hd.flags & NGHTTP2_FLAG_END_STREAM) == 0);
7013 padlen = inbound_frame_compute_pad(iframe);
7023 iframe->frame.data.padlen = (size_t)padlen;
7025 iframe->state = NGHTTP2_IB_READ_DATA;
7029 stream = nghttp2_session_get_stream(session, iframe->frame.hd.stream_id);
7033 iframe->state = NGHTTP2_IB_IGN_DATA;
7039 readlen = inbound_frame_payload_readlen(iframe, in, last);
7040 iframe->payloadleft -= readlen;
7044 iframe->payloadleft);
7055 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7061 iframe->payloadleft ||
7062 (iframe->frame.hd.flags & NGHTTP2_FLAG_END_STREAM) == 0);
7068 iframe, iframe->payloadleft, readlen);
7079 rv = nghttp2_session_consume(session, iframe->frame.hd.stream_id,
7086 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7105 if (iframe->state == NGHTTP2_IB_IGN_DATA) {
7111 session, iframe->frame.hd.stream_id, NGHTTP2_PROTOCOL_ERROR);
7116 iframe->state = NGHTTP2_IB_IGN_DATA;
7122 session, iframe->frame.hd.flags, iframe->frame.hd.stream_id,
7135 if (iframe->payloadleft) {
7150 readlen = inbound_frame_payload_readlen(iframe, in, last);
7151 iframe->payloadleft -= readlen;
7155 iframe->payloadleft);
7166 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7179 if (iframe->state == NGHTTP2_IB_IGN_ALL) {
7185 if (iframe->payloadleft) {
7197 readlen = inbound_frame_payload_readlen(iframe, in, last);
7198 iframe->payloadleft -= readlen;
7202 iframe->payloadleft);
7214 iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
7220 if (iframe->payloadleft > 0) {
7235 readlen = inbound_frame_payload_readlen(iframe, in, last);
7237 iframe->lbuf.last = nghttp2_cpymem(iframe->lbuf.last, in, readlen);
7239 iframe->payloadleft -= readlen;
7244 iframe->payloadleft);
7246 if (iframe->payloadleft) {
7247 assert(nghttp2_buf_avail(&iframe->lbuf) > 0);
7263 readlen = inbound_frame_payload_readlen(iframe, in, last);
7266 iframe->lbuf.last = nghttp2_cpymem(iframe->lbuf.last, in, readlen);
7268 iframe->payloadleft -= readlen;
7273 iframe->payloadleft);
7275 if (iframe->payloadleft) {
7276 assert(nghttp2_buf_avail(&iframe->lbuf) > 0);
7287 if (iframe->state == NGHTTP2_IB_IGN_ALL) {