Mercurial > hg > nginx
comparison src/event/quic/ngx_event_quic_migration.c @ 9099:9462c514a653 quic
QUIC: fixed addr_text after migration (ticket #2488).
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.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Thu, 27 Apr 2023 19:52:40 +0400 |
parents | d565cf69ff5d |
children | bba136612fe4 |
comparison
equal
deleted
inserted
replaced
9098:d565cf69ff5d | 9099:9462c514a653 |
---|---|
385 | 385 |
386 | 386 |
387 static void | 387 static void |
388 ngx_quic_set_connection_path(ngx_connection_t *c, ngx_quic_path_t *path) | 388 ngx_quic_set_connection_path(ngx_connection_t *c, ngx_quic_path_t *path) |
389 { | 389 { |
390 size_t len; | |
391 | |
392 ngx_memcpy(c->sockaddr, path->sockaddr, path->socklen); | 390 ngx_memcpy(c->sockaddr, path->sockaddr, path->socklen); |
393 c->socklen = path->socklen; | 391 c->socklen = path->socklen; |
394 | 392 |
395 if (c->addr_text.data) { | 393 if (c->addr_text.data) { |
396 len = ngx_min(c->addr_text.len, path->addr_text.len); | 394 c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->socklen, |
397 | 395 c->addr_text.data, |
398 ngx_memcpy(c->addr_text.data, path->addr_text.data, len); | 396 c->listening->addr_text_max_len, 0); |
399 c->addr_text.len = len; | |
400 } | 397 } |
401 | 398 |
402 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, | 399 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, |
403 "quic send path set to seq:%uL addr:%V", | 400 "quic send path set to seq:%uL addr:%V", |
404 path->seqnum, &path->addr_text); | 401 path->seqnum, &path->addr_text); |