diff src/event/quic/ngx_event_quic_streams.c @ 8967:3789f4a56d65 quic

QUIC: return written size from ngx_quic_write_chain(). This allows to escape calculating it before calling the function.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 13 Jan 2022 11:34:42 +0300
parents 5acd0d89d8c2
children 8433913911a9
line wrap: on
line diff
--- a/src/event/quic/ngx_event_quic_streams.c
+++ b/src/event/quic/ngx_event_quic_streams.c
@@ -824,9 +824,10 @@ ngx_quic_stream_send(ngx_connection_t *c
 static ngx_chain_t *
 ngx_quic_stream_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
 {
-    off_t                   n, flow;
+    off_t                   flow;
+    size_t                  n;
     ngx_event_t            *wev;
-    ngx_chain_t            *out, *cl;
+    ngx_chain_t            *out;
     ngx_connection_t       *pc;
     ngx_quic_frame_t       *frame;
     ngx_quic_stream_t      *qs;
@@ -851,17 +852,7 @@ ngx_quic_stream_send_chain(ngx_connectio
         limit = flow;
     }
 
-    n = 0;
-
-    for (cl = in; cl; cl = cl->next) {
-        n += cl->buf->last - cl->buf->pos;
-        if (n >= limit) {
-            n = limit;
-            break;
-        }
-    }
-
-    in = ngx_quic_write_chain(pc, &qs->out, in, limit, 0);
+    in = ngx_quic_write_chain(pc, &qs->out, in, limit, 0, &n);
     if (in == NGX_CHAIN_ERROR) {
         return NGX_CHAIN_ERROR;
     }
@@ -1099,7 +1090,7 @@ ngx_quic_handle_stream_frame(ngx_connect
     }
 
     if (ngx_quic_write_chain(c, &qs->in, frame->data, f->length,
-                             f->offset - qs->recv_offset)
+                             f->offset - qs->recv_offset, NULL)
         == NGX_CHAIN_ERROR)
     {
         return NGX_ERROR;