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: