Mercurial > hg > nginx-quic
changeset 7697:78540e2160d0 quic
Added parsing of RESET_STREAM and STOP_SENDING frames
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Wed, 18 Mar 2020 16:35:11 +0300 |
parents | 31f7c697b6d9 |
children | 253cf267f95a |
files | src/event/ngx_event_quic.c src/event/ngx_event_quic_transport.c src/event/ngx_event_quic_transport.h |
diffstat | 3 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -808,6 +808,23 @@ ngx_quic_payload_handler(ngx_connection_ ack_this = 1; break; + case NGX_QUIC_FT_RESET_STREAM: + ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0, + "RESET STREAM frame" + " { id 0x%xi error_code 0x%xi final_size 0x%xi }", + frame.u.reset_stream.id, + frame.u.reset_stream.error_code, + frame.u.reset_stream.final_size); + break; + + case NGX_QUIC_FT_STOP_SENDING: + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, + "STOP SENDING frame" + " { id 0x%xi error_code 0x%xi}", + frame.u.stop_sending.id, + frame.u.stop_sending.error_code); + break; + default: ngx_log_error(NGX_LOG_INFO, c->log, 0, "unsupported frame type 0x%xd in packet", frame.type);
--- a/src/event/ngx_event_quic_transport.c +++ b/src/event/ngx_event_quic_transport.c @@ -423,6 +423,17 @@ ngx_quic_parse_frame(u_char *start, u_ch break; + case NGX_QUIC_FT_RESET_STREAM: + frame->u.reset_stream.id = ngx_quic_parse_int(&p); + frame->u.reset_stream.error_code = ngx_quic_parse_int(&p); + frame->u.reset_stream.final_size = ngx_quic_parse_int(&p); + break; + + case NGX_QUIC_FT_STOP_SENDING: + frame->u.stop_sending.id = ngx_quic_parse_int(&p); + frame->u.stop_sending.error_code = ngx_quic_parse_int(&p); + break; + default: return NGX_ERROR; }
--- a/src/event/ngx_event_quic_transport.h +++ b/src/event/ngx_event_quic_transport.h @@ -116,6 +116,19 @@ typedef struct { } ngx_quic_close_frame_t; +typedef struct { + uint64_t id; + uint64_t error_code; + uint64_t final_size; +} ngx_quic_reset_stream_frame_t; + + +typedef struct { + uint64_t id; + uint64_t error_code; +} ngx_quic_stop_sending_frame_t; + + typedef struct ngx_quic_frame_s ngx_quic_frame_t; struct ngx_quic_frame_s { @@ -128,6 +141,8 @@ struct ngx_quic_frame_s { ngx_quic_new_conn_id_frame_t ncid; ngx_quic_stream_frame_t stream; ngx_quic_close_frame_t close; + ngx_quic_reset_stream_frame_t reset_stream; + ngx_quic_stop_sending_frame_t stop_sending; } u; u_char info[128]; // for debug };