Mercurial > hg > nginx-mail
comparison src/mail/ngx_mail_smtp_handler.c @ 467:d67e93e97b4a
Merge with nginx 0.7.30.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sun, 11 Jan 2009 17:17:57 +0300 |
parents | 9b19e26b2660 dac47e9ef0d5 |
children | 2580fe1c5a9a |
comparison
equal
deleted
inserted
replaced
444:4c92e29a7375 | 467:d67e93e97b4a |
---|---|
226 sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module); | 226 sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module); |
227 | 227 |
228 timeout = sscf->greeting_delay ? sscf->greeting_delay : cscf->timeout; | 228 timeout = sscf->greeting_delay ? sscf->greeting_delay : cscf->timeout; |
229 ngx_add_timer(c->read, timeout); | 229 ngx_add_timer(c->read, timeout); |
230 | 230 |
231 if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) { | 231 if (ngx_handle_read_event(c->read, 0) != NGX_OK) { |
232 ngx_mail_close_connection(c); | 232 ngx_mail_close_connection(c); |
233 } | 233 } |
234 | 234 |
235 if (sscf->greeting_delay) { | 235 if (sscf->greeting_delay) { |
236 c->read->handler = ngx_mail_smtp_invalid_pipelining; | 236 c->read->handler = ngx_mail_smtp_invalid_pipelining; |
268 | 268 |
269 c->read->handler = ngx_mail_smtp_init_protocol; | 269 c->read->handler = ngx_mail_smtp_init_protocol; |
270 | 270 |
271 ngx_add_timer(c->read, cscf->timeout); | 271 ngx_add_timer(c->read, cscf->timeout); |
272 | 272 |
273 if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) { | 273 if (ngx_handle_read_event(c->read, 0) != NGX_OK) { |
274 ngx_mail_close_connection(c); | 274 ngx_mail_close_connection(c); |
275 return; | 275 return; |
276 } | 276 } |
277 | 277 |
278 sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module); | 278 sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module); |
645 ngx_mail_smtp_srv_conf_t *sscf; | 645 ngx_mail_smtp_srv_conf_t *sscf; |
646 | 646 |
647 sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module); | 647 sscf = ngx_mail_get_module_srv_conf(s, ngx_mail_smtp_module); |
648 | 648 |
649 if (!(sscf->auth_methods & NGX_MAIL_AUTH_NONE_ENABLED)) { | 649 if (!(sscf->auth_methods & NGX_MAIL_AUTH_NONE_ENABLED)) { |
650 ngx_mail_smtp_log_rejected_command(s, c, | 650 ngx_mail_smtp_log_rejected_command(s, c, "client was rejected: \"%V\""); |
651 "client was rejected: \"%V\""); | |
652 | 651 |
653 s->out.len = sizeof(smtp_auth_required) - 1; | 652 s->out.len = sizeof(smtp_auth_required) - 1; |
654 s->out.data = smtp_auth_required; | 653 s->out.data = smtp_auth_required; |
655 | 654 |
656 return NGX_OK; | 655 return NGX_OK; |
670 cmd.len = end->data + end->len - arg->data; | 669 cmd.len = end->data + end->len - arg->data; |
671 cmd.data = arg->data; | 670 cmd.data = arg->data; |
672 | 671 |
673 s->smtp_from.len = cmd.len; | 672 s->smtp_from.len = cmd.len; |
674 | 673 |
675 s->smtp_from.data = ngx_palloc(c->pool, cmd.len); | 674 s->smtp_from.data = ngx_pnalloc(c->pool, cmd.len); |
676 if (s->smtp_from.data == NULL) { | 675 if (s->smtp_from.data == NULL) { |
677 return NGX_ERROR; | 676 return NGX_ERROR; |
678 } | 677 } |
679 | 678 |
680 ngx_memcpy(s->smtp_from.data, cmd.data, cmd.len); | 679 ngx_memcpy(s->smtp_from.data, cmd.data, cmd.len); |
680 | |
681 ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0, | |
682 "smtp mail from:\"%V\"", &s->smtp_from); | |
681 | 683 |
682 s->out.len = sizeof(smtp_ok) - 1; | 684 s->out.len = sizeof(smtp_ok) - 1; |
683 s->out.data = smtp_ok; | 685 s->out.data = smtp_ok; |
684 | 686 |
685 return NGX_OK; | 687 return NGX_OK; |
703 cmd.len = end->data + end->len - arg->data; | 705 cmd.len = end->data + end->len - arg->data; |
704 cmd.data = arg->data; | 706 cmd.data = arg->data; |
705 | 707 |
706 s->smtp_to.len = cmd.len; | 708 s->smtp_to.len = cmd.len; |
707 | 709 |
708 s->smtp_to.data = ngx_palloc(c->pool, cmd.len); | 710 s->smtp_to.data = ngx_pnalloc(c->pool, cmd.len); |
709 if (s->smtp_to.data == NULL) { | 711 if (s->smtp_to.data == NULL) { |
710 return NGX_ERROR; | 712 return NGX_ERROR; |
711 } | 713 } |
712 | 714 |
713 ngx_memcpy(s->smtp_to.data, cmd.data, cmd.len); | 715 ngx_memcpy(s->smtp_to.data, cmd.data, cmd.len); |
716 | |
717 ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0, | |
718 "smtp rcpt to:\"%V\"", &s->smtp_to); | |
714 | 719 |
715 s->auth_method = NGX_MAIL_AUTH_NONE; | 720 s->auth_method = NGX_MAIL_AUTH_NONE; |
716 | 721 |
717 return NGX_DONE; | 722 return NGX_DONE; |
718 } | 723 } |
782 if (n > 0) { | 787 if (n > 0) { |
783 s->buffer->last += n; | 788 s->buffer->last += n; |
784 } | 789 } |
785 | 790 |
786 if (n == NGX_AGAIN) { | 791 if (n == NGX_AGAIN) { |
787 if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) { | 792 if (ngx_handle_read_event(c->read, 0) != NGX_OK) { |
788 ngx_mail_session_internal_server_error(s); | 793 ngx_mail_session_internal_server_error(s); |
789 return NGX_ERROR; | 794 return NGX_ERROR; |
790 } | 795 } |
791 | 796 |
792 return NGX_AGAIN; | 797 return NGX_AGAIN; |