aboutsummaryrefslogtreecommitdiff
path: root/src/http/modules/proxy/ngx_http_event_proxy_handler.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-04-24 14:46:08 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-04-24 14:46:08 +0000
commit0e18ebd0d931e175b7d92c0d6fb36c1c60c2aac9 (patch)
tree4cc0921e30069e29ee0456d8c2fcd693e81fde39 /src/http/modules/proxy/ngx_http_event_proxy_handler.c
parentfb970519d45f7fb299dfaba854b8cc58d4dc4711 (diff)
downloadnginx-0e18ebd0d931e175b7d92c0d6fb36c1c60c2aac9.tar.gz
nginx-0e18ebd0d931e175b7d92c0d6fb36c1c60c2aac9.zip
nginx-0.0.1-2003-04-24-18:46:08 import
Diffstat (limited to 'src/http/modules/proxy/ngx_http_event_proxy_handler.c')
-rw-r--r--src/http/modules/proxy/ngx_http_event_proxy_handler.c41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/http/modules/proxy/ngx_http_event_proxy_handler.c b/src/http/modules/proxy/ngx_http_event_proxy_handler.c
index ab90aeb3a..66c9988f0 100644
--- a/src/http/modules/proxy/ngx_http_event_proxy_handler.c
+++ b/src/http/modules/proxy/ngx_http_event_proxy_handler.c
@@ -18,9 +18,10 @@
/* STUB */
typedef struct {
- int dummy;
+ int type;
} ngx_cache_header_t;
+
static int ngx_http_proxy_handler(ngx_http_request_t *r);
static ngx_chain_t *ngx_http_proxy_create_request(ngx_http_proxy_ctx_t *p);
@@ -609,8 +610,8 @@ static int ngx_http_proxy_connect(ngx_http_proxy_ctx_t *p)
}
}
- wev->event_handler = rev->event_handler =
- ngx_http_proxy_process_upstream_event;
+ rev->event_handler = ngx_http_proxy_process_upstream_event;
+ p->request->connection->write->event_handler = NULL;
p->state_write_upstream_handler = ngx_http_proxy_send_request;
p->state_read_upstream_handler = ngx_http_proxy_init_upstream;
@@ -1087,7 +1088,7 @@ static int ngx_http_proxy_read_upstream_body(ngx_http_proxy_ctx_t *p)
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
- if (p->event_proxy->upstream_eof && p->event_proxy->upstream_error) {
+ if (p->event_proxy->upstream_eof || p->event_proxy->upstream_error) {
rc = ngx_event_close_connection(p->connection->read);
}
@@ -1095,6 +1096,21 @@ static int ngx_http_proxy_read_upstream_body(ngx_http_proxy_ctx_t *p)
}
+static int ngx_http_proxy_process_client_event(ngx_event_t *ev)
+{
+ ngx_connection_t *c;
+ ngx_http_request_t *r;
+ ngx_http_proxy_ctx_t *p;
+
+ c = (ngx_connection_t *) ev->data;
+ r = (ngx_http_request_t *) c->data;
+ p = (ngx_http_proxy_ctx_t *)
+ ngx_http_get_module_ctx(r, ngx_http_proxy_module_ctx);
+
+ return ngx_http_proxy_process_upstream(p, ev);
+}
+
+
static int ngx_http_proxy_write_upstream_body(ngx_http_proxy_ctx_t *p)
{
return ngx_event_proxy_write_to_downstream(p->event_proxy);
@@ -1105,6 +1121,23 @@ static int ngx_http_proxy_write_upstream_body(ngx_http_proxy_ctx_t *p)
static int ngx_http_proxy_finalize_request(ngx_http_proxy_ctx_t *p, int error)
{
+#if 0
+
+ if (p->event_proxy->upstream_eof) {
+ rc = ngx_event_close_connection(p->connection->read);
+ link cache;
+ }
+
+ if (p->event_proxy->upstream_error) {
+ rc = ngx_event_close_connection(p->connection->read);
+ }
+
+ if (p->event_proxy->downstream_error) {
+ rc = ngx_event_close_connection(p->request->connection->write);
+ }
+
+#endif
+
return ngx_http_finalize_request(p->request, error);
}