Lines Matching full:frame
56 struct http2_frame *frame = &client->current_frame; in print_http_frames() local
59 LOG_DBG("%sReceived %s Frame :%s", bold, get_frame_type_name(frame->type), reset); in print_http_frames()
60 LOG_DBG(" %sLength:%s %u", blue, reset, frame->length); in print_http_frames()
61 LOG_DBG(" %sType:%s %u (%s)", blue, reset, frame->type, get_frame_type_name(frame->type)); in print_http_frames()
62 LOG_DBG(" %sFlags:%s %u", blue, reset, frame->flags); in print_http_frames()
63 LOG_DBG(" %sStream Identifier:%s %u", blue, reset, frame->stream_identifier); in print_http_frames()
322 struct http2_frame *frame) in send_http2_404() argument
326 ret = send_headers_frame(client, HTTP_404_NOT_FOUND, frame->stream_identifier, NULL, 0, in send_http2_404()
334 frame->stream_identifier, in send_http2_404()
344 struct http2_frame *frame) in send_http2_405() argument
349 frame->stream_identifier, NULL, in send_http2_405()
360 struct http2_frame *frame) in send_http2_409() argument
364 ret = send_headers_frame(client, HTTP_409_CONFLICT, frame->stream_identifier, NULL, in send_http2_409()
374 struct http2_frame *frame, int error_code) in send_http2_500() argument
403 frame->stream_identifier, NULL, 0, NULL, 0) < 0) { in send_http2_500()
410 frame->stream_identifier, HTTP2_FLAG_END_STREAM); in send_http2_500()
415 struct http2_frame *frame, struct http_client_ctx *client) in handle_http2_static_resource() argument
422 return send_http2_405(client, frame); in handle_http2_static_resource()
432 ret = send_headers_frame(client, HTTP_200_OK, frame->stream_identifier, in handle_http2_static_resource()
440 frame->stream_identifier, in handle_http2_static_resource()
455 struct http2_frame *frame, in handle_http2_static_fs_resource() argument
475 return send_http2_405(client, frame); in handle_http2_static_fs_resource()
504 ret = send_headers_frame(client, HTTP_404_NOT_FOUND, frame->stream_identifier, NULL, in handle_http2_static_fs_resource()
524 ret = send_headers_frame(client, HTTP_200_OK, frame->stream_identifier, &res_detail, 0, in handle_http2_static_fs_resource()
541 ret = send_data_frame(client, tmp, len, frame->stream_identifier, in handle_http2_static_fs_resource()
559 static int http2_dynamic_response(struct http_client_ctx *client, struct http2_frame *frame, in http2_dynamic_response() argument
594 ret = send_headers_frame(client, rsp->status, frame->stream_identifier, in http2_dynamic_response()
609 ret = send_data_frame(client, rsp->body, rsp->body_len, frame->stream_identifier, in http2_dynamic_response()
624 struct http2_frame *frame = &client->current_frame; in dynamic_get_del_req_v2() local
648 ret = http2_dynamic_response(client, frame, &response_ctx, status, dynamic_detail); in dynamic_get_del_req_v2()
659 ret = send_data_frame(client, NULL, 0, frame->stream_identifier, in dynamic_get_del_req_v2()
662 LOG_DBG("Cannot send last frame (%d)", ret); in dynamic_get_del_req_v2()
678 struct http2_frame *frame = &client->current_frame; in dynamic_post_put_req_v2() local
695 data_len = MIN(frame->length, client->data_len); in dynamic_post_put_req_v2()
696 frame->length -= data_len; in dynamic_post_put_req_v2()
701 if (frame->length == 0 && is_header_flag_set(frame->flags, HTTP2_FLAG_END_STREAM) && in dynamic_post_put_req_v2()
721 ret = http2_dynamic_response(client, frame, &response_ctx, status, dynamic_detail); in dynamic_post_put_req_v2()
738 ret = http2_dynamic_response(client, frame, &response_ctx, status, dynamic_detail); in dynamic_post_put_req_v2()
745 if (frame->length == 0 && !client->current_stream->end_stream_sent && in dynamic_post_put_req_v2()
746 is_header_flag_set(frame->flags, HTTP2_FLAG_END_STREAM)) { in dynamic_post_put_req_v2()
748 ret = send_data_frame(client, NULL, 0, frame->stream_identifier, in dynamic_post_put_req_v2()
753 ret = http2_dynamic_response(client, frame, &response_ctx, in dynamic_post_put_req_v2()
758 LOG_DBG("Cannot send last frame (%d)", ret); in dynamic_post_put_req_v2()
770 struct http2_frame *frame, struct http_client_ctx *client) in handle_http2_dynamic_resource() argument
782 return send_http2_405(client, frame); in handle_http2_dynamic_resource()
786 ret = send_http2_409(client, frame); in handle_http2_dynamic_resource()
851 * (settings frame). in enter_http2_request()
874 struct http2_frame *frame = &client->current_frame; in enter_http_frame_data_state() local
877 if (frame->stream_identifier == 0) { in enter_http_frame_data_state()
882 stream = find_http_stream_context(client, frame->stream_identifier); in enter_http_frame_data_state()
885 frame->stream_identifier); in enter_http_frame_data_state()
896 stream->window_size -= frame->length; in enter_http_frame_data_state()
897 client->window_size -= frame->length; in enter_http_frame_data_state()
906 struct http2_frame *frame = &client->current_frame; in enter_http_frame_headers_state() local
909 stream = find_http_stream_context(client, frame->stream_identifier); in enter_http_frame_headers_state()
911 LOG_DBG("|| stream ID || %d", frame->stream_identifier); in enter_http_frame_headers_state()
913 stream = allocate_http_stream_context(client, frame->stream_identifier); in enter_http_frame_headers_state()
923 if (!is_header_flag_set(frame->flags, HTTP2_FLAG_END_HEADERS)) { in enter_http_frame_headers_state()
930 /* Reset header capture state for new headers frame */ in enter_http_frame_headers_state()
944 struct http2_frame *frame = &client->current_frame; in enter_http_frame_continuation_state() local
946 if (!is_header_flag_set(frame->flags, HTTP2_FLAG_END_HEADERS)) { in enter_http_frame_continuation_state()
1003 LOG_ERR("Continuation frame expected"); in handle_http_frame_header()
1043 struct http2_frame *frame = &client->current_frame; in handle_http1_to_http2_upgrade() local
1049 /* Create an artificial Data frame, so that we can proceed with HTTP2 in handle_http1_to_http2_upgrade()
1053 frame->stream_identifier = 1; in handle_http1_to_http2_upgrade()
1054 frame->type = HTTP2_DATA_FRAME; in handle_http1_to_http2_upgrade()
1055 frame->length = client->http1_frag_data_len; in handle_http1_to_http2_upgrade()
1057 frame->flags = HTTP2_FLAG_END_STREAM; in handle_http1_to_http2_upgrade()
1059 frame->flags = 0; in handle_http1_to_http2_upgrade()
1063 stream = find_http_stream_context(client, frame->stream_identifier); in handle_http1_to_http2_upgrade()
1065 stream = allocate_http_stream_context(client, frame->stream_identifier); in handle_http1_to_http2_upgrade()
1083 /* The first HTTP/2 frame sent by the server MUST be a server connection in handle_http1_to_http2_upgrade()
1101 frame, client); in handle_http1_to_http2_upgrade()
1108 (struct http_resource_detail_static_fs *)detail, frame, client); in handle_http1_to_http2_upgrade()
1116 frame, client); in handle_http1_to_http2_upgrade()
1134 ret = send_http2_404(client, frame); in handle_http1_to_http2_upgrade()
1144 release_http_stream_context(client, frame->stream_identifier); in handle_http1_to_http2_upgrade()
1156 send_http2_500(client, frame, -ret); in handle_http1_to_http2_upgrade()
1164 struct http2_frame *frame = &client->current_frame; in parse_http_frame_padded_field() local
1170 frame->padding_len = *client->cursor; in parse_http_frame_padded_field()
1173 frame->length--; in parse_http_frame_padded_field()
1175 if (frame->length <= frame->padding_len) { in parse_http_frame_padded_field()
1179 /* Subtract the padding length from frame length now to simplify in parse_http_frame_padded_field()
1181 * frame->padding_len in a separate state. in parse_http_frame_padded_field()
1183 frame->length -= frame->padding_len; in parse_http_frame_padded_field()
1188 clear_header_flag(&frame->flags, HTTP2_FLAG_PADDED); in parse_http_frame_padded_field()
1195 struct http2_frame *frame = &client->current_frame; in parse_http_frame_priority_field() local
1206 frame->length -= HTTP2_HEADERS_FRAME_PRIORITY_LEN; in parse_http_frame_priority_field()
1211 clear_header_flag(&frame->flags, HTTP2_FLAG_PRIORITY); in parse_http_frame_priority_field()
1218 struct http2_frame *frame = &client->current_frame; in handle_http_frame_data() local
1226 (void)send_http2_404(client, frame); in handle_http_frame_data()
1231 if (is_header_flag_set(frame->flags, HTTP2_FLAG_PADDED)) { in handle_http_frame_data()
1242 ret = send_http2_404(client, frame); in handle_http_frame_data()
1249 if (frame->length == 0) { in handle_http_frame_data()
1251 find_http_stream_context(client, frame->stream_identifier); in handle_http_frame_data()
1255 frame->stream_identifier); in handle_http_frame_data()
1270 if (is_header_flag_set(frame->flags, HTTP2_FLAG_END_STREAM)) { in handle_http_frame_data()
1272 release_http_stream_context(client, frame->stream_identifier); in handle_http_frame_data()
1275 /* Whole frame consumed, expect next one. */ in handle_http_frame_data()
1276 if (frame->padding_len > 0) { in handle_http_frame_data()
1288 send_http2_500(client, frame, -ret); in handle_http_frame_data()
1419 struct http2_frame *frame = &client->current_frame; in handle_incomplete_http_header() local
1423 if (client->data_len < frame->length) { in handle_incomplete_http_header()
1424 /* Still did not receive entire frame content */ in handle_incomplete_http_header()
1429 /* Failed to parse header field while the frame is complete in handle_incomplete_http_header()
1430 * and no continuation frame is expected - report protocol in handle_incomplete_http_header()
1439 * continuation frame header can be present in the stream in between in handle_incomplete_http_header()
1444 prev_frame_len = frame->length; in handle_incomplete_http_header()
1445 extra_len = client->data_len - frame->length; in handle_incomplete_http_header()
1452 /* Continuation frame expected. */ in handle_incomplete_http_header()
1453 if (frame->type != HTTP2_CONTINUATION_FRAME) { in handle_incomplete_http_header()
1454 LOG_ERR("Continuation frame expected"); in handle_incomplete_http_header()
1459 /* Now remove continuation frame header from the stream, and proceed in handle_incomplete_http_header()
1464 frame->length += prev_frame_len; in handle_incomplete_http_header()
1474 struct http2_frame *frame = &client->current_frame; in handle_http_frame_headers_end_stream() local
1505 ret = http2_dynamic_response(client, frame, &response_ctx, HTTP_SERVER_DATA_FINAL, in handle_http_frame_headers_end_stream()
1515 ret = send_headers_frame(client, HTTP_200_OK, frame->stream_identifier, in handle_http_frame_headers_end_stream()
1523 ret = send_data_frame(client, NULL, 0, frame->stream_identifier, in handle_http_frame_headers_end_stream()
1526 LOG_DBG("Cannot send last frame (%d)", ret); in handle_http_frame_headers_end_stream()
1533 release_http_stream_context(client, frame->stream_identifier); in handle_http_frame_headers_end_stream()
1540 struct http2_frame *frame = &client->current_frame; in handle_http_frame_headers() local
1546 if (is_header_flag_set(frame->flags, HTTP2_FLAG_PADDED)) { in handle_http_frame_headers()
1553 if (is_header_flag_set(frame->flags, HTTP2_FLAG_PRIORITY)) { in handle_http_frame_headers()
1560 while (frame->length > 0) { in handle_http_frame_headers()
1562 size_t datalen = MIN(client->data_len, frame->length); in handle_http_frame_headers()
1579 if (ret > frame->length) { in handle_http_frame_headers()
1580 LOG_ERR("Protocol error, frame length exceeded"); in handle_http_frame_headers()
1585 frame->length -= ret; in handle_http_frame_headers()
1599 /* More headers to come in the continuation frame. */ in handle_http_frame_headers()
1611 frame, client); in handle_http_frame_headers()
1618 (struct http_resource_detail_static_fs *)detail, frame, client); in handle_http_frame_headers()
1626 frame, client); in handle_http_frame_headers()
1633 ret = send_http2_404(client, frame); in handle_http_frame_headers()
1639 if (is_header_flag_set(frame->flags, HTTP2_FLAG_END_STREAM)) { in handle_http_frame_headers()
1646 if (frame->padding_len > 0) { in handle_http_frame_headers()
1657 send_http2_500(client, frame, -ret); in handle_http_frame_headers()
1665 struct http2_frame *frame = &client->current_frame; in handle_http_frame_priority() local
1669 if (frame->length != HTTP2_PRIORITY_FRAME_LEN) { in handle_http_frame_priority()
1673 if (client->data_len < frame->length) { in handle_http_frame_priority()
1690 struct http2_frame *frame = &client->current_frame; in handle_http_frame_rst_stream() local
1696 if (frame->length != HTTP2_RST_STREAM_FRAME_LEN) { in handle_http_frame_rst_stream()
1700 if (client->data_len < frame->length) { in handle_http_frame_rst_stream()
1704 if (frame->stream_identifier == 0) { in handle_http_frame_rst_stream()
1708 stream_ctx = find_http_stream_context(client, frame->stream_identifier); in handle_http_frame_rst_stream()
1730 struct http2_frame *frame = &client->current_frame; in handle_http_frame_settings() local
1735 if (client->data_len < frame->length) { in handle_http_frame_settings()
1743 if (!is_header_flag_set(frame->flags, HTTP2_FLAG_SETTINGS_ACK)) { in handle_http_frame_settings()
1760 struct http2_frame *frame = &client->current_frame; in handle_http_frame_goaway() local
1765 if (client->data_len < frame->length) { in handle_http_frame_goaway()
1780 struct http2_frame *frame = &client->current_frame; in handle_http_frame_window_update() local
1787 if (client->data_len < frame->length) { in handle_http_frame_window_update()
1810 struct http2_frame *frame = &client->current_frame; in handle_http_frame_padding() local
1817 bytes_consumed = MIN(client->data_len, frame->padding_len); in handle_http_frame_padding()
1820 frame->padding_len -= bytes_consumed; in handle_http_frame_padding()
1822 if (frame->padding_len == 0) { in handle_http_frame_padding()
1860 struct http2_frame *frame = &client->current_frame; in parse_http_frame_header() local
1866 frame->length = sys_get_be24(&buffer[HTTP2_FRAME_LENGTH_OFFSET]); in parse_http_frame_header()
1867 frame->type = buffer[HTTP2_FRAME_TYPE_OFFSET]; in parse_http_frame_header()
1868 frame->flags = buffer[HTTP2_FRAME_FLAGS_OFFSET]; in parse_http_frame_header()
1869 frame->stream_identifier = sys_get_be32( in parse_http_frame_header()
1871 frame->stream_identifier &= HTTP2_FRAME_STREAM_ID_MASK; in parse_http_frame_header()
1872 frame->padding_len = 0; in parse_http_frame_header()
1874 LOG_DBG("Frame len %d type 0x%02x flags 0x%02x id %d", in parse_http_frame_header()
1875 frame->length, frame->type, frame->flags, frame->stream_identifier); in parse_http_frame_header()