]> git.kaiwu.me - nginx.git/commitdiff
fix bugs introduced in r2204
authorIgor Sysoev <igor@sysoev.ru>
Tue, 26 Aug 2008 16:11:30 +0000 (16:11 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Tue, 26 Aug 2008 16:11:30 +0000 (16:11 +0000)
src/core/ngx_inet.c

index d565705b01f7330104e0493e0a3c1a672764d85d..6568cecb730dd8e51b926057f0a4140176000e77 100644 (file)
@@ -256,6 +256,8 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u)
     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_url_t *u)
     if (port) {
         port++;
 
-        if (last - port == 0) {
+        len = last - port;
+
+        if (len == 0) {
+            u->err = "invalid port";
+            return NGX_ERROR;
+        }
+
+        n = ngx_atoi(port, len);
+
+        if (n < 1 || n > 65536) {
             u->err = "invalid port";
             return NGX_ERROR;
         }
 
-        u->port_text.len = last - port;
+        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_url_t *u)
     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_url_t *u)
         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;
     }