comparison src/event/quic/ngx_event_quic_migration.c @ 9085: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
comparison
equal deleted inserted replaced
9084:d565cf69ff5d 9085: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);