]> git.kaiwu.me - nginx.git/commitdiff
MAX_DATA frame parser/handler.
authorSergey Kandaurov <pluknet@nginx.com>
Wed, 18 Mar 2020 20:26:26 +0000 (23:26 +0300)
committerSergey Kandaurov <pluknet@nginx.com>
Wed, 18 Mar 2020 20:26:26 +0000 (23:26 +0300)
src/event/ngx_event_quic.c
src/event/ngx_event_quic_transport.c
src/event/ngx_event_quic_transport.h

index c16c19ad12eeb297b032cf52ba94e5dd01b9a8de..a58a0aaba946ce67393eef63cb2e10c213170bfd 100644 (file)
@@ -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"
index cd971fb36e28c08da07c382361f45116041aa549..5527323a39a8208910505846d8fb3ebea92f1bca 100644 (file)
@@ -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);
index d09dbfedb51571a3d2e0bc756cf184fb168296d6..565161f933638af23e0c025cf700c193e72d0816 100644 (file)
@@ -109,6 +109,11 @@ typedef struct {
 } ngx_quic_stream_frame_t;
 
 
+typedef struct {
+    uint64_t                                    max_data;
+} ngx_quic_max_data_frame_t;
+
+
 typedef struct {
     uint64_t                                    error_code;
     uint64_t                                    frame_type;
@@ -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;