20 u_char ch, *p, *c, c0, c1, c2, c3;
24 sw_spaces_before_argument,
38 if (ch ==
' ' || ch ==
CR || ch ==
LF) {
48 if (c0 ==
'U' && c1 ==
'S' && c2 ==
'E' && c3 ==
'R')
52 }
else if (c0 ==
'P' && c1 ==
'A' && c2 ==
'S' && c3 ==
'S')
56 }
else if (c0 ==
'A' && c1 ==
'P' && c2 ==
'O' && c3 ==
'P')
60 }
else if (c0 ==
'Q' && c1 ==
'U' && c2 ==
'I' && c3 ==
'T')
64 }
else if (c0 ==
'C' && c1 ==
'A' && c2 ==
'P' && c3 ==
'A')
68 }
else if (c0 ==
'A' && c1 ==
'U' && c2 ==
'T' && c3 ==
'H')
72 }
else if (c0 ==
'N' && c1 ==
'O' && c2 ==
'O' && c3 ==
'P')
76 }
else if (c0 ==
'S' && c1 ==
'T' && c2 ==
'L' && c3 ==
'S')
90 state = sw_spaces_before_argument;
93 state = sw_almost_done;
101 if ((ch < 'A' || ch >
'Z') && (ch < 'a' || ch >
'z')) {
107 case sw_spaces_before_argument:
112 state = sw_almost_done;
158 state = sw_spaces_before_argument;
161 state = sw_almost_done;
222 sw_spaces_before_command,
224 sw_spaces_before_argument,
228 sw_no_sync_literal_argument,
229 sw_start_literal_argument,
231 sw_end_literal_argument,
248 state = sw_spaces_before_command;
259 case sw_spaces_before_command:
277 if (ch ==
' ' || ch ==
CR || ch ==
LF) {
284 if ((c[0] ==
'N' || c[0] ==
'n')
285 && (c[1] ==
'O'|| c[1] ==
'o')
286 && (c[2] ==
'O'|| c[2] ==
'o')
287 && (c[3] ==
'P'|| c[3] ==
'p'))
297 if ((c[0] ==
'L'|| c[0] ==
'l')
298 && (c[1] ==
'O'|| c[1] ==
'o')
299 && (c[2] ==
'G'|| c[2] ==
'g')
300 && (c[3] ==
'I'|| c[3] ==
'i')
301 && (c[4] ==
'N'|| c[4] ==
'n'))
311 if ((c[0] ==
'L'|| c[0] ==
'l')
312 && (c[1] ==
'O'|| c[1] ==
'o')
313 && (c[2] ==
'G'|| c[2] ==
'g')
314 && (c[3] ==
'O'|| c[3] ==
'o')
315 && (c[4] ==
'U'|| c[4] ==
'u')
316 && (c[5] ==
'T'|| c[5] ==
't'))
327 if ((c[0] ==
'S'|| c[0] ==
's')
328 && (c[1] ==
'T'|| c[1] ==
't')
329 && (c[2] ==
'A'|| c[2] ==
'a')
330 && (c[3] ==
'R'|| c[3] ==
'r')
331 && (c[4] ==
'T'|| c[4] ==
't')
332 && (c[5] ==
'T'|| c[5] ==
't')
333 && (c[6] ==
'L'|| c[6] ==
'l')
334 && (c[7] ==
'S'|| c[7] ==
's'))
345 if ((c[0] ==
'C'|| c[0] ==
'c')
346 && (c[1] ==
'A'|| c[1] ==
'a')
347 && (c[2] ==
'P'|| c[2] ==
'p')
348 && (c[3] ==
'A'|| c[3] ==
'a')
349 && (c[4] ==
'B'|| c[4] ==
'b')
350 && (c[5] ==
'I'|| c[5] ==
'i')
351 && (c[6] ==
'L'|| c[6] ==
'l')
352 && (c[7] ==
'I'|| c[7] ==
'i')
353 && (c[8] ==
'T'|| c[8] ==
't')
354 && (c[9] ==
'Y'|| c[9] ==
'y'))
364 if ((c[0] ==
'A'|| c[0] ==
'a')
365 && (c[1] ==
'U'|| c[1] ==
'u')
366 && (c[2] ==
'T'|| c[2] ==
't')
367 && (c[3] ==
'H'|| c[3] ==
'h')
368 && (c[4] ==
'E'|| c[4] ==
'e')
369 && (c[5] ==
'N'|| c[5] ==
'n')
370 && (c[6] ==
'T'|| c[6] ==
't')
371 && (c[7] ==
'I'|| c[7] ==
'i')
372 && (c[8] ==
'C'|| c[8] ==
'c')
373 && (c[9] ==
'A'|| c[9] ==
'a')
374 && (c[10] ==
'T'|| c[10] ==
't')
375 && (c[11] ==
'E'|| c[11] ==
'e'))
390 state = sw_spaces_before_argument;
393 state = sw_almost_done;
401 if ((ch < 'A' || ch >
'Z') && (ch < 'a' || ch >
'z')) {
407 case sw_spaces_before_argument:
412 state = sw_almost_done;
443 if (ch ==
' ' && s->
quoted) {
468 state = sw_spaces_before_argument;
471 state = sw_almost_done;
480 state = sw_backslash;
497 if (ch >=
'0' && ch <=
'9') {
502 state = sw_start_literal_argument;
506 state = sw_no_sync_literal_argument;
511 case sw_no_sync_literal_argument:
514 state = sw_start_literal_argument;
519 case sw_start_literal_argument:
527 s->
state = sw_literal_argument;
530 state = sw_literal_argument;
538 case sw_literal_argument:
550 state = sw_end_literal_argument;
554 case sw_end_literal_argument:
563 state = sw_almost_done;
568 state = sw_spaces_before_argument;
625 u_char ch, *p, *c, c0, c1, c2, c3;
629 sw_spaces_before_argument,
643 if (ch ==
' ' || ch ==
CR || ch ==
LF) {
653 if (c0 ==
'H' && c1 ==
'E' && c2 ==
'L' && c3 ==
'O')
657 }
else if (c0 ==
'E' && c1 ==
'H' && c2 ==
'L' && c3 ==
'O')
661 }
else if (c0 ==
'Q' && c1 ==
'U' && c2 ==
'I' && c3 ==
'T')
665 }
else if (c0 ==
'A' && c1 ==
'U' && c2 ==
'T' && c3 ==
'H')
669 }
else if (c0 ==
'N' && c1 ==
'O' && c2 ==
'O' && c3 ==
'P')
673 }
else if (c0 ==
'M' && c1 ==
'A' && c2 ==
'I' && c3 ==
'L')
677 }
else if (c0 ==
'R' && c1 ==
'S' && c2 ==
'E' && c3 ==
'T')
681 }
else if (c0 ==
'R' && c1 ==
'C' && c2 ==
'P' && c3 ==
'T')
685 }
else if (c0 ==
'V' && c1 ==
'R' && c2 ==
'F' && c3 ==
'Y')
689 }
else if (c0 ==
'E' && c1 ==
'X' && c2 ==
'P' && c3 ==
'N')
693 }
else if (c0 ==
'H' && c1 ==
'E' && c2 ==
'L' && c3 ==
'P')
701 }
else if (p - c == 8) {
703 if ((c[0] ==
'S'|| c[0] ==
's')
704 && (c[1] ==
'T'|| c[1] ==
't')
705 && (c[2] ==
'A'|| c[2] ==
'a')
706 && (c[3] ==
'R'|| c[3] ==
'r')
707 && (c[4] ==
'T'|| c[4] ==
't')
708 && (c[5] ==
'T'|| c[5] ==
't')
709 && (c[6] ==
'L'|| c[6] ==
'l')
710 && (c[7] ==
'S'|| c[7] ==
's'))
724 state = sw_spaces_before_argument;
727 state = sw_almost_done;
735 if ((ch < 'A' || ch >
'Z') && (ch < 'a' || ch >
'z')) {
741 case sw_spaces_before_argument:
746 state = sw_almost_done;
777 state = sw_spaces_before_argument;
780 state = sw_almost_done;
840 if (ngx_mail_starttls_only(s, c)) {
847 if (arg[0].len == 5) {
876 if (arg[0].len == 8) {