]> git.kaiwu.me - nginx.git/commitdiff
QUIC: do not artificially delay sending queued frames.
authorSergey Kandaurov <pluknet@nginx.com>
Wed, 19 Aug 2020 10:24:54 +0000 (13:24 +0300)
committerSergey Kandaurov <pluknet@nginx.com>
Wed, 19 Aug 2020 10:24:54 +0000 (13:24 +0300)
This interacts badly with retransmissions of lost packets
and can provoke spurious client retransmits.

src/event/ngx_event_quic.c
src/event/ngx_event_quic.h

index ef57f6cad63cde2a54269e25b0dd1658432f3f21..5a049ed3f9797f261e79425e434092e73f07c8fb 100644 (file)
@@ -84,8 +84,6 @@ typedef struct {
 
     ngx_queue_t                       frames;
     ngx_queue_t                       sent;
-
-    size_t                            frames_len;
 } ngx_quic_send_ctx_t;
 
 
@@ -3351,22 +3349,11 @@ ngx_quic_queue_frame(ngx_quic_connection_t *qc, ngx_quic_frame_t *frame)
     frame->len = ngx_quic_create_frame(NULL, frame);
     /* always succeeds */
 
-    ctx->frames_len += frame->len;
-
     if (qc->closing) {
         return;
     }
 
-    /* TODO: TCP_NODELAY analogue ? TCP_CORK and others... */
-
-    if (ctx->frames_len < NGX_QUIC_MIN_DATA_NODELAY) {
-        if (!qc->push.timer_set) {
-            ngx_add_timer(&qc->push, qc->tp.max_ack_delay);
-        }
-
-    } else {
-        ngx_post_event(&qc->push, &ngx_posted_events);
-    }
+    ngx_post_event(&qc->push, &ngx_posted_events);
 }
 
 
@@ -3463,7 +3450,6 @@ ngx_quic_output_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
 
             ngx_queue_remove(&f->queue);
             ngx_queue_insert_tail(&range, &f->queue);
-            ctx->frames_len -= f->len;
 
             len += f->len;
 
index 2d43defef31259a70f773a269bcd744470af1674..9646b03ac1f9882847cea69aa9642aca1000f936 100644 (file)
 
 #define NGX_QUIC_MIN_INITIAL_SIZE            1200
 
-/* if we have so much data, send immediately */
-/* TODO: configurable ? */
-#define NGX_QUIC_MIN_DATA_NODELAY             512 /* bytes */
-
 #define NGX_QUIC_STREAM_SERVER_INITIATED     0x01
 #define NGX_QUIC_STREAM_UNIDIRECTIONAL       0x02