aboutsummaryrefslogtreecommitdiff
path: root/src/imap/ngx_imap_handler.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2005-11-15 13:30:52 +0000
committerIgor Sysoev <igor@sysoev.ru>2005-11-15 13:30:52 +0000
commit0e5dc5cff692f532f0ccb2655ab196995f4233e0 (patch)
treef56f40e788077b9820ebb45f3e0739fabb7be421 /src/imap/ngx_imap_handler.c
parent2a7f83eceda87e520f36bbfb16b82b8c2d6606d7 (diff)
downloadnginx-0e5dc5cff692f532f0ccb2655ab196995f4233e0.tar.gz
nginx-0e5dc5cff692f532f0ccb2655ab196995f4233e0.zip
nginx-0.3.10-RELEASE importrelease-0.3.10
*) Change: the "valid_referers" directive and the "$invalid_referer" variable were moved to the new ngx_http_referer_module from the ngx_http_rewrite_module. *) Change: the "$apache_bytes_sent" variable name was changed to "$body_bytes_sent". *) Feature: the "$sent_http_..." variables. *) Feature: the "if" directive supports the "=" and "!=" operations. *) Feature: the "proxy_pass" directive supports the HTTPS protocol. *) Feature: the "proxy_set_body" directive. *) Feature: the "post_action" directive. *) Feature: the ngx_http_empty_gif_module. *) Feature: the "worker_cpu_affinity" directive for Linux. *) Bugfix: the "rewrite" directive did not unescape URI part in redirect, now it is unescaped except the %00-%25 and %7F-%FF characters. *) Bugfix: nginx could not be built by the icc 9.0 compiler. *) Bugfix: if the SSI was enabled for zero size static file, then the chunked response was encoded incorrectly.
Diffstat (limited to 'src/imap/ngx_imap_handler.c')
-rw-r--r--src/imap/ngx_imap_handler.c35
1 files changed, 8 insertions, 27 deletions
diff --git a/src/imap/ngx_imap_handler.c b/src/imap/ngx_imap_handler.c
index ac5db73b4..ddff96a29 100644
--- a/src/imap/ngx_imap_handler.c
+++ b/src/imap/ngx_imap_handler.c
@@ -17,7 +17,6 @@ static u_char *ngx_imap_log_error(ngx_log_t *log, u_char *buf, size_t len);
#if (NGX_IMAP_SSL)
static void ngx_imap_ssl_handshake_handler(ngx_connection_t *c);
-static void ngx_imap_ssl_close_handler(ngx_event_t *ev);
#endif
@@ -58,7 +57,7 @@ ngx_imap_init_connection(ngx_connection_t *c)
if (lctx == NULL) {
ngx_imap_close_connection(c);
return;
- }
+ }
lctx->client = &c->addr_text;
lctx->session = NULL;
@@ -106,7 +105,7 @@ ngx_imap_init_connection(ngx_connection_t *c)
static void
ngx_imap_ssl_handshake_handler(ngx_connection_t *c)
-{
+{
if (c->ssl->handshaked) {
ngx_imap_init_session(c);
return;
@@ -181,6 +180,7 @@ ngx_imap_send(ngx_event_t *wev)
if (wev->timedout) {
ngx_log_error(NGX_LOG_INFO, c->log, NGX_ETIMEDOUT, "client timed out");
+ c->timedout = 1;
ngx_imap_close_connection(c);
return;
}
@@ -246,6 +246,7 @@ ngx_imap_init_protocol(ngx_event_t *rev)
if (rev->timedout) {
ngx_log_error(NGX_LOG_INFO, c->log, NGX_ETIMEDOUT, "client timed out");
+ c->timedout = 1;
ngx_imap_close_connection(c);
return;
}
@@ -298,6 +299,7 @@ ngx_imap_auth_state(ngx_event_t *rev)
if (rev->timedout) {
ngx_log_error(NGX_LOG_INFO, c->log, NGX_ETIMEDOUT, "client timed out");
+ c->timedout = 1;
ngx_imap_close_connection(c);
return;
}
@@ -498,6 +500,7 @@ ngx_pop3_auth_state(ngx_event_t *rev)
if (rev->timedout) {
ngx_log_error(NGX_LOG_INFO, c->log, NGX_ETIMEDOUT, "client timed out");
+ c->timedout = 1;
ngx_imap_close_connection(c);
return;
}
@@ -725,8 +728,7 @@ ngx_imap_close_connection(ngx_connection_t *c)
if (c->ssl) {
if (ngx_ssl_shutdown(c) == NGX_AGAIN) {
- c->read->handler = ngx_imap_ssl_close_handler;
- c->write->handler = ngx_imap_ssl_close_handler;
+ c->ssl->handler = ngx_imap_close_connection;
return;
}
}
@@ -743,27 +745,6 @@ ngx_imap_close_connection(ngx_connection_t *c)
}
-#if (NGX_IMAP_SSL)
-
-static void
-ngx_imap_ssl_close_handler(ngx_event_t *ev)
-{
- ngx_connection_t *c;
-
- c = ev->data;
-
- ngx_log_debug0(NGX_LOG_DEBUG_IMAP, ev->log, 0, "http ssl close handler");
-
- if (ngx_ssl_shutdown(c) == NGX_AGAIN) {
- return;
- }
-
- ngx_imap_close_connection(c);
-}
-
-#endif
-
-
static u_char *
ngx_imap_log_error(ngx_log_t *log, u_char *buf, size_t len)
{
@@ -776,7 +757,7 @@ ngx_imap_log_error(ngx_log_t *log, u_char *buf, size_t len)
len -= p - buf;
buf = p;
}
-
+
ctx = log->data;
p = ngx_snprintf(buf, len, ", client: %V", ctx->client);