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;