comparison src/http/ngx_http_upstream.c @ 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 99639bfdfa2a
children 174512857ccf
comparison
equal deleted inserted replaced
5976:814583aef808 5977:26c127bab5ef
5406 uscf->line = cf->conf_file->line; 5406 uscf->line = cf->conf_file->line;
5407 uscf->port = u->port; 5407 uscf->port = u->port;
5408 uscf->default_port = u->default_port; 5408 uscf->default_port = u->default_port;
5409 uscf->no_port = u->no_port; 5409 uscf->no_port = u->no_port;
5410 5410
5411 if (u->naddrs == 1) { 5411 if (u->naddrs == 1 && (u->port || u->family == AF_UNIX)) {
5412 uscf->servers = ngx_array_create(cf->pool, 1, 5412 uscf->servers = ngx_array_create(cf->pool, 1,
5413 sizeof(ngx_http_upstream_server_t)); 5413 sizeof(ngx_http_upstream_server_t));
5414 if (uscf->servers == NULL) { 5414 if (uscf->servers == NULL) {
5415 return NULL; 5415 return NULL;
5416 } 5416 }