nginx-0.0.1-2003-04-08-19:40:10 import
diff --git a/src/http/modules/proxy/ngx_http_event_proxy_handler.h b/src/http/modules/proxy/ngx_http_event_proxy_handler.h
new file mode 100644
index 0000000..9ddf114
--- /dev/null
+++ b/src/http/modules/proxy/ngx_http_event_proxy_handler.h
@@ -0,0 +1,146 @@
+#ifndef _NGX_HTTP_PROXY_HANDLER_H_INCLUDED_
+#define _NGX_HTTP_PROXY_HANDLER_H_INCLUDED_
+
+
+#include <ngx_config.h>
+#include <ngx_array.h>
+#include <ngx_http.h>
+
+
+#define NGX_HTTP_PROXY_PARSE_NO_HEADER          20
+#define NGX_HTTP_PARSE_TOO_LONG_STATUS_LINE     21
+
+typedef struct {
+    int dummy;
+} ngx_http_proxy_headers_in_t;
+
+
+typedef struct {
+    u_int32_t  addr;
+    ngx_str_t  host;
+    int        port;
+    ngx_str_t  addr_port_name;
+
+    int        fails;
+    time_t     accessed;
+} ngx_http_proxy_upstream_t;
+
+
+typedef struct {
+    int                        current;
+    int                        number;
+    int                        max_fails;
+    int                        fail_timeout;
+
+ /* ngx_mutex_t                mutex; */
+ /* ngx_connection_t          *cached; ??? */
+
+    ngx_http_proxy_upstream_t  u[1];
+} ngx_http_proxy_upstreams_t;
+
+
+typedef struct {
+    ngx_str_t   host;
+    ngx_str_t   uri;
+    ngx_str_t  *location;
+    ngx_str_t   host_header;
+    ngx_str_t   port_name;
+    int         port;
+} ngx_http_proxy_upstream_url_t;
+
+
+typedef struct {
+    ngx_http_proxy_upstreams_t     *upstreams;
+    ngx_http_proxy_upstream_url_t  *upstream_url;
+
+    int   rcvbuf;
+    int   conn_pool_size;
+    int   connect_timeout;
+    int   send_timeout;
+    int   read_timeout;
+    int   header_size;
+    int   large_header;
+
+    int   block_size;
+    int   max_block_size;
+
+    int   retry_500_error;
+
+} ngx_http_proxy_loc_conf_t;
+
+
+#if 0
+/* location /one/ { proxy_pass  http://localhost:9000/two/; } */
+
+typedef struct {
+                           /* "/one/" */
+                           /* "http://localhost:9000/two/" */
+                           /* "/two/" */
+                *upstream_farm;
+} ngx_http_proxy_pass_t;
+#endif
+
+
+typedef struct ngx_http_proxy_ctx_s  ngx_http_proxy_ctx_t;
+
+struct ngx_http_proxy_ctx_s {
+    ngx_chain_t  *out;
+
+    int           last_hunk;
+    ngx_array_t   hunks;
+    int           hunks_number;
+
+    int           hunk_n;
+
+    ngx_connection_t               *connection;
+    ngx_http_request_t             *request;
+    ngx_http_proxy_headers_in_t    *headers_in;
+
+    ngx_http_proxy_upstream_url_t  *upstream_url;
+    ngx_http_proxy_upstreams_t     *upstreams;
+    int                             cur_upstream;
+    int                             tries;
+
+    struct sockaddr                *sockaddr;
+
+    ngx_http_proxy_loc_conf_t      *lcf;
+
+    ngx_log_t    *log;
+
+    int          method;
+
+    ngx_hunk_t  *header_in;
+    int          status;
+    ngx_str_t    status_line;
+    ngx_str_t    full_status_line;
+
+    int          state;
+    int          status_count;
+    char        *status_start;
+    char        *status_end;
+    int        (*state_write_upstream_handler) (ngx_http_proxy_ctx_t *p);
+    int        (*state_read_upstream_handler) (ngx_http_proxy_ctx_t *p);
+    int        (*state_handler)(ngx_http_proxy_ctx_t *p);
+
+    int          last_error;
+
+    unsigned     cached_connection:1;
+};
+
+
+typedef struct {
+    char  *action;
+    char  *upstream;
+    char  *client;
+    char  *url;
+} ngx_http_proxy_log_ctx_t;
+
+
+extern ngx_module_t  ngx_http_proxy_module;
+
+
+static int ngx_http_proxy_error(ngx_http_request_t *r, ngx_http_proxy_ctx_t *p,
+                                int error);
+
+
+#endif /* _NGX_HTTP_PROXY_HANDLER_H_INCLUDED_ */