]> git.kaiwu.me - nginx.git/commitdiff
Fixed handling of UNIX-domain sockets.
authorRuslan Ermilov <ru@nginx.com>
Mon, 9 Dec 2013 06:16:44 +0000 (10:16 +0400)
committerRuslan Ermilov <ru@nginx.com>
Mon, 9 Dec 2013 06:16:44 +0000 (10:16 +0400)
When evaluating $local_port, $server_port, and $server_addr,
UNIX-domain sockets were mistakenly interpreted as IPv4 sockets.

src/core/ngx_connection.c
src/http/ngx_http_variables.c

index 4d73eb3e00e30b98d955fc070d7b4e4167672917..57e26912da14e1044e79cc8a3e49c153dfebcaa2 100644 (file)
@@ -1095,6 +1095,12 @@ ngx_connection_local_sockaddr(ngx_connection_t *c, ngx_str_t *s,
         break;
 #endif
 
+#if (NGX_HAVE_UNIX_DOMAIN)
+    case AF_UNIX:
+        addr = 1;
+        break;
+#endif
+
     default: /* AF_INET */
         sin = (struct sockaddr_in *) c->local_sockaddr;
         addr = sin->sin_addr.s_addr;
index e49d2023b8e8754eb9058ba4471b50381a083c8e..8b86d5a9acee9ceddb97ef6096587644759fddf6 100644 (file)
@@ -1185,6 +1185,12 @@ ngx_http_variable_remote_port(ngx_http_request_t *r,
         break;
 #endif
 
+#if (NGX_HAVE_UNIX_DOMAIN)
+    case AF_UNIX:
+        port = 0;
+        break;
+#endif
+
     default: /* AF_INET */
         sin = (struct sockaddr_in *) r->connection->sockaddr;
         port = ntohs(sin->sin_port);
@@ -1263,6 +1269,12 @@ ngx_http_variable_server_port(ngx_http_request_t *r,
         break;
 #endif
 
+#if (NGX_HAVE_UNIX_DOMAIN)
+    case AF_UNIX:
+        port = 0;
+        break;
+#endif
+
     default: /* AF_INET */
         sin = (struct sockaddr_in *) r->connection->local_sockaddr;
         port = ntohs(sin->sin_port);