summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@nginx.com>2015-01-22 16:23:32 +0300
committerRuslan Ermilov <ru@nginx.com>2015-01-22 16:23:32 +0300
commit3352461916fe6ad4613cb46a2a37a5b76b4282ad (patch)
treed8907cd645291b3f3db67b993a841754cec698ca /src
parent917c47a9185f8317a7b165f2b1ce866682cacaca (diff)
downloadnginx-3352461916fe6ad4613cb46a2a37a5b76b4282ad.tar.gz
nginx-3352461916fe6ad4613cb46a2a37a5b76b4282ad.tar.bz2
Upstream: detect port absence in fastcgi_pass with IP literal.
If fastcgi_pass (or any look-alike that doesn't imply a default port) is specified as an IP literal (as opposed to a hostname), port absence was not detected at configuration time and could result in EADDRNOTAVAIL at run time. Fixed this in such a way that configs like http { server { location / { fastcgi_pass 127.0.0.1; } } upstream 127.0.0.1 { server 10.0.0.1:12345; } } still work. That is, port absence check is delayed until after we make sure there's no explicit upstream with such a name.
Diffstat (limited to 'src')
-rw-r--r--src/http/ngx_http_upstream.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index a41d5b377..7a5b3fdc2 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -5408,7 +5408,7 @@ ngx_http_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags)
uscf->default_port = u->default_port;
uscf->no_port = u->no_port;
- if (u->naddrs == 1) {
+ if (u->naddrs == 1 && (u->port || u->family == AF_UNIX)) {
uscf->servers = ngx_array_create(cf->pool, 1,
sizeof(ngx_http_upstream_server_t));
if (uscf->servers == NULL) {