comparison src/imap/ngx_imap_auth_http_module.c @ 258:6ae1357b7b7c NGINX_0_4_14

nginx 0.4.14 *) Feature: the "proxy_pass_error_message" directive in IMAP/POP3 proxy. *) Feature: now configure detects system PCRE library on FreeBSD, Linux, and NetBSD. *) Bugfix: ngx_http_perl_module did not work with perl built with the threads support; bug appeared in 0.3.38. *) Bugfix: ngx_http_perl_module did not work if perl was called recursively. *) Bugfix: nginx ignored a host name in an request line. *) Bugfix: a worker process may got caught in an endless loop, if a FastCGI server sent too many data to the stderr. *) Bugfix: the $upstream_response_time variable may be negative if the system time was changed backward. *) Bugfix: the "Auth-Login-Attempt" parameter was not sent to IMAP/POP3 proxy authentication server when POP3 was used. *) Bugfix: a segmentation fault might occur if connect to IMAP/POP3 proxy authentication server failed.
author Igor Sysoev <http://sysoev.ru>
date Mon, 27 Nov 2006 00:00:00 +0300
parents 644510700914
children 0effe91f6083
comparison
equal deleted inserted replaced
257:0e566ee1bcd5 258:6ae1357b7b7c
180 ctx->peer.log_error = NGX_ERROR_ERR; 180 ctx->peer.log_error = NGX_ERROR_ERR;
181 181
182 rc = ngx_event_connect_peer(&ctx->peer); 182 rc = ngx_event_connect_peer(&ctx->peer);
183 183
184 if (rc == NGX_ERROR || rc == NGX_BUSY || rc == NGX_DECLINED) { 184 if (rc == NGX_ERROR || rc == NGX_BUSY || rc == NGX_DECLINED) {
185 ngx_close_connection(ctx->peer.connection); 185 if (ctx->peer.connection) {
186 ngx_close_connection(ctx->peer.connection);
187 }
188
186 ngx_destroy_pool(ctx->pool); 189 ngx_destroy_pool(ctx->pool);
187 ngx_imap_session_internal_server_error(s); 190 ngx_imap_session_internal_server_error(s);
188 return; 191 return;
189 } 192 }
190 193
487 490
488 ctx->errmsg.len = len; 491 ctx->errmsg.len = len;
489 ctx->errmsg.data = ctx->header_start; 492 ctx->errmsg.data = ctx->header_start;
490 493
491 if (s->protocol == NGX_IMAP_POP3_PROTOCOL) { 494 if (s->protocol == NGX_IMAP_POP3_PROTOCOL) {
492 size = sizeof("-ERR") - 1 + len + sizeof(CRLF) - 1; 495 size = sizeof("-ERR ") - 1 + len + sizeof(CRLF) - 1;
493 496
494 } else { 497 } else {
495 size = s->tag.len + sizeof("NO") - 1 + len 498 size = s->tag.len + sizeof("NO ") - 1 + len
496 + sizeof(CRLF) - 1; 499 + sizeof(CRLF) - 1;
497 } 500 }
498 501
499 p = ngx_pcalloc(s->connection->pool, size); 502 p = ngx_pcalloc(s->connection->pool, size);
500 if (p == NULL) { 503 if (p == NULL) {
1037 return NULL; 1040 return NULL;
1038 } 1041 }
1039 1042
1040 len = sizeof("GET ") - 1 + ahcf->uri.len + sizeof(" HTTP/1.0" CRLF) - 1 1043 len = sizeof("GET ") - 1 + ahcf->uri.len + sizeof(" HTTP/1.0" CRLF) - 1
1041 + sizeof("Host: ") - 1 + ahcf->host_header.len + sizeof(CRLF) - 1 1044 + sizeof("Host: ") - 1 + ahcf->host_header.len + sizeof(CRLF) - 1
1042 + sizeof("Auth-Method: plain" CRLF) - 1 1045 + sizeof("Auth-Method: ") - 1
1046 + ngx_imap_auth_http_method[s->auth_method].len
1047 + sizeof(CRLF) - 1
1043 + sizeof("Auth-User: ") - 1 + login.len + sizeof(CRLF) - 1 1048 + sizeof("Auth-User: ") - 1 + login.len + sizeof(CRLF) - 1
1044 + sizeof("Auth-Pass: ") - 1 + passwd.len + sizeof(CRLF) - 1 1049 + sizeof("Auth-Pass: ") - 1 + passwd.len + sizeof(CRLF) - 1
1045 + sizeof("Auth-Salt: ") - 1 + s->salt.len 1050 + sizeof("Auth-Salt: ") - 1 + s->salt.len
1046 + sizeof("Auth-Protocol: imap" CRLF) - 1 1051 + sizeof("Auth-Protocol: imap" CRLF) - 1
1047 + sizeof("Auth-Login-Attempt: ") - 1 + NGX_INT_T_LEN 1052 + sizeof("Auth-Login-Attempt: ") - 1 + NGX_INT_T_LEN