diff options
author | Roman Arutyunyan <arut@nginx.com> | 2015-02-17 14:26:44 +0300 |
---|---|---|
committer | Roman Arutyunyan <arut@nginx.com> | 2015-02-17 14:26:44 +0300 |
commit | 6337c1d185d4afef6045d51d0382a06c7e66d4f4 (patch) | |
tree | c4cc360393a1c4899496bfbb24b8592911ede7d0 /src | |
parent | 7f3f7fec770ae7af8208fd5cd2a22ca87814ccb1 (diff) | |
download | nginx-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.c | 34 |
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) { |