comparison src/event/ngx_event_udp.c @ 8381:d62a16fff3a4 quic

QUIC: do not reallocate c->sockaddr. When a connection is created, enough memory is allocated to accomodate any future address change.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 11 Mar 2021 15:22:18 +0300
parents 45db1b5c1706
children db58c7ef1d7c
comparison
equal deleted inserted replaced
8380:90ae21799f67 8381:d62a16fff3a4
22 22
23 23
24 void 24 void
25 ngx_event_recvmsg(ngx_event_t *ev) 25 ngx_event_recvmsg(ngx_event_t *ev)
26 { 26 {
27 size_t len;
27 ssize_t n; 28 ssize_t n;
28 ngx_str_t key; 29 ngx_str_t key;
29 ngx_buf_t buf; 30 ngx_buf_t buf;
30 ngx_log_t *log; 31 ngx_log_t *log;
31 ngx_err_t err; 32 ngx_err_t err;
300 if (c->pool == NULL) { 301 if (c->pool == NULL) {
301 ngx_close_accepted_udp_connection(c); 302 ngx_close_accepted_udp_connection(c);
302 return; 303 return;
303 } 304 }
304 305
305 c->sockaddr = ngx_palloc(c->pool, socklen); 306 len = socklen;
307
308 #if (NGX_QUIC)
309 if (ls->quic) {
310 len = NGX_SOCKADDRLEN;
311 }
312 #endif
313
314 c->sockaddr = ngx_palloc(c->pool, len);
306 if (c->sockaddr == NULL) { 315 if (c->sockaddr == NULL) {
307 ngx_close_accepted_udp_connection(c); 316 ngx_close_accepted_udp_connection(c);
308 return; 317 return;
309 } 318 }
310 319
702 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, 711 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
703 "client migrated to %V", &addr); 712 "client migrated to %V", &addr);
704 } 713 }
705 #endif 714 #endif
706 715
707 if (c->socklen < socklen) {
708 c->sockaddr = ngx_palloc(c->pool, socklen);
709 if (c->sockaddr == NULL) {
710 return c;
711 }
712 }
713
714 ngx_memcpy(c->sockaddr, sockaddr, socklen); 716 ngx_memcpy(c->sockaddr, sockaddr, socklen);
715 c->socklen = socklen; 717 c->socklen = socklen;
716 } 718 }
717 } 719 }
718 720