Mercurial > hg > nginx-vendor-0-6
comparison src/mail/ngx_mail_smtp_handler.c @ 384:09b703ae3ba5 NGINX_0_6_36
nginx 0.6.36
*) Change: now the "Invalid argument" error returned by
setsockopt(TCP_NODELAY) on Solaris, is ignored.
*) Change: now POSTs without "Content-Length" header line are allowed.
*) Feature: the "try_files" directive.
*) Feature: the --with-pcre option in the configure.
*) Feature: the "if_modified_since" directive.
*) Feature: the "$cookie_..." variables.
*) Feature: the "$arg_..." variables.
*) Bugfix: compatibility with Tru64 UNIX.
Thanks to Dustin Marquess.
*) Bugfix: a "ssl_engine" directive did not use a SSL-accelerator for
asymmetric ciphers.
Thanks to Marcin Gozdalik.
*) Bugfix: in a redirect rewrite directive original arguments were
concatenated with new arguments by a "?" rather than an "&";
the bug had appeared in 0.1.18.
Thanks to Maxim Dounin.
*) Bugfix: nginx could not be built on AIX.
*) Bugfix: a double response might be returned if the epoll or rtsig
methods are used and a redirect was returned to a request with
body.
Thanks to Eden Li.
*) Bugfix: a segmentation fault might occur in worker process if
"resolver" directive was used in SMTP proxy.
*) Bugfix: fastcgi_store stored files not always.
*) Bugfix: nginx did not process a FastCGI server response, if the
server send too many messages to stderr before response.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 02 Apr 2009 00:00:00 +0400 |
parents | babd3d9efb62 |
children | 1878e9c00f22 |
comparison
equal
deleted
inserted
replaced
383:3d40b0260a84 | 384:09b703ae3ba5 |
---|---|
10 #include <ngx_mail.h> | 10 #include <ngx_mail.h> |
11 #include <ngx_mail_smtp_module.h> | 11 #include <ngx_mail_smtp_module.h> |
12 | 12 |
13 | 13 |
14 static void ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx); | 14 static void ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx); |
15 static void ngx_mail_smtp_resolve_name(ngx_event_t *rev); | |
15 static void ngx_mail_smtp_resolve_name_handler(ngx_resolver_ctx_t *ctx); | 16 static void ngx_mail_smtp_resolve_name_handler(ngx_resolver_ctx_t *ctx); |
16 static void ngx_mail_smtp_greeting(ngx_mail_session_t *s, ngx_connection_t *c); | 17 static void ngx_mail_smtp_greeting(ngx_mail_session_t *s, ngx_connection_t *c); |
17 static void ngx_mail_smtp_invalid_pipelining(ngx_event_t *rev); | 18 static void ngx_mail_smtp_invalid_pipelining(ngx_event_t *rev); |
18 static ngx_int_t ngx_mail_smtp_create_buffer(ngx_mail_session_t *s, | 19 static ngx_int_t ngx_mail_smtp_create_buffer(ngx_mail_session_t *s, |
19 ngx_connection_t *c); | 20 ngx_connection_t *c); |
86 | 87 |
87 | 88 |
88 static void | 89 static void |
89 ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx) | 90 ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx) |
90 { | 91 { |
91 ngx_connection_t *c; | 92 ngx_connection_t *c; |
92 ngx_mail_session_t *s; | 93 ngx_mail_session_t *s; |
93 ngx_mail_core_srv_conf_t *cscf; | |
94 | 94 |
95 s = ctx->data; | 95 s = ctx->data; |
96 c = s->connection; | 96 c = s->connection; |
97 | 97 |
98 if (ctx->state) { | 98 if (ctx->state) { |
128 | 128 |
129 ngx_resolve_addr_done(ctx); | 129 ngx_resolve_addr_done(ctx); |
130 | 130 |
131 ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0, | 131 ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0, |
132 "address resolved: %V", &s->host); | 132 "address resolved: %V", &s->host); |
133 | |
134 c->read->handler = ngx_mail_smtp_resolve_name; | |
135 | |
136 ngx_post_event(c->read, &ngx_posted_events); | |
137 } | |
138 | |
139 | |
140 static void | |
141 ngx_mail_smtp_resolve_name(ngx_event_t *rev) | |
142 { | |
143 ngx_connection_t *c; | |
144 ngx_mail_session_t *s; | |
145 ngx_resolver_ctx_t *ctx; | |
146 ngx_mail_core_srv_conf_t *cscf; | |
147 | |
148 c = rev->data; | |
149 s = c->data; | |
133 | 150 |
134 cscf = ngx_mail_get_module_srv_conf(s, ngx_mail_core_module); | 151 cscf = ngx_mail_get_module_srv_conf(s, ngx_mail_core_module); |
135 | 152 |
136 ctx = ngx_resolve_start(cscf->resolver, NULL); | 153 ctx = ngx_resolve_start(cscf->resolver, NULL); |
137 if (ctx == NULL) { | 154 if (ctx == NULL) { |