comparison src/mail/ngx_mail_handler.c @ 1482:4606dce4f416

optimizations
author Igor Sysoev <igor@sysoev.ru>
date Fri, 14 Sep 2007 14:04:24 +0000
parents a231e37a19ab
children f69493e8faab
comparison
equal deleted inserted replaced
1481:b58ce1cf66da 1482:4606dce4f416
563 } 563 }
564 } 564 }
565 565
566 566
567 ngx_int_t 567 ngx_int_t
568 ngx_mail_read_command(ngx_mail_session_t *s) 568 ngx_mail_read_command(ngx_mail_session_t *s, ngx_connection_t *c)
569 { 569 {
570 ssize_t n; 570 ssize_t n;
571 ngx_int_t rc; 571 ngx_int_t rc;
572 ngx_str_t l; 572 ngx_str_t l;
573 573
574 n = s->connection->recv(s->connection, s->buffer->last, 574 n = c->recv(c, s->buffer->last, s->buffer->end - s->buffer->last);
575 s->buffer->end - s->buffer->last);
576 575
577 if (n == NGX_ERROR || n == 0) { 576 if (n == NGX_ERROR || n == 0) {
578 ngx_mail_close_connection(s->connection); 577 ngx_mail_close_connection(c);
579 return NGX_ERROR; 578 return NGX_ERROR;
580 } 579 }
581 580
582 if (n > 0) { 581 if (n > 0) {
583 s->buffer->last += n; 582 s->buffer->last += n;
584 } 583 }
585 584
586 if (n == NGX_AGAIN) { 585 if (n == NGX_AGAIN) {
587 if (ngx_handle_read_event(s->connection->read, 0) == NGX_ERROR) { 586 if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) {
588 ngx_mail_session_internal_server_error(s); 587 ngx_mail_session_internal_server_error(s);
589 return NGX_ERROR; 588 return NGX_ERROR;
590 } 589 }
591 590
592 return NGX_AGAIN; 591 return NGX_AGAIN;
601 } 600 }
602 601
603 l.len = s->buffer->last - s->buffer->start; 602 l.len = s->buffer->last - s->buffer->start;
604 l.data = s->buffer->start; 603 l.data = s->buffer->start;
605 604
606 ngx_log_error(NGX_LOG_INFO, s->connection->log, 0, 605 ngx_log_error(NGX_LOG_INFO, c->log, 0,
607 "client sent too long command \"%V\"", &l); 606 "client sent too long command \"%V\"", &l);
608 607
609 s->quit = 1; 608 s->quit = 1;
610 609
611 return NGX_MAIL_PARSE_INVALID_COMMAND; 610 return NGX_MAIL_PARSE_INVALID_COMMAND;
614 if (rc == NGX_IMAP_NEXT || rc == NGX_MAIL_PARSE_INVALID_COMMAND) { 613 if (rc == NGX_IMAP_NEXT || rc == NGX_MAIL_PARSE_INVALID_COMMAND) {
615 return rc; 614 return rc;
616 } 615 }
617 616
618 if (rc == NGX_ERROR) { 617 if (rc == NGX_ERROR) {
619 ngx_mail_close_connection(s->connection); 618 ngx_mail_close_connection(c);
620 return NGX_ERROR; 619 return NGX_ERROR;
621 } 620 }
622 621
623 return NGX_OK; 622 return NGX_OK;
624 } 623 }
625 624
626 625
627 void 626 void
628 ngx_mail_auth(ngx_mail_session_t *s) 627 ngx_mail_auth(ngx_mail_session_t *s, ngx_connection_t *c)
629 { 628 {
630 s->args.nelts = 0; 629 s->args.nelts = 0;
631 s->buffer->pos = s->buffer->start; 630 s->buffer->pos = s->buffer->start;
632 s->buffer->last = s->buffer->start; 631 s->buffer->last = s->buffer->start;
633 s->state = 0; 632 s->state = 0;
634 633
635 if (s->connection->read->timer_set) { 634 if (c->read->timer_set) {
636 ngx_del_timer(s->connection->read); 635 ngx_del_timer(c->read);
637 } 636 }
638 637
639 s->login_attempt++; 638 s->login_attempt++;
640 639
641 ngx_mail_auth_http_init(s); 640 ngx_mail_auth_http_init(s);