nginx-0.3.47-RELEASE import

    *) Feature: the "upstream" directive.

    *) Change: now the "\" escape symbol in the "\"" and "\'" pairs in the
       SSI command is always removed.
diff --git a/src/core/ngx_inet.h b/src/core/ngx_inet.h
index a01fc8a..25f9232 100644
--- a/src/core/ngx_inet.h
+++ b/src/core/ngx_inet.h
@@ -12,6 +12,10 @@
 #include <ngx_core.h>
 
 
+#define NGX_PARSE_URL_INET   1
+#define NGX_PARSE_URL_UNIX   2
+
+
 typedef struct {
     in_addr_t  addr;
     in_addr_t  mask;
@@ -19,6 +23,66 @@
 
 
 typedef struct {
+    struct sockaddr    *sockaddr;
+    socklen_t           socklen;
+
+    ngx_str_t           name;
+    char               *uri_separator;
+
+    ngx_uint_t          weight;
+
+    ngx_uint_t          fails;
+    time_t              accessed;
+
+    ngx_uint_t          max_fails;
+    time_t              fail_timeout;
+
+#if (NGX_SSL)
+    ngx_ssl_session_t  *ssl_session;
+#endif
+} ngx_peer_t;
+
+
+struct ngx_peers_s {
+    ngx_uint_t          current;
+    ngx_uint_t          weight;
+
+    ngx_uint_t          number;
+    ngx_uint_t          last_cached;
+
+ /* ngx_mutex_t        *mutex; */
+    ngx_connection_t  **cached;
+
+    ngx_peer_t          peer[1];
+};
+
+
+typedef struct {
+    ngx_int_t     type;
+
+    ngx_peers_t  *peers;
+
+    ngx_str_t     url;
+    ngx_str_t     host;
+    ngx_str_t     host_header;
+    ngx_str_t     port;
+    ngx_str_t     uri;
+
+    in_port_t     portn;
+    in_port_t     default_portn;
+
+    unsigned      listen:1;
+    unsigned      uri_part:1;
+    unsigned      upstream:1;
+
+    unsigned      default_port:1;
+    unsigned      wildcard:1;
+
+    char         *err;
+} ngx_url_t;
+
+
+typedef struct {
     ngx_str_t     name;           /* "schema:host:port/uri" */
     ngx_str_t     url;            /* "host:port/uri" */
     ngx_str_t     host;
@@ -35,6 +99,7 @@
 
     unsigned      uri_part:1;
     unsigned      port_only:1;
+    unsigned      virtual:1;
 } ngx_inet_upstream_t;
 
 
@@ -45,7 +110,10 @@
 ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr);
 
 ngx_peers_t *ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u);
+ngx_peers_t *ngx_inet_resolve_peer(ngx_conf_t *cf, ngx_str_t *name,
+    in_port_t port);
 char *ngx_inet_parse_host_port(ngx_inet_upstream_t *u);
+ngx_int_t ngx_parse_url(ngx_conf_t *cf, ngx_url_t *u);
 
 
 #endif /* _NGX_INET_H_INCLUDED_ */