]> git.kaiwu.me - nginx.git/commitdiff
QUIC: fixed addr_text after migration (ticket #2488).
authorRoman Arutyunyan <arut@nginx.com>
Thu, 27 Apr 2023 15:52:40 +0000 (19:52 +0400)
committerRoman Arutyunyan <arut@nginx.com>
Thu, 27 Apr 2023 15:52:40 +0000 (19:52 +0400)
Previously, the post-migration value of addr_text could be truncated, if
it was longer than the previous one.  Also, the new value always included
port, which should not be there.

src/event/quic/ngx_event_quic_migration.c

index 035318764b9970d17d09d36e97232eb672c1359f..cf0438fbc7d3cf20ffd138128783068c929c0162 100644 (file)
@@ -387,16 +387,13 @@ ngx_quic_free_path(ngx_connection_t *c, ngx_quic_path_t *path)
 static void
 ngx_quic_set_connection_path(ngx_connection_t *c, ngx_quic_path_t *path)
 {
-    size_t  len;
-
     ngx_memcpy(c->sockaddr, path->sockaddr, path->socklen);
     c->socklen = path->socklen;
 
     if (c->addr_text.data) {
-        len = ngx_min(c->addr_text.len, path->addr_text.len);
-
-        ngx_memcpy(c->addr_text.data, path->addr_text.data, len);
-        c->addr_text.len = len;
+        c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->socklen,
+                                         c->addr_text.data,
+                                         c->listening->addr_text_max_len, 0);
     }
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,