Mercurial > hg > nginx-quic
comparison src/imap/ngx_imap_handler.c @ 855:b006f30d6a2f
count s->login_attempt for POP3, minimize code
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 17 Nov 2006 09:00:43 +0000 |
parents | 7b8692910220 |
children | 4d68c486fcb0 |
comparison
equal
deleted
inserted
replaced
854:1673f197bc62 | 855:b006f30d6a2f |
---|---|
10 #include <ngx_imap.h> | 10 #include <ngx_imap.h> |
11 | 11 |
12 | 12 |
13 static void ngx_imap_init_session(ngx_connection_t *c); | 13 static void ngx_imap_init_session(ngx_connection_t *c); |
14 static void ngx_imap_init_protocol(ngx_event_t *rev); | 14 static void ngx_imap_init_protocol(ngx_event_t *rev); |
15 static void ngx_imap_do_auth(ngx_imap_session_t *s); | |
15 static ngx_int_t ngx_imap_read_command(ngx_imap_session_t *s); | 16 static ngx_int_t ngx_imap_read_command(ngx_imap_session_t *s); |
16 static u_char *ngx_imap_log_error(ngx_log_t *log, u_char *buf, size_t len); | 17 static u_char *ngx_imap_log_error(ngx_log_t *log, u_char *buf, size_t len); |
17 | 18 |
18 #if (NGX_IMAP_SSL) | 19 #if (NGX_IMAP_SSL) |
19 static void ngx_imap_ssl_init_connection(ngx_ssl_t *ssl, ngx_connection_t *c); | 20 static void ngx_imap_ssl_init_connection(ngx_ssl_t *ssl, ngx_connection_t *c); |
535 #else | 536 #else |
536 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, | 537 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, |
537 "imap login:\"%V\"", &s->login); | 538 "imap login:\"%V\"", &s->login); |
538 #endif | 539 #endif |
539 | 540 |
540 s->args.nelts = 0; | 541 ngx_imap_do_auth(s); |
541 s->buffer->pos = s->buffer->start; | |
542 s->buffer->last = s->buffer->start; | |
543 | |
544 if (rev->timer_set) { | |
545 ngx_del_timer(rev); | |
546 } | |
547 | |
548 s->login_attempt++; | |
549 | |
550 ngx_imap_auth_http_init(s); | |
551 | |
552 return; | 542 return; |
553 } | 543 } |
554 | 544 |
555 rc = NGX_IMAP_PARSE_INVALID_COMMAND; | 545 rc = NGX_IMAP_PARSE_INVALID_COMMAND; |
556 break; | 546 break; |
787 "pop3 apop: \"%V\" \"%V\"", | 777 "pop3 apop: \"%V\" \"%V\"", |
788 &s->login, &s->passwd); | 778 &s->login, &s->passwd); |
789 | 779 |
790 s->auth_method = NGX_IMAP_AUTH_APOP; | 780 s->auth_method = NGX_IMAP_AUTH_APOP; |
791 | 781 |
792 s->args.nelts = 0; | 782 ngx_imap_do_auth(s); |
793 s->buffer->pos = s->buffer->start; | |
794 s->buffer->last = s->buffer->start; | |
795 | |
796 if (rev->timer_set) { | |
797 ngx_del_timer(rev); | |
798 } | |
799 | |
800 ngx_imap_auth_http_init(s); | |
801 | |
802 return; | 783 return; |
803 } | 784 } |
804 | 785 |
805 rc = NGX_IMAP_PARSE_INVALID_COMMAND; | 786 rc = NGX_IMAP_PARSE_INVALID_COMMAND; |
806 break; | 787 break; |
920 #if (NGX_DEBUG_IMAP_PASSWD) | 901 #if (NGX_DEBUG_IMAP_PASSWD) |
921 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, | 902 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, |
922 "pop3 passwd: \"%V\"", &s->passwd); | 903 "pop3 passwd: \"%V\"", &s->passwd); |
923 #endif | 904 #endif |
924 | 905 |
925 s->args.nelts = 0; | 906 ngx_imap_do_auth(s); |
926 s->buffer->pos = s->buffer->start; | |
927 s->buffer->last = s->buffer->start; | |
928 | |
929 if (rev->timer_set) { | |
930 ngx_del_timer(rev); | |
931 } | |
932 | |
933 ngx_imap_auth_http_init(s); | |
934 | |
935 return; | 907 return; |
936 } | 908 } |
937 | 909 |
938 rc = NGX_IMAP_PARSE_INVALID_COMMAND; | 910 rc = NGX_IMAP_PARSE_INVALID_COMMAND; |
939 break; | 911 break; |
1019 #if (NGX_DEBUG_IMAP_PASSWD) | 991 #if (NGX_DEBUG_IMAP_PASSWD) |
1020 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, | 992 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, |
1021 "pop3 auth login password: \"%V\"", &s->passwd); | 993 "pop3 auth login password: \"%V\"", &s->passwd); |
1022 #endif | 994 #endif |
1023 | 995 |
1024 s->args.nelts = 0; | 996 ngx_imap_do_auth(s); |
1025 s->buffer->pos = s->buffer->start; | |
1026 s->buffer->last = s->buffer->start; | |
1027 s->state = 0; | |
1028 | |
1029 if (rev->timer_set) { | |
1030 ngx_del_timer(rev); | |
1031 } | |
1032 | |
1033 ngx_imap_auth_http_init(s); | |
1034 | |
1035 return; | 997 return; |
1036 | 998 |
1037 case ngx_pop3_auth_plain: | 999 case ngx_pop3_auth_plain: |
1038 arg = s->args.elts; | 1000 arg = s->args.elts; |
1039 | 1001 |
1091 ngx_log_debug2(NGX_LOG_DEBUG_IMAP, c->log, 0, | 1053 ngx_log_debug2(NGX_LOG_DEBUG_IMAP, c->log, 0, |
1092 "pop3 auth plain: \"%V\" \"%V\"", | 1054 "pop3 auth plain: \"%V\" \"%V\"", |
1093 &s->login, &s->passwd); | 1055 &s->login, &s->passwd); |
1094 #endif | 1056 #endif |
1095 | 1057 |
1096 s->args.nelts = 0; | 1058 ngx_imap_do_auth(s); |
1097 s->buffer->pos = s->buffer->start; | |
1098 s->buffer->last = s->buffer->start; | |
1099 s->state = 0; | |
1100 | |
1101 if (rev->timer_set) { | |
1102 ngx_del_timer(rev); | |
1103 } | |
1104 | |
1105 ngx_imap_auth_http_init(s); | |
1106 | |
1107 return; | 1059 return; |
1108 | 1060 |
1109 case ngx_pop3_auth_cram_md5: | 1061 case ngx_pop3_auth_cram_md5: |
1110 arg = s->args.elts; | 1062 arg = s->args.elts; |
1111 | 1063 |
1151 "pop3 auth cram-md5: \"%V\" \"%V\"", | 1103 "pop3 auth cram-md5: \"%V\" \"%V\"", |
1152 &s->login, &s->passwd); | 1104 &s->login, &s->passwd); |
1153 | 1105 |
1154 s->auth_method = NGX_IMAP_AUTH_CRAM_MD5; | 1106 s->auth_method = NGX_IMAP_AUTH_CRAM_MD5; |
1155 | 1107 |
1156 s->args.nelts = 0; | 1108 ngx_imap_do_auth(s); |
1157 s->buffer->pos = s->buffer->start; | |
1158 s->buffer->last = s->buffer->start; | |
1159 s->state = 0; | |
1160 | |
1161 if (rev->timer_set) { | |
1162 ngx_del_timer(rev); | |
1163 } | |
1164 | |
1165 ngx_imap_auth_http_init(s); | |
1166 | |
1167 return; | 1109 return; |
1168 } | 1110 } |
1169 } | 1111 } |
1170 | 1112 |
1171 if (rc == NGX_IMAP_PARSE_INVALID_COMMAND) { | 1113 if (rc == NGX_IMAP_PARSE_INVALID_COMMAND) { |
1188 | 1130 |
1189 ngx_imap_send(c->write); | 1131 ngx_imap_send(c->write); |
1190 } | 1132 } |
1191 | 1133 |
1192 | 1134 |
1135 static void | |
1136 ngx_imap_do_auth(ngx_imap_session_t *s) | |
1137 { | |
1138 s->args.nelts = 0; | |
1139 s->buffer->pos = s->buffer->start; | |
1140 s->buffer->last = s->buffer->start; | |
1141 s->state = 0; | |
1142 | |
1143 if (s->connection->read->timer_set) { | |
1144 ngx_del_timer(s->connection->read); | |
1145 } | |
1146 | |
1147 s->login_attempt++; | |
1148 | |
1149 ngx_imap_auth_http_init(s); | |
1150 } | |
1151 | |
1152 | |
1193 static ngx_int_t | 1153 static ngx_int_t |
1194 ngx_imap_read_command(ngx_imap_session_t *s) | 1154 ngx_imap_read_command(ngx_imap_session_t *s) |
1195 { | 1155 { |
1196 ssize_t n; | 1156 ssize_t n; |
1197 ngx_int_t rc; | 1157 ngx_int_t rc; |