Mercurial > hg > nginx
changeset 2206:6ea36910aa57
fix bugs introduced in r2204
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 26 Aug 2008 16:11:30 +0000 |
parents | 5398f47082f0 |
children | 9ad1bd2b21d9 |
files | src/core/ngx_inet.c |
diffstat | 1 files changed, 19 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_inet.c +++ b/src/core/ngx_inet.c @@ -256,6 +256,8 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx ngx_int_t n; struct hostent *h; + u->family = AF_INET; + host = u->url.data; last = host + u->url.len; @@ -279,12 +281,23 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx if (port) { port++; - if (last - port == 0) { + len = last - port; + + if (len == 0) { u->err = "invalid port"; return NGX_ERROR; } - u->port_text.len = last - port; + n = ngx_atoi(port, len); + + if (n < 1 || n > 65536) { + u->err = "invalid port"; + return NGX_ERROR; + } + + u->port = (in_port_t) n; + + u->port_text.len = len; u->port_text.data = port; last = port - 1; @@ -332,6 +345,10 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx u->host.len = len; u->host.data = host; + if (u->no_resolve) { + return NGX_OK; + } + if (len++) { p = ngx_alloc(len, pool->log); @@ -361,24 +378,6 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx u->addr.in_addr = INADDR_ANY; } - if (u->port_text.len) { - - n = ngx_atoi(u->port_text.data, u->port_text.len); - - if (n < 1 || n > 65536) { - u->err = "invalid port"; - return NGX_ERROR; - } - - u->port = (in_port_t) n; - } - - u->family = AF_INET; - - if (u->no_resolve) { - return NGX_OK; - } - if (u->no_port) { u->port = u->default_port; }