diff options
author | Roman Arutyunyan <arut@nginx.com> | 2021-03-11 15:22:18 +0300 |
---|---|---|
committer | Roman Arutyunyan <arut@nginx.com> | 2021-03-11 15:22:18 +0300 |
commit | daf9c643d1ee3ee0f2b00bf9b75966f055e67821 (patch) | |
tree | eb0bea1e2ceeb20681aab2fa40db016784d51932 /src | |
parent | 496a43485417afe7c9b5191b683f60ed7bcd4101 (diff) | |
download | nginx-daf9c643d1ee3ee0f2b00bf9b75966f055e67821.tar.gz nginx-daf9c643d1ee3ee0f2b00bf9b75966f055e67821.zip |
QUIC: do not reallocate c->sockaddr.
When a connection is created, enough memory is allocated to accomodate
any future address change.
Diffstat (limited to 'src')
-rw-r--r-- | src/event/ngx_event_udp.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/event/ngx_event_udp.c b/src/event/ngx_event_udp.c index 884b1cd51..a15e31f41 100644 --- a/src/event/ngx_event_udp.c +++ b/src/event/ngx_event_udp.c @@ -24,6 +24,7 @@ static ngx_connection_t *ngx_lookup_udp_connection(ngx_listening_t *ls, void ngx_event_recvmsg(ngx_event_t *ev) { + size_t len; ssize_t n; ngx_str_t key; ngx_buf_t buf; @@ -302,7 +303,15 @@ ngx_event_recvmsg(ngx_event_t *ev) return; } - c->sockaddr = ngx_palloc(c->pool, socklen); + len = socklen; + +#if (NGX_QUIC) + if (ls->quic) { + len = NGX_SOCKADDRLEN; + } +#endif + + c->sockaddr = ngx_palloc(c->pool, len); if (c->sockaddr == NULL) { ngx_close_accepted_udp_connection(c); return; @@ -704,13 +713,6 @@ ngx_lookup_udp_connection(ngx_listening_t *ls, ngx_str_t *key, } #endif - if (c->socklen < socklen) { - c->sockaddr = ngx_palloc(c->pool, socklen); - if (c->sockaddr == NULL) { - return c; - } - } - ngx_memcpy(c->sockaddr, sockaddr, socklen); c->socklen = socklen; } |