Mercurial > hg > nginx
changeset 8943:118a34e32121 quic
QUIC: added missing check for backup path existence.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Thu, 16 Dec 2021 11:42:28 +0300 |
parents | 5c86189a1c1b |
children | b7284807b4fa |
files | src/event/quic/ngx_event_quic_migration.c |
diffstat | 1 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/quic/ngx_event_quic_migration.c Fri Dec 24 15:53:59 2021 +0300 +++ b/src/event/quic/ngx_event_quic_migration.c Thu Dec 16 11:42:28 2021 +0300 @@ -81,6 +81,7 @@ ngx_quic_handle_path_response_frame(ngx_connection_t *c, ngx_quic_path_challenge_frame_t *f) { + ngx_uint_t rst; ngx_queue_t *q; ngx_quic_path_t *path, *prev; ngx_quic_connection_t *qc; @@ -127,13 +128,21 @@ * unless the only change in the peer's address is its port number. */ - prev = qc->backup->path; + rst = 1; + + if (qc->backup) { + prev = qc->backup->path; - if (ngx_cmp_sockaddr(prev->sockaddr, prev->socklen, - path->sockaddr, path->socklen, 0) - != NGX_OK) - { - /* address has changed */ + if (ngx_cmp_sockaddr(prev->sockaddr, prev->socklen, + path->sockaddr, path->socklen, 0) + == NGX_OK) + { + /* address did not change */ + rst = 0; + } + } + + if (rst) { ngx_memzero(&qc->congestion, sizeof(ngx_quic_congestion_t)); qc->congestion.window = ngx_min(10 * qc->tp.max_udp_payload_size,