]> git.kaiwu.me - nginx.git/commitdiff
Fixed transport parameters on a new connection with a valid token.
authorSergey Kandaurov <pluknet@nginx.com>
Mon, 1 Jun 2020 16:16:44 +0000 (19:16 +0300)
committerSergey Kandaurov <pluknet@nginx.com>
Mon, 1 Jun 2020 16:16:44 +0000 (19:16 +0300)
Previously, the retry transport parameter was sent regardless.

src/event/ngx_event_quic.c
src/event/ngx_event_quic_transport.c

index 37b3e4c6fd94baaa70271ad1adae3d786df2b25d..cd5b530c9814d4e172b156c3dd2057bdacc5960b 100644 (file)
@@ -652,7 +652,9 @@ ngx_quic_new_connection(ngx_connection_t *c, ngx_ssl_t *ssl, ngx_quic_tp_t *tp,
         return NGX_ERROR;
     }
 
+#if (NGX_QUIC_DRAFT_VERSION >= 28)
     qc->tp.original_dcid = c->quic->odcid;
+#endif
     qc->tp.initial_scid = c->quic->dcid;
 
     qc->scid.len = pkt->scid.len;
@@ -796,6 +798,9 @@ ngx_quic_retry(ngx_connection_t *c)
     }
 
     c->quic->token = token;
+#if (NGX_QUIC_DRAFT_VERSION < 28)
+    c->quic->tp.original_dcid = c->quic->odcid;
+#endif
     c->quic->tp.retry_scid = c->quic->dcid;
     c->quic->in_retry = 1;
 
index 00df78a598ffea4864d85b66efa8890152719694..3b64aef6d60a6f632b73480539fae973c0e92630 100644 (file)
@@ -1673,15 +1673,15 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp)
 #if (NGX_QUIC_DRAFT_VERSION >= 28)
     len += ngx_quic_tp_strlen(NGX_QUIC_TP_ORIGINAL_DCID, tp->original_dcid);
     len += ngx_quic_tp_strlen(NGX_QUIC_TP_INITIAL_SCID, tp->initial_scid);
-#endif
 
-    if (tp->retry) {
-#if (NGX_QUIC_DRAFT_VERSION >= 28)
+    if (tp->retry_scid.len) {
         len += ngx_quic_tp_strlen(NGX_QUIC_TP_RETRY_SCID, tp->retry_scid);
+    }
 #else
+    if (tp->original_dcid.len) {
         len += ngx_quic_tp_strlen(NGX_QUIC_TP_ORIGINAL_DCID, tp->original_dcid);
-#endif
     }
+#endif
 
     if (pos == NULL) {
         return len;
@@ -1714,15 +1714,15 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp)
 #if (NGX_QUIC_DRAFT_VERSION >= 28)
     ngx_quic_tp_str(NGX_QUIC_TP_ORIGINAL_DCID, tp->original_dcid);
     ngx_quic_tp_str(NGX_QUIC_TP_INITIAL_SCID, tp->initial_scid);
-#endif
 
-    if (tp->retry) {
-#if (NGX_QUIC_DRAFT_VERSION >= 28)
+    if (tp->retry_scid.len) {
         ngx_quic_tp_str(NGX_QUIC_TP_RETRY_SCID, tp->retry_scid);
+    }
 #else
+    if (tp->original_dcid.len) {
         ngx_quic_tp_str(NGX_QUIC_TP_ORIGINAL_DCID, tp->original_dcid);
-#endif
     }
+#endif
 
     return p - pos;
 }