fix bugs introduced in r2204
diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c
index d565705..6568cec 100644
--- a/src/core/ngx_inet.c
+++ b/src/core/ngx_inet.c
@@ -256,6 +256,8 @@
ngx_int_t n;
struct hostent *h;
+ u->family = AF_INET;
+
host = u->url.data;
last = host + u->url.len;
@@ -279,12 +281,23 @@
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 @@
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 @@
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;
}