]> git.kaiwu.me - nginx.git/commitdiff
QUIC: ngx_quic_frames_stream_t made opaque.
authorSergey Kandaurov <pluknet@nginx.com>
Tue, 13 Apr 2021 08:49:52 +0000 (11:49 +0300)
committerSergey Kandaurov <pluknet@nginx.com>
Tue, 13 Apr 2021 08:49:52 +0000 (11:49 +0300)
src/event/quic/ngx_event_quic.h
src/event/quic/ngx_event_quic_ack.c
src/event/quic/ngx_event_quic_connection.h
src/event/quic/ngx_event_quic_streams.c

index 0066c96e6a8de4a2a20adbe0ee8b29485079af03..66395dbcfa731fe8a165a060480faa6d7d02c171 100644 (file)
@@ -70,13 +70,7 @@ typedef struct {
 } ngx_quic_conf_t;
 
 
-typedef struct {
-    uint64_t                   sent;
-    uint64_t                   received;
-    ngx_queue_t                frames;   /* reorder queue */
-    size_t                     total;    /* size of buffered data */
-} ngx_quic_frames_stream_t;
-
+typedef struct ngx_quic_frames_stream_s  ngx_quic_frames_stream_t;
 
 struct ngx_quic_stream_s {
     ngx_rbtree_node_t          node;
@@ -86,7 +80,7 @@ struct ngx_quic_stream_s {
     uint64_t                   acked;
     uint64_t                   send_max_data;
     ngx_buf_t                 *b;
-    ngx_quic_frames_stream_t   fs;
+    ngx_quic_frames_stream_t  *fs;
     ngx_uint_t                 cancelable;  /* unsigned  cancelable:1; */
 };
 
index 8f78ac51e758871eb7b238406fae01eab48dcebd..fc72ae13dc317389de2d1ccfa5036422165cb146 100644 (file)
@@ -498,7 +498,7 @@ ngx_quic_resend_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
             }
 
             b = sn->b;
-            n = sn->fs.received + (b->pos - b->start) + (b->end - b->last);
+            n = sn->fs->received + (b->pos - b->start) + (b->end - b->last);
 
             if (f->u.max_stream_data.limit < n) {
                 f->u.max_stream_data.limit = n;
index eb8507050579505818a876f1cc543675f73832b1..992397a66b931bc84c0597632db02a280626df7a 100644 (file)
@@ -98,6 +98,14 @@ typedef struct {
 } ngx_quic_congestion_t;
 
 
+struct ngx_quic_frames_stream_s {
+    uint64_t                   sent;
+    uint64_t                   received;
+    ngx_queue_t                frames;   /* reorder queue */
+    size_t                     total;    /* size of buffered data */
+};
+
+
 /*
  * 12.3.  Packet Numbers
  *
index 90d6bcea337bcdb63655b8d9a08dd27eacd0f2c3..1174ea11e7dd77f0eef614bd611b2c4b87e08ab9 100644 (file)
@@ -367,7 +367,13 @@ ngx_quic_create_stream(ngx_connection_t *c, uint64_t id, size_t rcvbuf_size)
         return NULL;
     }
 
-    ngx_queue_init(&sn->fs.frames);
+    sn->fs = ngx_pcalloc(pool, sizeof(ngx_quic_frames_stream_t));
+    if (sn->fs == NULL) {
+        ngx_destroy_pool(pool);
+        return NULL;
+    }
+
+    ngx_queue_init(&sn->fs->frames);
 
     log = ngx_palloc(pool, sizeof(ngx_log_t));
     if (log == NULL) {
@@ -503,7 +509,7 @@ ngx_quic_stream_recv(ngx_connection_t *c, u_char *buf, size_t size)
         frame->level = ssl_encryption_application;
         frame->type = NGX_QUIC_FT_MAX_STREAM_DATA;
         frame->u.max_stream_data.id = qs->id;
-        frame->u.max_stream_data.limit = qs->fs.received + (b->pos - b->start)
+        frame->u.max_stream_data.limit = qs->fs->received + (b->pos - b->start)
                                          + (b->end - b->last);
 
         ngx_quic_queue_frame(qc, frame);
@@ -706,7 +712,7 @@ ngx_quic_stream_cleanup_handler(void *data)
                    "quic stream id:0x%xL cleanup", qs->id);
 
     ngx_rbtree_delete(&qc->streams.tree, &qs->node);
-    ngx_quic_free_frames(pc, &qs->fs.frames);
+    ngx_quic_free_frames(pc, &qs->fs->frames);
 
     if (qc->closing) {
         /* schedule handler call to continue ngx_quic_close_connection() */
@@ -834,7 +840,7 @@ ngx_quic_handle_stream_frame(ngx_connection_t *c, ngx_quic_header_t *pkt,
         }
 
         sc = sn->c;
-        fs = &sn->fs;
+        fs = sn->fs;
         b = sn->b;
         window = b->end - b->last;
 
@@ -855,7 +861,7 @@ ngx_quic_handle_stream_frame(ngx_connection_t *c, ngx_quic_header_t *pkt,
         return NGX_OK;
     }
 
-    fs = &sn->fs;
+    fs = sn->fs;
     b = sn->b;
     window = (b->pos - b->start) + (b->end - b->last);
 
@@ -1019,7 +1025,7 @@ ngx_quic_handle_stream_data_blocked_frame(ngx_connection_t *c,
 
     } else {
         b = sn->b;
-        n = sn->fs.received + (b->pos - b->start) + (b->end - b->last);
+        n = sn->fs->received + (b->pos - b->start) + (b->end - b->last);
     }
 
     frame = ngx_quic_alloc_frame(c);