aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2015-02-17 14:26:44 +0300
committerRoman Arutyunyan <arut@nginx.com>2015-02-17 14:26:44 +0300
commit6337c1d185d4afef6045d51d0382a06c7e66d4f4 (patch)
treec4cc360393a1c4899496bfbb24b8592911ede7d0 /src
parent7f3f7fec770ae7af8208fd5cd2a22ca87814ccb1 (diff)
downloadnginx-6337c1d185d4afef6045d51d0382a06c7e66d4f4.tar.gz
nginx-6337c1d185d4afef6045d51d0382a06c7e66d4f4.zip
Core: make ngx_connection_local_sockaddr() always assign address.
Previously, this function checked for connection local address existence and returned error if it was missing. Now a new address is assigned in this case making it possible to call this function not only for accepted connections.
Diffstat (limited to 'src')
-rw-r--r--src/core/ngx_connection.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index b687d76b2..d6c0bdadc 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -1073,33 +1073,33 @@ ngx_connection_local_sockaddr(ngx_connection_t *c, ngx_str_t *s,
struct sockaddr_in6 *sin6;
#endif
- if (c->local_socklen == 0) {
- return NGX_ERROR;
- }
+ addr = 0;
- switch (c->local_sockaddr->sa_family) {
+ if (c->local_socklen) {
+ switch (c->local_sockaddr->sa_family) {
#if (NGX_HAVE_INET6)
- case AF_INET6:
- sin6 = (struct sockaddr_in6 *) c->local_sockaddr;
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *) c->local_sockaddr;
- for (addr = 0, i = 0; addr == 0 && i < 16; i++) {
- addr |= sin6->sin6_addr.s6_addr[i];
- }
+ for (i = 0; addr == 0 && i < 16; i++) {
+ addr |= sin6->sin6_addr.s6_addr[i];
+ }
- break;
+ break;
#endif
#if (NGX_HAVE_UNIX_DOMAIN)
- case AF_UNIX:
- addr = 1;
- break;
+ case AF_UNIX:
+ addr = 1;
+ break;
#endif
- default: /* AF_INET */
- sin = (struct sockaddr_in *) c->local_sockaddr;
- addr = sin->sin_addr.s_addr;
- break;
+ default: /* AF_INET */
+ sin = (struct sockaddr_in *) c->local_sockaddr;
+ addr = sin->sin_addr.s_addr;
+ break;
+ }
}
if (addr == 0) {