Mercurial > hg > nginx-mail
comparison src/mail/ngx_mail_handler.c @ 436:9b19e26b2660
Mail: smtp pipelining support.
Basically, this does the following two changes (and corresponding
modifications of related code):
1. Does not reset session buffer unless it's reached it's end, and always
wait for LF to terminate command (even if we detected invalid command).
2. Record command name as the first argument to make it available for
handlers (since now we can't assume that command starts from s->buffer->start).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 11 Sep 2008 15:26:25 +0400 |
parents | 9205084bd1f3 |
children | d67e93e97b4a |
comparison
equal
deleted
inserted
replaced
435:e2df123bbbe2 | 436:9b19e26b2660 |
---|---|
582 if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) { | 582 if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) { |
583 ngx_mail_session_internal_server_error(s); | 583 ngx_mail_session_internal_server_error(s); |
584 return NGX_ERROR; | 584 return NGX_ERROR; |
585 } | 585 } |
586 | 586 |
587 return NGX_AGAIN; | 587 if (s->buffer->pos == s->buffer->last) { |
588 return NGX_AGAIN; | |
589 } | |
588 } | 590 } |
589 | 591 |
590 cscf = ngx_mail_get_module_srv_conf(s, ngx_mail_core_module); | 592 cscf = ngx_mail_get_module_srv_conf(s, ngx_mail_core_module); |
591 | 593 |
592 rc = cscf->protocol->parse_command(s); | 594 rc = cscf->protocol->parse_command(s); |
623 | 625 |
624 void | 626 void |
625 ngx_mail_auth(ngx_mail_session_t *s, ngx_connection_t *c) | 627 ngx_mail_auth(ngx_mail_session_t *s, ngx_connection_t *c) |
626 { | 628 { |
627 s->args.nelts = 0; | 629 s->args.nelts = 0; |
628 s->buffer->pos = s->buffer->start; | 630 |
629 s->buffer->last = s->buffer->start; | 631 if (s->buffer->pos == s->buffer->last) { |
632 s->buffer->pos = s->buffer->start; | |
633 s->buffer->last = s->buffer->start; | |
634 } | |
635 | |
630 s->state = 0; | 636 s->state = 0; |
631 | 637 |
632 if (c->read->timer_set) { | 638 if (c->read->timer_set) { |
633 ngx_del_timer(c->read); | 639 ngx_del_timer(c->read); |
634 } | 640 } |