Mercurial > hg > nginx-quic
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 } |