Added parsing of RESET_STREAM and STOP_SENDING frames

This commit is contained in:
Vladimir Homutov 2020-03-18 16:35:11 +03:00
parent 04d037b239
commit 50f919cec4
3 changed files with 43 additions and 0 deletions

View File

@ -808,6 +808,23 @@ ngx_quic_payload_handler(ngx_connection_t *c, ngx_quic_header_t *pkt)
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);

View File

@ -423,6 +423,17 @@ ngx_quic_parse_frame(u_char *start, u_char *end, ngx_quic_frame_t *frame)
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;
}

View File

@ -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
};