comparison src/mail/ngx_mail_parse.c @ 1479:2647950e047f

optimizations
author Igor Sysoev <igor@sysoev.ru>
date Thu, 13 Sep 2007 21:24:27 +0000
parents 59e1caf2be94
children 8156bc03982a 62c95a6b143b
comparison
equal deleted inserted replaced
1478:d0cce8369848 1479:2647950e047f
823 s->state = sw_start; 823 s->state = sw_start;
824 s->arg_start = NULL; 824 s->arg_start = NULL;
825 825
826 return NGX_MAIL_PARSE_INVALID_COMMAND; 826 return NGX_MAIL_PARSE_INVALID_COMMAND;
827 } 827 }
828
829
830 ngx_int_t
831 ngx_mail_auth_parse(ngx_mail_session_t *s, ngx_connection_t *c)
832 {
833 ngx_str_t *arg;
834
835 #if (NGX_MAIL_SSL)
836 if (ngx_mail_starttls_only(s, c)) {
837 return NGX_MAIL_PARSE_INVALID_COMMAND;
838 }
839 #endif
840
841 arg = s->args.elts;
842
843 if (arg[0].len == 5) {
844
845 if (ngx_strncasecmp(arg[0].data, (u_char *) "LOGIN", 5) == 0) {
846
847 if (s->args.nelts == 1) {
848 return NGX_MAIL_AUTH_LOGIN;
849 }
850
851 return NGX_MAIL_PARSE_INVALID_COMMAND;
852 }
853
854 if (ngx_strncasecmp(arg[0].data, (u_char *) "PLAIN", 5) == 0) {
855
856 if (s->args.nelts == 1) {
857 return NGX_MAIL_AUTH_PLAIN;
858 }
859
860 if (s->args.nelts == 2) {
861 return ngx_mail_auth_plain(s, c, 1);
862 }
863 }
864
865 return NGX_MAIL_PARSE_INVALID_COMMAND;
866 }
867
868 if (arg[0].len == 8) {
869
870 if (s->args.nelts != 1) {
871 return NGX_MAIL_PARSE_INVALID_COMMAND;
872 }
873
874 if (ngx_strncasecmp(arg[0].data, (u_char *) "CRAM-MD5", 8) == 0) {
875 return NGX_MAIL_AUTH_CRAM_MD5;
876 }
877 }
878
879 return NGX_MAIL_PARSE_INVALID_COMMAND;
880 }