comparison src/mail/ngx_mail_parse.c @ 322:d16d691432c9 NGINX_0_6_5

nginx 0.6.5 *) Feature: $nginx_version variable. Thanks to Nick S. Grechukh. *) Feature: the mail proxy supports AUTHENTICATE in IMAP mode. Thanks to Maxim Dounin. *) Feature: the mail proxy supports STARTTLS in SMTP mode. Thanks to Maxim Dounin. *) Bugfix: now nginx escapes space in $memcached_key variable. *) Bugfix: nginx was incorrectly built by Sun Studio on Solaris/amd64. Thanks to Jiang Hong. *) Bugfix: of minor potential bugs. Thanks to Coverity's Scan.
author Igor Sysoev <http://sysoev.ru>
date Mon, 23 Jul 2007 00:00:00 +0400
parents f745bf973510
children 390b8f8309d6
comparison
equal deleted inserted replaced
321:a87830ef6fdd 322:d16d691432c9
352 } else { 352 } else {
353 goto invalid; 353 goto invalid;
354 } 354 }
355 break; 355 break;
356 356
357 case 12:
358 if ((c[0] == 'A'|| c[0] == 'a')
359 && (c[1] == 'U'|| c[1] == 'u')
360 && (c[2] == 'T'|| c[2] == 't')
361 && (c[3] == 'H'|| c[3] == 'h')
362 && (c[4] == 'E'|| c[4] == 'e')
363 && (c[5] == 'N'|| c[5] == 'n')
364 && (c[6] == 'T'|| c[6] == 't')
365 && (c[7] == 'I'|| c[7] == 'i')
366 && (c[8] == 'C'|| c[8] == 'c')
367 && (c[9] == 'A'|| c[9] == 'a')
368 && (c[10] == 'T'|| c[10] == 't')
369 && (c[11] == 'E'|| c[11] == 'e'))
370 {
371 s->command = NGX_IMAP_AUTHENTICATE;
372
373 } else {
374 goto invalid;
375 }
376 break;
377
357 default: 378 default:
358 goto invalid; 379 goto invalid;
359 } 380 }
360 381
361 switch (ch) { 382 switch (ch) {
571 s->quoted = 0; 592 s->quoted = 0;
572 s->no_sync_literal = 0; 593 s->no_sync_literal = 0;
573 s->literal_len = 0; 594 s->literal_len = 0;
574 } 595 }
575 596
576 s->state = sw_start; 597 s->state = (s->command != NGX_IMAP_AUTHENTICATE) ? sw_start : sw_argument;
577 598
578 return NGX_OK; 599 return NGX_OK;
579 600
580 invalid: 601 invalid:
581 602
644 665
645 } else if (c0 == 'R' && c1 == 'S' && c2 == 'E' && c3 == 'T') 666 } else if (c0 == 'R' && c1 == 'S' && c2 == 'E' && c3 == 'T')
646 { 667 {
647 s->command = NGX_SMTP_RSET; 668 s->command = NGX_SMTP_RSET;
648 669
670 } else if (c0 == 'R' && c1 == 'C' && c2 == 'P' && c3 == 'T')
671 {
672 s->command = NGX_SMTP_RCPT;
673
674 } else if (c0 == 'V' && c1 == 'R' && c2 == 'F' && c3 == 'Y')
675 {
676 s->command = NGX_SMTP_VRFY;
677
678 } else if (c0 == 'E' && c1 == 'X' && c2 == 'P' && c3 == 'N')
679 {
680 s->command = NGX_SMTP_EXPN;
681
682 } else if (c0 == 'H' && c1 == 'E' && c2 == 'L' && c3 == 'P')
683 {
684 s->command = NGX_SMTP_HELP;
685
649 } else { 686 } else {
650 goto invalid; 687 goto invalid;
651 } 688 }
652 689 #if (NGX_MAIL_SSL)
690 } else if (p - c == 8) {
691
692 if ((c[0] == 'S'|| c[0] == 's')
693 && (c[1] == 'T'|| c[1] == 't')
694 && (c[2] == 'A'|| c[2] == 'a')
695 && (c[3] == 'R'|| c[3] == 'r')
696 && (c[4] == 'T'|| c[4] == 't')
697 && (c[5] == 'T'|| c[5] == 't')
698 && (c[6] == 'L'|| c[6] == 'l')
699 && (c[7] == 'S'|| c[7] == 's'))
700 {
701 s->command = NGX_SMTP_STARTTLS;
702
703 } else {
704 goto invalid;
705 }
706 #endif
653 } else { 707 } else {
654 goto invalid; 708 goto invalid;
655 } 709 }
656 710
657 switch (ch) { 711 switch (ch) {