Mercurial > hg > nginx-mail
comparison src/mail/ngx_mail_pop3_handler.c @ 665:0b460e61bdcd default tip
Merge with nginx 1.0.0.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 25 Apr 2011 04:22:17 +0400 |
parents | 5938746e70c2 8246d8a2c2be |
children |
comparison
equal
deleted
inserted
replaced
572:06419a2298a9 | 665:0b460e61bdcd |
---|---|
57 p = ngx_cpymem(p, s->salt.data, s->salt.len); | 57 p = ngx_cpymem(p, s->salt.data, s->salt.len); |
58 | 58 |
59 s->out.len = p - s->out.data; | 59 s->out.len = p - s->out.data; |
60 | 60 |
61 } else { | 61 } else { |
62 s->out.len = sizeof(pop3_greeting) - 1; | 62 ngx_str_set(&s->out, pop3_greeting); |
63 s->out.data = pop3_greeting; | |
64 } | 63 } |
65 | 64 |
66 c->read->handler = ngx_mail_pop3_init_protocol; | 65 c->read->handler = ngx_mail_pop3_init_protocol; |
67 | 66 |
68 ngx_add_timer(c->read, cscf->timeout); | 67 ngx_add_timer(c->read, cscf->timeout); |
147 | 146 |
148 if (rc == NGX_AGAIN || rc == NGX_ERROR) { | 147 if (rc == NGX_AGAIN || rc == NGX_ERROR) { |
149 return; | 148 return; |
150 } | 149 } |
151 | 150 |
152 s->out.len = sizeof(pop3_ok) - 1; | 151 ngx_str_set(&s->out, pop3_ok); |
153 s->out.data = pop3_ok; | |
154 | 152 |
155 if (rc == NGX_OK) { | 153 if (rc == NGX_OK) { |
156 switch (s->mail_state) { | 154 switch (s->mail_state) { |
157 | 155 |
158 case ngx_pop3_start: | 156 case ngx_pop3_start: |
186 rc = ngx_mail_pop3_stls(s, c); | 184 rc = ngx_mail_pop3_stls(s, c); |
187 break; | 185 break; |
188 | 186 |
189 default: | 187 default: |
190 rc = NGX_MAIL_PARSE_INVALID_COMMAND; | 188 rc = NGX_MAIL_PARSE_INVALID_COMMAND; |
191 s->mail_state = ngx_pop3_start; | |
192 break; | 189 break; |
193 } | 190 } |
194 | 191 |
195 break; | 192 break; |
196 | 193 |
213 case NGX_POP3_NOOP: | 210 case NGX_POP3_NOOP: |
214 break; | 211 break; |
215 | 212 |
216 default: | 213 default: |
217 rc = NGX_MAIL_PARSE_INVALID_COMMAND; | 214 rc = NGX_MAIL_PARSE_INVALID_COMMAND; |
218 s->mail_state = ngx_pop3_start; | |
219 break; | 215 break; |
220 } | 216 } |
221 | 217 |
222 break; | 218 break; |
223 | 219 |
226 break; | 222 break; |
227 | 223 |
228 case ngx_pop3_auth_login_username: | 224 case ngx_pop3_auth_login_username: |
229 rc = ngx_mail_auth_login_username(s, c, 0); | 225 rc = ngx_mail_auth_login_username(s, c, 0); |
230 | 226 |
231 s->out.len = sizeof(pop3_password) - 1; | 227 ngx_str_set(&s->out, pop3_password); |
232 s->out.data = pop3_password; | |
233 s->mail_state = ngx_pop3_auth_login_password; | 228 s->mail_state = ngx_pop3_auth_login_password; |
234 break; | 229 break; |
235 | 230 |
236 case ngx_pop3_auth_login_password: | 231 case ngx_pop3_auth_login_password: |
237 rc = ngx_mail_auth_login_password(s, c); | 232 rc = ngx_mail_auth_login_password(s, c); |
259 | 254 |
260 case NGX_MAIL_PARSE_INVALID_COMMAND: | 255 case NGX_MAIL_PARSE_INVALID_COMMAND: |
261 s->mail_state = ngx_pop3_start; | 256 s->mail_state = ngx_pop3_start; |
262 s->state = 0; | 257 s->state = 0; |
263 | 258 |
264 s->out.len = sizeof(pop3_invalid_command) - 1; | 259 ngx_str_set(&s->out, pop3_invalid_command); |
265 s->out.data = pop3_invalid_command; | |
266 | 260 |
267 /* fall through */ | 261 /* fall through */ |
268 | 262 |
269 case NGX_OK: | 263 case NGX_OK: |
270 | 264 |
466 | 460 |
467 switch (rc) { | 461 switch (rc) { |
468 | 462 |
469 case NGX_MAIL_AUTH_LOGIN: | 463 case NGX_MAIL_AUTH_LOGIN: |
470 | 464 |
471 s->out.len = sizeof(pop3_username) - 1; | 465 ngx_str_set(&s->out, pop3_username); |
472 s->out.data = pop3_username; | |
473 s->mail_state = ngx_pop3_auth_login_username; | 466 s->mail_state = ngx_pop3_auth_login_username; |
474 | 467 |
475 return NGX_OK; | 468 return NGX_OK; |
476 | 469 |
477 case NGX_MAIL_AUTH_LOGIN_USERNAME: | 470 case NGX_MAIL_AUTH_LOGIN_USERNAME: |
478 | 471 |
479 s->out.len = sizeof(pop3_password) - 1; | 472 ngx_str_set(&s->out, pop3_password); |
480 s->out.data = pop3_password; | |
481 s->mail_state = ngx_pop3_auth_login_password; | 473 s->mail_state = ngx_pop3_auth_login_password; |
482 | 474 |
483 return ngx_mail_auth_login_username(s, c, 1); | 475 return ngx_mail_auth_login_username(s, c, 1); |
484 | 476 |
485 case NGX_MAIL_AUTH_PLAIN: | 477 case NGX_MAIL_AUTH_PLAIN: |
486 | 478 |
487 s->out.len = sizeof(pop3_next) - 1; | 479 ngx_str_set(&s->out, pop3_next); |
488 s->out.data = pop3_next; | |
489 s->mail_state = ngx_pop3_auth_plain; | 480 s->mail_state = ngx_pop3_auth_plain; |
490 | 481 |
491 return NGX_OK; | 482 return NGX_OK; |
492 | 483 |
493 case NGX_MAIL_AUTH_CRAM_MD5: | 484 case NGX_MAIL_AUTH_CRAM_MD5: |