nginx-0.3.6-RELEASE import

    *) Change: now the IMAP/POP3 proxy do not send the empty login to
       authorization server.

    *) Feature: the "log_format" supports the variables in the $name form.

    *) Bugfix: if at least in one server was no the "listen" directive,
       then nginx did not listen on the 80 port; the bug had appeared in
       0.3.3.

    *) Bugfix: if the URI part is omitted in "proxy_pass" directive, the
       the 80 port was always used.
diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c
index 60a40ec..4be55fd 100644
--- a/src/core/ngx_inet.c
+++ b/src/core/ngx_inet.c
@@ -452,7 +452,23 @@
         }
     }
 
-    if (u->port_text.data == NULL) {
+    if (u->port_text.data) {
+
+        if (u->port_text.len == 0) {
+            u->port_text.len = &url->data[i] - u->port_text.data;
+
+            if (u->port_text.len == 0) {
+                return "invalid port";
+            }
+        }
+
+        port = ngx_atoi(u->port_text.data, u->port_text.len);
+
+        if (port == NGX_ERROR || port < 1 || port > 65536) {
+            return "invalid port";
+        }
+
+    } else {
         port = ngx_atoi(url->data, url->len);
 
         if (port == NGX_ERROR) {
@@ -464,18 +480,6 @@
 
         u->port_text = *url;
         u->wildcard = 1;
-
-    } else {
-        if (u->port_text.len == 0) {
-            u->default_port = 1;
-            return NULL;
-        }
-
-        port = ngx_atoi(u->port_text.data, u->port_text.len);
-
-        if (port == NGX_ERROR || port < 1 || port > 65536) {
-            return "invalid port";
-        }
     }
 
     u->port = (in_port_t) port;