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;
     }