Mercurial > hg > nginx
diff src/imap/ngx_imap_auth_http_module.c @ 541:b09ee85d0ac8 release-0.1.45
nginx-0.1.45-RELEASE import
*) Change: the "ssl_engine" directive was canceled in the
ngx_http_ssl_module and now is introduced at global level.
*) Bugfix: the responses with SSI subrequests did not transferred via
SSL connection.
*) Various bug fixes in the IMAP/POP3 proxy.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 08 Sep 2005 14:36:09 +0000 |
parents | 371c1cee100d |
children | 511a89da35ad |
line wrap: on
line diff
--- a/src/imap/ngx_imap_auth_http_module.c +++ b/src/imap/ngx_imap_auth_http_module.c @@ -105,8 +105,14 @@ ngx_module_t ngx_imap_auth_http_module &ngx_imap_auth_http_module_ctx, /* module context */ ngx_imap_auth_http_commands, /* module directives */ NGX_IMAP_MODULE, /* module type */ + NULL, /* init master */ NULL, /* init module */ - NULL /* init process */ + NULL, /* init process */ + NULL, /* init thread */ + NULL, /* exit thread */ + NULL, /* exit process */ + NULL, /* exit master */ + NGX_MODULE_V1_PADDING }; @@ -120,6 +126,8 @@ ngx_imap_auth_http_init(ngx_imap_session ngx_imap_auth_http_ctx_t *ctx; ngx_imap_auth_http_conf_t *ahcf; + s->connection->log->action = "in http auth state"; + ctx = ngx_pcalloc(s->connection->pool, sizeof(ngx_imap_auth_http_ctx_t)); if (ctx == NULL) { ngx_imap_session_internal_server_error(s); @@ -142,7 +150,7 @@ ngx_imap_auth_http_init(ngx_imap_session rc = ngx_event_connect_peer(&ctx->peer); - if (rc == NGX_ERROR) { + if (rc == NGX_ERROR || rc == NGX_CONNECT_ERROR) { ngx_imap_session_internal_server_error(s); return; } @@ -156,13 +164,13 @@ ngx_imap_auth_http_init(ngx_imap_session ctx->handler = ngx_imap_auth_http_ignore_status_line; + ngx_add_timer(ctx->peer.connection->read, ahcf->timeout); + ngx_add_timer(ctx->peer.connection->write, ahcf->timeout); + if (rc == NGX_OK) { ngx_imap_auth_http_write_handler(ctx->peer.connection->write); return; } - - ngx_add_timer(ctx->peer.connection->read, ahcf->timeout); - ngx_add_timer(ctx->peer.connection->write, ahcf->timeout); } @@ -185,7 +193,8 @@ ngx_imap_auth_http_write_handler(ngx_eve if (wev->timedout) { ngx_log_error(NGX_LOG_ERR, wev->log, NGX_ETIMEDOUT, - "auth http server timed out"); + "auth http server %V timed out", + &ctx->peer.peers->peer[0].name); ngx_close_connection(ctx->peer.connection); ngx_imap_session_internal_server_error(s); return; @@ -240,7 +249,8 @@ ngx_imap_auth_http_read_handler(ngx_even if (rev->timedout) { ngx_log_error(NGX_LOG_ERR, rev->log, NGX_ETIMEDOUT, - "auth http server timed out"); + "auth http server %V timed out", + &ctx->peer.peers->peer[0].name); ngx_close_connection(ctx->peer.connection); ngx_imap_session_internal_server_error(s); return; @@ -355,7 +365,8 @@ ngx_imap_auth_http_ignore_status_line(ng } ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, - "auth http server sent invalid response"); + "auth http server &V sent invalid response", + &ctx->peer.peers->peer[0].name); ngx_close_connection(ctx->peer.connection); ngx_imap_session_internal_server_error(s); return; @@ -520,9 +531,11 @@ ngx_imap_auth_http_process_headers(ngx_i if (ctx->sleep == 0) { s->quit = 1; - } + + ngx_imap_send(s->connection->write); - ngx_imap_send(s->connection->write); + return; + } ngx_add_timer(s->connection->read, ctx->sleep * 1000); @@ -533,7 +546,8 @@ ngx_imap_auth_http_process_headers(ngx_i if (ctx->addr.len == 0 || ctx->port.len == 0) { ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, - "auth http server did not send server or port"); + "auth http server %V did not send server or port", + &ctx->peer.peers->peer[0].name); ngx_imap_session_internal_server_error(s); return; } @@ -555,8 +569,9 @@ ngx_imap_auth_http_process_headers(ngx_i port = ngx_atoi(ctx->port.data, ctx->port.len); if (port == NGX_ERROR || port < 1 || port > 65536) { ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, - "auth http server sent invalid server " - "port:\"%V\"", &ctx->port); + "auth http server %V sent invalid server " + "port:\"%V\"", + &ctx->peer.peers->peer[0].name, &ctx->port); ngx_imap_session_internal_server_error(s); return; } @@ -567,8 +582,9 @@ ngx_imap_auth_http_process_headers(ngx_i sin->sin_addr.s_addr = inet_addr((char *) ctx->addr.data); if (sin->sin_addr.s_addr == INADDR_NONE) { ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, - "auth http server sent invalid server " - "address:\"%V\"", &ctx->addr); + "auth http server %V sent invalid server " + "address:\"%V\"", + &ctx->peer.peers->peer[0].name, &ctx->addr); ngx_imap_session_internal_server_error(s); return; } @@ -612,7 +628,8 @@ ngx_imap_auth_http_process_headers(ngx_i /* rc == NGX_ERROR */ ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, - "auth http server sent invalid header in response"); + "auth http server %V sent invalid header in response", + &ctx->peer.peers->peer[0].name); ngx_close_connection(ctx->peer.connection); ngx_imap_session_internal_server_error(s); @@ -654,6 +671,8 @@ ngx_imap_auth_sleep_handler(ngx_event_t ngx_imap_close_connection(s->connection); } + ngx_imap_send(s->connection->write); + return; }