Mercurial > hg > nginx
comparison src/imap/ngx_imap_parse.c @ 421:01456a419cf9
nginx-0.0.10-2004-09-10-18:32:02 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 10 Sep 2004 14:32:02 +0000 |
parents | 47709bff4468 |
children | edaefb2a20fc |
comparison
equal
deleted
inserted
replaced
420:33a8253115b4 | 421:01456a419cf9 |
---|---|
37 && c[2] == 'E' && c[3] == 'R') | 37 && c[2] == 'E' && c[3] == 'R') |
38 { | 38 { |
39 s->command = NGX_POP3_USER; | 39 s->command = NGX_POP3_USER; |
40 | 40 |
41 } else if (c[0] == 'P' && c[1] == 'A' | 41 } else if (c[0] == 'P' && c[1] == 'A' |
42 && c[2] == 'A' && c[3] == 'S') | 42 && c[2] == 'S' && c[3] == 'S') |
43 { | 43 { |
44 s->command = NGX_POP3_PASS; | 44 s->command = NGX_POP3_PASS; |
45 | 45 |
46 } else if (c[0] == 'Q' && c[1] == 'U' | 46 } else if (c[0] == 'Q' && c[1] == 'U' |
47 && c[2] == 'I' && c[3] == 'T') | 47 && c[2] == 'I' && c[3] == 'T') |
54 { | 54 { |
55 s->command = NGX_POP3_NOOP; | 55 s->command = NGX_POP3_NOOP; |
56 #endif | 56 #endif |
57 | 57 |
58 } else { | 58 } else { |
59 s->state = sw_start; | |
59 return NGX_IMAP_PARSE_INVALID_COMMAND; | 60 return NGX_IMAP_PARSE_INVALID_COMMAND; |
60 } | 61 } |
61 | 62 |
62 } else { | 63 } else { |
64 s->state = sw_start; | |
63 return NGX_IMAP_PARSE_INVALID_COMMAND; | 65 return NGX_IMAP_PARSE_INVALID_COMMAND; |
64 } | 66 } |
65 | 67 |
66 switch (ch) { | 68 switch (ch) { |
67 case ' ': | 69 case ' ': |
76 } | 78 } |
77 break; | 79 break; |
78 } | 80 } |
79 | 81 |
80 if (ch < 'A' || ch > 'Z') { | 82 if (ch < 'A' || ch > 'Z') { |
83 s->state = sw_start; | |
81 return NGX_IMAP_PARSE_INVALID_COMMAND; | 84 return NGX_IMAP_PARSE_INVALID_COMMAND; |
82 } | 85 } |
83 | 86 |
84 break; | 87 break; |
85 | 88 |
96 state = sw_done; | 99 state = sw_done; |
97 s->arg_end = p - 1; | 100 s->arg_end = p - 1; |
98 break; | 101 break; |
99 default: | 102 default: |
100 if (s->args.nelts > 2) { | 103 if (s->args.nelts > 2) { |
104 s->state = sw_start; | |
101 return NGX_IMAP_PARSE_INVALID_COMMAND; | 105 return NGX_IMAP_PARSE_INVALID_COMMAND; |
102 } | 106 } |
103 | 107 |
104 state = sw_argument; | 108 state = sw_argument; |
105 s->arg_start = p - 1; | 109 s->arg_start = p - 1; |
143 switch (ch) { | 147 switch (ch) { |
144 case LF: | 148 case LF: |
145 state = sw_done; | 149 state = sw_done; |
146 break; | 150 break; |
147 default: | 151 default: |
152 s->state = sw_start; | |
148 return NGX_IMAP_PARSE_INVALID_COMMAND; | 153 return NGX_IMAP_PARSE_INVALID_COMMAND; |
149 } | 154 } |
150 break; | 155 break; |
151 | 156 |
152 /* suppress warning */ | 157 /* suppress warning */ |
165 arg->len = s->arg_end - s->arg_start; | 170 arg->len = s->arg_end - s->arg_start; |
166 arg->data = s->arg_start; | 171 arg->data = s->arg_start; |
167 s->arg_start = NULL; | 172 s->arg_start = NULL; |
168 } | 173 } |
169 | 174 |
175 s->state = sw_start; | |
170 return NGX_OK; | 176 return NGX_OK; |
171 | 177 |
172 } else { | 178 } else { |
173 s->state = state; | 179 s->state = state; |
174 return NGX_AGAIN; | 180 return NGX_AGAIN; |