Mercurial > hg > nginx-quic
comparison src/stream/ngx_stream_proxy_module.c @ 6593:b3b7e33083ac
Introduced ngx_inet_get_port() and ngx_inet_set_port() functions.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Mon, 20 Jun 2016 11:50:39 +0300 |
parents | 04d8d1f85649 |
children | 3c87b82b17d4 |
comparison
equal
deleted
inserted
replaced
6592:2c7b488a61fb | 6593:b3b7e33083ac |
---|---|
444 | 444 |
445 static ngx_int_t | 445 static ngx_int_t |
446 ngx_stream_proxy_set_local(ngx_stream_session_t *s, ngx_stream_upstream_t *u, | 446 ngx_stream_proxy_set_local(ngx_stream_session_t *s, ngx_stream_upstream_t *u, |
447 ngx_stream_upstream_local_t *local) | 447 ngx_stream_upstream_local_t *local) |
448 { | 448 { |
449 ngx_addr_t *addr; | 449 ngx_addr_t *addr; |
450 ngx_connection_t *c; | 450 ngx_connection_t *c; |
451 struct sockaddr_in *sin; | |
452 #if (NGX_HAVE_INET6) | |
453 struct sockaddr_in6 *sin6; | |
454 #endif | |
455 | 451 |
456 if (local == NULL) { | 452 if (local == NULL) { |
457 u->peer.local = NULL; | 453 u->peer.local = NULL; |
458 return NGX_OK; | 454 return NGX_OK; |
459 } | 455 } |
482 if (addr->sockaddr == NULL) { | 478 if (addr->sockaddr == NULL) { |
483 return NGX_ERROR; | 479 return NGX_ERROR; |
484 } | 480 } |
485 | 481 |
486 ngx_memcpy(addr->sockaddr, c->sockaddr, c->socklen); | 482 ngx_memcpy(addr->sockaddr, c->sockaddr, c->socklen); |
487 | 483 ngx_inet_set_port(addr->sockaddr, 0); |
488 switch (addr->sockaddr->sa_family) { | |
489 | |
490 case AF_INET: | |
491 sin = (struct sockaddr_in *) addr->sockaddr; | |
492 sin->sin_port = 0; | |
493 break; | |
494 | |
495 #if (NGX_HAVE_INET6) | |
496 case AF_INET6: | |
497 sin6 = (struct sockaddr_in6 *) addr->sockaddr; | |
498 sin6->sin6_port = 0; | |
499 break; | |
500 #endif | |
501 } | |
502 | 484 |
503 addr->name = c->addr_text; | 485 addr->name = c->addr_text; |
504 u->peer.local = addr; | 486 u->peer.local = addr; |
505 | 487 |
506 return NGX_OK; | 488 return NGX_OK; |