Mercurial > hg > nginx
changeset 5977:26c127bab5ef
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.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Thu, 22 Jan 2015 16:23:32 +0300 |
parents | 814583aef808 |
children | eb4ba3800c31 |
files | src/http/ngx_http_upstream.c |
diffstat | 1 files changed, 1 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_upstream.c Wed Feb 11 15:51:03 2015 +0300 +++ b/src/http/ngx_http_upstream.c Thu Jan 22 16:23:32 2015 +0300 @@ -5408,7 +5408,7 @@ 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) {