aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2020-03-18 23:26:26 +0300
committerSergey Kandaurov <pluknet@nginx.com>2020-03-18 23:26:26 +0300
commit31e794f0ad881248f72e87f32e6e594cb222e94d (patch)
tree51091ad2522ab0191006fa483a3d26905b1b5580 /src
parent33d8317dd5fa0b25f27a64a54e1ae099023fb1dd (diff)
downloadnginx-31e794f0ad881248f72e87f32e6e594cb222e94d.tar.gz
nginx-31e794f0ad881248f72e87f32e6e594cb222e94d.zip
MAX_DATA frame parser/handler.
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_quic.c11
-rw-r--r--src/event/ngx_event_quic_transport.c4
-rw-r--r--src/event/ngx_event_quic_transport.h6
3 files changed, 21 insertions, 0 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c
index c16c19ad1..a58a0aaba 100644
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -42,6 +42,7 @@ struct ngx_quic_connection_s {
ngx_quic_frame_t *frames;
ngx_quic_streams_t streams;
+ ngx_uint_t max_data;
};
@@ -823,6 +824,16 @@ ngx_quic_payload_handler(ngx_connection_t *c, ngx_quic_header_t *pkt)
ack_this = 1;
break;
+ case NGX_QUIC_FT_MAX_DATA:
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
+ "MAX_DATA frame"
+ " { Maximum Data %ui }",
+ frame.u.max_data.max_data);
+
+ c->quic->max_data = frame.u.max_data.max_data;
+ ack_this = 1;
+ break;
+
case NGX_QUIC_FT_RESET_STREAM:
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
"RESET STREAM frame"
diff --git a/src/event/ngx_event_quic_transport.c b/src/event/ngx_event_quic_transport.c
index cd971fb36..5527323a3 100644
--- a/src/event/ngx_event_quic_transport.c
+++ b/src/event/ngx_event_quic_transport.c
@@ -424,6 +424,10 @@ ngx_quic_parse_frame(u_char *start, u_char *end, ngx_quic_frame_t *frame)
break;
+ case NGX_QUIC_FT_MAX_DATA:
+ frame->u.max_data.max_data = ngx_quic_parse_int(&p);
+ 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);
diff --git a/src/event/ngx_event_quic_transport.h b/src/event/ngx_event_quic_transport.h
index d09dbfedb..565161f93 100644
--- a/src/event/ngx_event_quic_transport.h
+++ b/src/event/ngx_event_quic_transport.h
@@ -110,6 +110,11 @@ typedef struct {
typedef struct {
+ uint64_t max_data;
+} ngx_quic_max_data_frame_t;
+
+
+typedef struct {
uint64_t error_code;
uint64_t frame_type;
ngx_str_t reason;
@@ -146,6 +151,7 @@ struct ngx_quic_frame_s {
ngx_quic_crypto_frame_t crypto;
ngx_quic_new_conn_id_frame_t ncid;
ngx_quic_stream_frame_t stream;
+ ngx_quic_max_data_frame_t max_data;
ngx_quic_close_frame_t close;
ngx_quic_reset_stream_frame_t reset_stream;
ngx_quic_stop_sending_frame_t stop_sending;