# HG changeset patch # User Vladimir Homutov # Date 1639644148 -10800 # Node ID 118a34e32121f64e1dc5a5cd2d018494ca6328ab # Parent 5c86189a1c1b8d65e16f453f77018b37c968c98d QUIC: added missing check for backup path existence. diff --git a/src/event/quic/ngx_event_quic_migration.c b/src/event/quic/ngx_event_quic_migration.c --- a/src/event/quic/ngx_event_quic_migration.c +++ b/src/event/quic/ngx_event_quic_migration.c @@ -81,6 +81,7 @@ ngx_int_t 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 @@ valid: * 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,