Update
[mistral.git] / parser.c
blobd30253c411a06d08fb342cdaef6d7266fc5c30fc
1 #line 1 "src/parser.rl"
2 /**
3 * Copyright (c) 2005 Zed A. Shaw
4 * You can redistribute it and/or modify it under the same terms as Ruby.
5 */
6 #include "parser.h"
7 #include <stdio.h>
8 #include <assert.h>
9 #include <stdlib.h>
10 #include <ctype.h>
11 #include <string.h>
13 #define TRUE 1
14 #define FALSE 0
15 #define LEN(AT, FPC) (FPC - buffer - parser->AT)
16 #define MARK(M,FPC) (parser->M = (FPC) - buffer)
17 #define PTR_TO(F) (buffer + parser->F)
18 /** machine **/
19 #line 139 "src/parser.rl"
22 /** Data **/
24 #line 25 "src/parser.c"
25 static const int http_parser_start = 1;
26 static const int http_parser_first_final = 118;
27 static const int http_parser_error = 0;
29 static const int http_parser_en_main = 1;
31 #line 143 "src/parser.rl"
33 /* returns TRUE if applied, FALSE if there was an error */
34 static int apply_element(http_parser *parser, int type, const char *begin, const char *end, int max_length)
36 int len = (int)(end-begin);
37 if(len > max_length) {
38 parser->overflow_error = TRUE;
39 return FALSE;
41 if(parser->on_element)
42 parser->on_element(parser->data, type, begin, len);
43 return TRUE;
46 static void set_content_length(http_parser *parser, const char *at, int length)
48 /* atoi_length - why isn't this in the statndard library? i hate c */
49 assert(parser->content_length == 0);
50 int i, mult;
51 for(mult=1, i=length-1; i>=0; i--, mult*=10)
52 parser->content_length += (at[i] - '0') * mult;
55 void http_parser_init(http_parser *parser) {
56 int cs = 0;
58 #line 59 "src/parser.c"
60 cs = http_parser_start;
62 #line 169 "src/parser.rl"
63 parser->cs = cs;
64 parser->overflow_error = FALSE;
65 parser->body_start = 0;
66 parser->content_length = 0;
67 parser->mark = 0;
68 parser->nread = 0;
69 parser->field_len = 0;
70 parser->field_start = 0;
71 parser->data = NULL;
72 parser->http_field = NULL;
76 /** exec **/
77 size_t http_parser_execute(http_parser *parser, const char *buffer, size_t len, size_t off) {
78 const char *p, *pe;
79 int cs = parser->cs;
81 assert(off <= len && "offset past end of buffer");
83 p = buffer+off;
84 pe = buffer+len;
86 /* Ragel 6 does not require this */
87 // assert(*pe == '\0' && "pointer does not end on NUL");
88 assert(pe - p == len - off && "pointers aren't same distance");
91 #line 92 "src/parser.c"
93 if ( p == pe )
94 goto _test_eof;
95 switch ( cs )
97 case 1:
98 switch( (*p) ) {
99 case 36: goto tr0;
100 case 95: goto tr0;
102 if ( (*p) < 48 ) {
103 if ( 45 <= (*p) && (*p) <= 46 )
104 goto tr0;
105 } else if ( (*p) > 57 ) {
106 if ( 65 <= (*p) && (*p) <= 90 )
107 goto tr0;
108 } else
109 goto tr0;
110 goto st0;
111 st0:
112 cs = 0;
113 goto _out;
114 tr0:
115 #line 21 "src/parser.rl"
116 {MARK(mark, p); }
117 goto st2;
118 st2:
119 if ( ++p == pe )
120 goto _test_eof2;
121 case 2:
122 #line 123 "src/parser.c"
123 switch( (*p) ) {
124 case 32: goto tr2;
125 case 36: goto st99;
126 case 95: goto st99;
128 if ( (*p) < 48 ) {
129 if ( 45 <= (*p) && (*p) <= 46 )
130 goto st99;
131 } else if ( (*p) > 57 ) {
132 if ( 65 <= (*p) && (*p) <= 90 )
133 goto st99;
134 } else
135 goto st99;
136 goto st0;
137 tr2:
138 #line 66 "src/parser.rl"
140 if(!apply_element(parser, MONGREL_REQUEST_METHOD, PTR_TO(mark), p, 1024))
141 {p++; cs = 3; goto _out;}
143 goto st3;
144 st3:
145 if ( ++p == pe )
146 goto _test_eof3;
147 case 3:
148 #line 149 "src/parser.c"
149 switch( (*p) ) {
150 case 42: goto tr4;
151 case 43: goto tr5;
152 case 47: goto tr6;
153 case 58: goto tr7;
155 if ( (*p) < 65 ) {
156 if ( 45 <= (*p) && (*p) <= 57 )
157 goto tr5;
158 } else if ( (*p) > 90 ) {
159 if ( 97 <= (*p) && (*p) <= 122 )
160 goto tr5;
161 } else
162 goto tr5;
163 goto st0;
164 tr4:
165 #line 21 "src/parser.rl"
166 {MARK(mark, p); }
167 goto st4;
168 st4:
169 if ( ++p == pe )
170 goto _test_eof4;
171 case 4:
172 #line 173 "src/parser.c"
173 switch( (*p) ) {
174 case 32: goto tr8;
175 case 35: goto tr9;
177 goto st0;
178 tr8:
179 #line 71 "src/parser.rl"
181 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
182 {p++; cs = 5; goto _out;}
184 goto st5;
185 tr103:
186 #line 21 "src/parser.rl"
187 {MARK(mark, p); }
188 #line 51 "src/parser.rl"
190 if(!apply_element(parser, MONGREL_FRAGMENT, PTR_TO(mark), p, 10*1024))
191 {p++; cs = 5; goto _out;}
193 goto st5;
194 tr106:
195 #line 51 "src/parser.rl"
197 if(!apply_element(parser, MONGREL_FRAGMENT, PTR_TO(mark), p, 10*1024))
198 {p++; cs = 5; goto _out;}
200 goto st5;
201 tr114:
202 #line 61 "src/parser.rl"
204 if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
205 {p++; cs = 5; goto _out;}
207 #line 71 "src/parser.rl"
209 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
210 {p++; cs = 5; goto _out;}
212 goto st5;
213 tr125:
214 #line 76 "src/parser.rl"
215 {MARK(query_start, p); }
216 #line 77 "src/parser.rl"
218 if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
219 {p++; cs = 5; goto _out;}
221 #line 71 "src/parser.rl"
223 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
224 {p++; cs = 5; goto _out;}
226 goto st5;
227 tr129:
228 #line 77 "src/parser.rl"
230 if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
231 {p++; cs = 5; goto _out;}
233 #line 71 "src/parser.rl"
235 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
236 {p++; cs = 5; goto _out;}
238 goto st5;
239 st5:
240 if ( ++p == pe )
241 goto _test_eof5;
242 case 5:
243 #line 244 "src/parser.c"
244 if ( (*p) == 72 )
245 goto tr10;
246 goto st0;
247 tr10:
248 #line 21 "src/parser.rl"
249 {MARK(mark, p); }
250 goto st6;
251 st6:
252 if ( ++p == pe )
253 goto _test_eof6;
254 case 6:
255 #line 256 "src/parser.c"
256 if ( (*p) == 84 )
257 goto st7;
258 goto st0;
259 st7:
260 if ( ++p == pe )
261 goto _test_eof7;
262 case 7:
263 if ( (*p) == 84 )
264 goto st8;
265 goto st0;
266 st8:
267 if ( ++p == pe )
268 goto _test_eof8;
269 case 8:
270 if ( (*p) == 80 )
271 goto st9;
272 goto st0;
273 st9:
274 if ( ++p == pe )
275 goto _test_eof9;
276 case 9:
277 if ( (*p) == 47 )
278 goto st10;
279 goto st0;
280 st10:
281 if ( ++p == pe )
282 goto _test_eof10;
283 case 10:
284 if ( 48 <= (*p) && (*p) <= 57 )
285 goto st11;
286 goto st0;
287 st11:
288 if ( ++p == pe )
289 goto _test_eof11;
290 case 11:
291 if ( (*p) == 46 )
292 goto st12;
293 if ( 48 <= (*p) && (*p) <= 57 )
294 goto st11;
295 goto st0;
296 st12:
297 if ( ++p == pe )
298 goto _test_eof12;
299 case 12:
300 if ( 48 <= (*p) && (*p) <= 57 )
301 goto st13;
302 goto st0;
303 st13:
304 if ( ++p == pe )
305 goto _test_eof13;
306 case 13:
307 if ( (*p) == 13 )
308 goto tr18;
309 if ( 48 <= (*p) && (*p) <= 57 )
310 goto st13;
311 goto st0;
312 tr18:
313 #line 56 "src/parser.rl"
315 if(!apply_element(parser, MONGREL_HTTP_VERSION, PTR_TO(mark), p, 10))
316 {p++; cs = 14; goto _out;}
318 goto st14;
319 tr28:
320 #line 32 "src/parser.rl"
321 { MARK(mark, p); }
322 #line 33 "src/parser.rl"
324 if(LEN(mark, p) > 80 * 1024) { parser->overflow_error = TRUE; {p++; cs = 14; goto _out;} }
325 if(parser->http_field != NULL) {
326 parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
329 goto st14;
330 tr32:
331 #line 33 "src/parser.rl"
333 if(LEN(mark, p) > 80 * 1024) { parser->overflow_error = TRUE; {p++; cs = 14; goto _out;} }
334 if(parser->http_field != NULL) {
335 parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
338 goto st14;
339 tr91:
340 #line 40 "src/parser.rl"
342 if(!apply_element(parser, MONGREL_CONTENT_LENGTH, PTR_TO(mark), p, 20))
343 {p++; cs = 14; goto _out;}
344 set_content_length(parser, PTR_TO(mark), LEN(mark, p));
346 goto st14;
347 tr98:
348 #line 21 "src/parser.rl"
349 {MARK(mark, p); }
350 #line 46 "src/parser.rl"
352 if(!apply_element(parser, MONGREL_CONTENT_TYPE, PTR_TO(mark), p, 10*1024))
353 {p++; cs = 14; goto _out;}
355 goto st14;
356 tr101:
357 #line 46 "src/parser.rl"
359 if(!apply_element(parser, MONGREL_CONTENT_TYPE, PTR_TO(mark), p, 10*1024))
360 {p++; cs = 14; goto _out;}
362 goto st14;
363 st14:
364 if ( ++p == pe )
365 goto _test_eof14;
366 case 14:
367 #line 368 "src/parser.c"
368 if ( (*p) == 10 )
369 goto st15;
370 goto st0;
371 st15:
372 if ( ++p == pe )
373 goto _test_eof15;
374 case 15:
375 switch( (*p) ) {
376 case 13: goto st16;
377 case 33: goto tr21;
378 case 67: goto tr22;
379 case 99: goto tr22;
380 case 124: goto tr21;
381 case 126: goto tr21;
383 if ( (*p) < 45 ) {
384 if ( (*p) > 39 ) {
385 if ( 42 <= (*p) && (*p) <= 43 )
386 goto tr21;
387 } else if ( (*p) >= 35 )
388 goto tr21;
389 } else if ( (*p) > 46 ) {
390 if ( (*p) < 65 ) {
391 if ( 48 <= (*p) && (*p) <= 57 )
392 goto tr21;
393 } else if ( (*p) > 90 ) {
394 if ( 94 <= (*p) && (*p) <= 122 )
395 goto tr21;
396 } else
397 goto tr21;
398 } else
399 goto tr21;
400 goto st0;
401 st16:
402 if ( ++p == pe )
403 goto _test_eof16;
404 case 16:
405 if ( (*p) == 10 )
406 goto tr23;
407 goto st0;
408 tr23:
409 #line 82 "src/parser.rl"
411 parser->body_start = p - buffer + 1;
412 {p++; cs = 118; goto _out;}
414 goto st118;
415 st118:
416 if ( ++p == pe )
417 goto _test_eof118;
418 case 118:
419 #line 420 "src/parser.c"
420 goto st0;
421 tr21:
422 #line 23 "src/parser.rl"
423 { MARK(field_start, p); }
424 goto st17;
425 st17:
426 if ( ++p == pe )
427 goto _test_eof17;
428 case 17:
429 #line 430 "src/parser.c"
430 switch( (*p) ) {
431 case 33: goto st17;
432 case 58: goto tr25;
433 case 67: goto st40;
434 case 99: goto st40;
435 case 124: goto st17;
436 case 126: goto st17;
438 if ( (*p) < 45 ) {
439 if ( (*p) > 39 ) {
440 if ( 42 <= (*p) && (*p) <= 43 )
441 goto st17;
442 } else if ( (*p) >= 35 )
443 goto st17;
444 } else if ( (*p) > 46 ) {
445 if ( (*p) < 65 ) {
446 if ( 48 <= (*p) && (*p) <= 57 )
447 goto st17;
448 } else if ( (*p) > 90 ) {
449 if ( 94 <= (*p) && (*p) <= 122 )
450 goto st17;
451 } else
452 goto st17;
453 } else
454 goto st17;
455 goto st0;
456 tr25:
457 #line 24 "src/parser.rl"
459 parser->field_len = LEN(field_start, p);
460 if(parser->field_len > 256) {
461 parser->overflow_error = TRUE;
462 {p++; cs = 18; goto _out;}
465 goto st18;
466 tr29:
467 #line 32 "src/parser.rl"
468 { MARK(mark, p); }
469 goto st18;
470 st18:
471 if ( ++p == pe )
472 goto _test_eof18;
473 case 18:
474 #line 475 "src/parser.c"
475 switch( (*p) ) {
476 case 13: goto tr28;
477 case 32: goto tr29;
478 case 67: goto tr30;
479 case 99: goto tr30;
481 goto tr27;
482 tr27:
483 #line 32 "src/parser.rl"
484 { MARK(mark, p); }
485 goto st19;
486 st19:
487 if ( ++p == pe )
488 goto _test_eof19;
489 case 19:
490 #line 491 "src/parser.c"
491 switch( (*p) ) {
492 case 13: goto tr32;
493 case 67: goto st20;
494 case 99: goto st20;
496 goto st19;
497 tr30:
498 #line 32 "src/parser.rl"
499 { MARK(mark, p); }
500 goto st20;
501 st20:
502 if ( ++p == pe )
503 goto _test_eof20;
504 case 20:
505 #line 506 "src/parser.c"
506 switch( (*p) ) {
507 case 13: goto tr32;
508 case 67: goto st20;
509 case 79: goto st21;
510 case 99: goto st20;
511 case 111: goto st21;
513 goto st19;
514 st21:
515 if ( ++p == pe )
516 goto _test_eof21;
517 case 21:
518 switch( (*p) ) {
519 case 13: goto tr32;
520 case 67: goto st20;
521 case 78: goto st22;
522 case 99: goto st20;
523 case 110: goto st22;
525 goto st19;
526 st22:
527 if ( ++p == pe )
528 goto _test_eof22;
529 case 22:
530 switch( (*p) ) {
531 case 13: goto tr32;
532 case 67: goto st20;
533 case 84: goto st23;
534 case 99: goto st20;
535 case 116: goto st23;
537 goto st19;
538 st23:
539 if ( ++p == pe )
540 goto _test_eof23;
541 case 23:
542 switch( (*p) ) {
543 case 13: goto tr32;
544 case 67: goto st20;
545 case 69: goto st24;
546 case 99: goto st20;
547 case 101: goto st24;
549 goto st19;
550 st24:
551 if ( ++p == pe )
552 goto _test_eof24;
553 case 24:
554 switch( (*p) ) {
555 case 13: goto tr32;
556 case 67: goto st20;
557 case 78: goto st25;
558 case 99: goto st20;
559 case 110: goto st25;
561 goto st19;
562 st25:
563 if ( ++p == pe )
564 goto _test_eof25;
565 case 25:
566 switch( (*p) ) {
567 case 13: goto tr32;
568 case 67: goto st20;
569 case 84: goto st26;
570 case 99: goto st20;
571 case 116: goto st26;
573 goto st19;
574 st26:
575 if ( ++p == pe )
576 goto _test_eof26;
577 case 26:
578 switch( (*p) ) {
579 case 13: goto tr32;
580 case 45: goto st27;
581 case 67: goto st20;
582 case 99: goto st20;
584 goto st19;
585 st27:
586 if ( ++p == pe )
587 goto _test_eof27;
588 case 27:
589 switch( (*p) ) {
590 case 13: goto tr32;
591 case 67: goto st20;
592 case 76: goto st28;
593 case 84: goto st36;
594 case 99: goto st20;
595 case 108: goto st28;
596 case 116: goto st36;
598 goto st19;
599 st28:
600 if ( ++p == pe )
601 goto _test_eof28;
602 case 28:
603 switch( (*p) ) {
604 case 13: goto tr32;
605 case 67: goto st20;
606 case 69: goto st29;
607 case 99: goto st20;
608 case 101: goto st29;
610 goto st19;
611 st29:
612 if ( ++p == pe )
613 goto _test_eof29;
614 case 29:
615 switch( (*p) ) {
616 case 13: goto tr32;
617 case 67: goto st20;
618 case 78: goto st30;
619 case 99: goto st20;
620 case 110: goto st30;
622 goto st19;
623 st30:
624 if ( ++p == pe )
625 goto _test_eof30;
626 case 30:
627 switch( (*p) ) {
628 case 13: goto tr32;
629 case 67: goto st20;
630 case 71: goto st31;
631 case 99: goto st20;
632 case 103: goto st31;
634 goto st19;
635 st31:
636 if ( ++p == pe )
637 goto _test_eof31;
638 case 31:
639 switch( (*p) ) {
640 case 13: goto tr32;
641 case 67: goto st20;
642 case 84: goto st32;
643 case 99: goto st20;
644 case 116: goto st32;
646 goto st19;
647 st32:
648 if ( ++p == pe )
649 goto _test_eof32;
650 case 32:
651 switch( (*p) ) {
652 case 13: goto tr32;
653 case 67: goto st20;
654 case 72: goto st33;
655 case 99: goto st20;
656 case 104: goto st33;
658 goto st19;
659 st33:
660 if ( ++p == pe )
661 goto _test_eof33;
662 case 33:
663 switch( (*p) ) {
664 case 13: goto tr32;
665 case 58: goto st34;
666 case 67: goto st20;
667 case 99: goto st20;
669 goto st19;
670 st34:
671 if ( ++p == pe )
672 goto _test_eof34;
673 case 34:
674 switch( (*p) ) {
675 case 13: goto tr32;
676 case 32: goto st34;
677 case 67: goto st20;
678 case 99: goto st20;
680 if ( 48 <= (*p) && (*p) <= 57 )
681 goto tr49;
682 goto st19;
683 tr49:
684 #line 21 "src/parser.rl"
685 {MARK(mark, p); }
686 goto st35;
687 tr70:
688 #line 32 "src/parser.rl"
689 { MARK(mark, p); }
690 #line 21 "src/parser.rl"
691 {MARK(mark, p); }
692 goto st35;
693 st35:
694 if ( ++p == pe )
695 goto _test_eof35;
696 case 35:
697 #line 698 "src/parser.c"
698 switch( (*p) ) {
699 case 13: goto st0;
700 case 67: goto st20;
701 case 99: goto st20;
703 if ( 48 <= (*p) && (*p) <= 57 )
704 goto st35;
705 goto st19;
706 st36:
707 if ( ++p == pe )
708 goto _test_eof36;
709 case 36:
710 switch( (*p) ) {
711 case 13: goto tr32;
712 case 67: goto st20;
713 case 89: goto st37;
714 case 99: goto st20;
715 case 121: goto st37;
717 goto st19;
718 st37:
719 if ( ++p == pe )
720 goto _test_eof37;
721 case 37:
722 switch( (*p) ) {
723 case 13: goto tr32;
724 case 67: goto st20;
725 case 80: goto st38;
726 case 99: goto st20;
727 case 112: goto st38;
729 goto st19;
730 st38:
731 if ( ++p == pe )
732 goto _test_eof38;
733 case 38:
734 switch( (*p) ) {
735 case 13: goto tr32;
736 case 67: goto st20;
737 case 69: goto st39;
738 case 99: goto st20;
739 case 101: goto st39;
741 goto st19;
742 st39:
743 if ( ++p == pe )
744 goto _test_eof39;
745 case 39:
746 switch( (*p) ) {
747 case 13: goto tr32;
748 case 58: goto st0;
749 case 67: goto st20;
750 case 99: goto st20;
752 goto st19;
753 st40:
754 if ( ++p == pe )
755 goto _test_eof40;
756 case 40:
757 switch( (*p) ) {
758 case 33: goto st17;
759 case 58: goto tr25;
760 case 67: goto st40;
761 case 79: goto st41;
762 case 99: goto st40;
763 case 111: goto st41;
764 case 124: goto st17;
765 case 126: goto st17;
767 if ( (*p) < 45 ) {
768 if ( (*p) > 39 ) {
769 if ( 42 <= (*p) && (*p) <= 43 )
770 goto st17;
771 } else if ( (*p) >= 35 )
772 goto st17;
773 } else if ( (*p) > 46 ) {
774 if ( (*p) < 65 ) {
775 if ( 48 <= (*p) && (*p) <= 57 )
776 goto st17;
777 } else if ( (*p) > 90 ) {
778 if ( 94 <= (*p) && (*p) <= 122 )
779 goto st17;
780 } else
781 goto st17;
782 } else
783 goto st17;
784 goto st0;
785 st41:
786 if ( ++p == pe )
787 goto _test_eof41;
788 case 41:
789 switch( (*p) ) {
790 case 33: goto st17;
791 case 58: goto tr25;
792 case 67: goto st40;
793 case 78: goto st42;
794 case 99: goto st40;
795 case 110: goto st42;
796 case 124: goto st17;
797 case 126: goto st17;
799 if ( (*p) < 45 ) {
800 if ( (*p) > 39 ) {
801 if ( 42 <= (*p) && (*p) <= 43 )
802 goto st17;
803 } else if ( (*p) >= 35 )
804 goto st17;
805 } else if ( (*p) > 46 ) {
806 if ( (*p) < 65 ) {
807 if ( 48 <= (*p) && (*p) <= 57 )
808 goto st17;
809 } else if ( (*p) > 90 ) {
810 if ( 94 <= (*p) && (*p) <= 122 )
811 goto st17;
812 } else
813 goto st17;
814 } else
815 goto st17;
816 goto st0;
817 st42:
818 if ( ++p == pe )
819 goto _test_eof42;
820 case 42:
821 switch( (*p) ) {
822 case 33: goto st17;
823 case 58: goto tr25;
824 case 67: goto st40;
825 case 84: goto st43;
826 case 99: goto st40;
827 case 116: goto st43;
828 case 124: goto st17;
829 case 126: goto st17;
831 if ( (*p) < 45 ) {
832 if ( (*p) > 39 ) {
833 if ( 42 <= (*p) && (*p) <= 43 )
834 goto st17;
835 } else if ( (*p) >= 35 )
836 goto st17;
837 } else if ( (*p) > 46 ) {
838 if ( (*p) < 65 ) {
839 if ( 48 <= (*p) && (*p) <= 57 )
840 goto st17;
841 } else if ( (*p) > 90 ) {
842 if ( 94 <= (*p) && (*p) <= 122 )
843 goto st17;
844 } else
845 goto st17;
846 } else
847 goto st17;
848 goto st0;
849 st43:
850 if ( ++p == pe )
851 goto _test_eof43;
852 case 43:
853 switch( (*p) ) {
854 case 33: goto st17;
855 case 58: goto tr25;
856 case 67: goto st40;
857 case 69: goto st44;
858 case 99: goto st40;
859 case 101: goto st44;
860 case 124: goto st17;
861 case 126: goto st17;
863 if ( (*p) < 45 ) {
864 if ( (*p) > 39 ) {
865 if ( 42 <= (*p) && (*p) <= 43 )
866 goto st17;
867 } else if ( (*p) >= 35 )
868 goto st17;
869 } else if ( (*p) > 46 ) {
870 if ( (*p) < 65 ) {
871 if ( 48 <= (*p) && (*p) <= 57 )
872 goto st17;
873 } else if ( (*p) > 90 ) {
874 if ( 94 <= (*p) && (*p) <= 122 )
875 goto st17;
876 } else
877 goto st17;
878 } else
879 goto st17;
880 goto st0;
881 st44:
882 if ( ++p == pe )
883 goto _test_eof44;
884 case 44:
885 switch( (*p) ) {
886 case 33: goto st17;
887 case 58: goto tr25;
888 case 67: goto st40;
889 case 78: goto st45;
890 case 99: goto st40;
891 case 110: goto st45;
892 case 124: goto st17;
893 case 126: goto st17;
895 if ( (*p) < 45 ) {
896 if ( (*p) > 39 ) {
897 if ( 42 <= (*p) && (*p) <= 43 )
898 goto st17;
899 } else if ( (*p) >= 35 )
900 goto st17;
901 } else if ( (*p) > 46 ) {
902 if ( (*p) < 65 ) {
903 if ( 48 <= (*p) && (*p) <= 57 )
904 goto st17;
905 } else if ( (*p) > 90 ) {
906 if ( 94 <= (*p) && (*p) <= 122 )
907 goto st17;
908 } else
909 goto st17;
910 } else
911 goto st17;
912 goto st0;
913 st45:
914 if ( ++p == pe )
915 goto _test_eof45;
916 case 45:
917 switch( (*p) ) {
918 case 33: goto st17;
919 case 58: goto tr25;
920 case 67: goto st40;
921 case 84: goto st46;
922 case 99: goto st40;
923 case 116: goto st46;
924 case 124: goto st17;
925 case 126: goto st17;
927 if ( (*p) < 45 ) {
928 if ( (*p) > 39 ) {
929 if ( 42 <= (*p) && (*p) <= 43 )
930 goto st17;
931 } else if ( (*p) >= 35 )
932 goto st17;
933 } else if ( (*p) > 46 ) {
934 if ( (*p) < 65 ) {
935 if ( 48 <= (*p) && (*p) <= 57 )
936 goto st17;
937 } else if ( (*p) > 90 ) {
938 if ( 94 <= (*p) && (*p) <= 122 )
939 goto st17;
940 } else
941 goto st17;
942 } else
943 goto st17;
944 goto st0;
945 st46:
946 if ( ++p == pe )
947 goto _test_eof46;
948 case 46:
949 switch( (*p) ) {
950 case 33: goto st17;
951 case 45: goto st47;
952 case 46: goto st17;
953 case 58: goto tr25;
954 case 67: goto st40;
955 case 99: goto st40;
956 case 124: goto st17;
957 case 126: goto st17;
959 if ( (*p) < 48 ) {
960 if ( (*p) > 39 ) {
961 if ( 42 <= (*p) && (*p) <= 43 )
962 goto st17;
963 } else if ( (*p) >= 35 )
964 goto st17;
965 } else if ( (*p) > 57 ) {
966 if ( (*p) > 90 ) {
967 if ( 94 <= (*p) && (*p) <= 122 )
968 goto st17;
969 } else if ( (*p) >= 65 )
970 goto st17;
971 } else
972 goto st17;
973 goto st0;
974 st47:
975 if ( ++p == pe )
976 goto _test_eof47;
977 case 47:
978 switch( (*p) ) {
979 case 33: goto st17;
980 case 58: goto tr25;
981 case 67: goto st40;
982 case 76: goto st48;
983 case 84: goto st55;
984 case 99: goto st40;
985 case 108: goto st48;
986 case 116: goto st55;
987 case 124: goto st17;
988 case 126: goto st17;
990 if ( (*p) < 45 ) {
991 if ( (*p) > 39 ) {
992 if ( 42 <= (*p) && (*p) <= 43 )
993 goto st17;
994 } else if ( (*p) >= 35 )
995 goto st17;
996 } else if ( (*p) > 46 ) {
997 if ( (*p) < 65 ) {
998 if ( 48 <= (*p) && (*p) <= 57 )
999 goto st17;
1000 } else if ( (*p) > 90 ) {
1001 if ( 94 <= (*p) && (*p) <= 122 )
1002 goto st17;
1003 } else
1004 goto st17;
1005 } else
1006 goto st17;
1007 goto st0;
1008 st48:
1009 if ( ++p == pe )
1010 goto _test_eof48;
1011 case 48:
1012 switch( (*p) ) {
1013 case 33: goto st17;
1014 case 58: goto tr25;
1015 case 67: goto st40;
1016 case 69: goto st49;
1017 case 99: goto st40;
1018 case 101: goto st49;
1019 case 124: goto st17;
1020 case 126: goto st17;
1022 if ( (*p) < 45 ) {
1023 if ( (*p) > 39 ) {
1024 if ( 42 <= (*p) && (*p) <= 43 )
1025 goto st17;
1026 } else if ( (*p) >= 35 )
1027 goto st17;
1028 } else if ( (*p) > 46 ) {
1029 if ( (*p) < 65 ) {
1030 if ( 48 <= (*p) && (*p) <= 57 )
1031 goto st17;
1032 } else if ( (*p) > 90 ) {
1033 if ( 94 <= (*p) && (*p) <= 122 )
1034 goto st17;
1035 } else
1036 goto st17;
1037 } else
1038 goto st17;
1039 goto st0;
1040 st49:
1041 if ( ++p == pe )
1042 goto _test_eof49;
1043 case 49:
1044 switch( (*p) ) {
1045 case 33: goto st17;
1046 case 58: goto tr25;
1047 case 67: goto st40;
1048 case 78: goto st50;
1049 case 99: goto st40;
1050 case 110: goto st50;
1051 case 124: goto st17;
1052 case 126: goto st17;
1054 if ( (*p) < 45 ) {
1055 if ( (*p) > 39 ) {
1056 if ( 42 <= (*p) && (*p) <= 43 )
1057 goto st17;
1058 } else if ( (*p) >= 35 )
1059 goto st17;
1060 } else if ( (*p) > 46 ) {
1061 if ( (*p) < 65 ) {
1062 if ( 48 <= (*p) && (*p) <= 57 )
1063 goto st17;
1064 } else if ( (*p) > 90 ) {
1065 if ( 94 <= (*p) && (*p) <= 122 )
1066 goto st17;
1067 } else
1068 goto st17;
1069 } else
1070 goto st17;
1071 goto st0;
1072 st50:
1073 if ( ++p == pe )
1074 goto _test_eof50;
1075 case 50:
1076 switch( (*p) ) {
1077 case 33: goto st17;
1078 case 58: goto tr25;
1079 case 67: goto st40;
1080 case 71: goto st51;
1081 case 99: goto st40;
1082 case 103: goto st51;
1083 case 124: goto st17;
1084 case 126: goto st17;
1086 if ( (*p) < 45 ) {
1087 if ( (*p) > 39 ) {
1088 if ( 42 <= (*p) && (*p) <= 43 )
1089 goto st17;
1090 } else if ( (*p) >= 35 )
1091 goto st17;
1092 } else if ( (*p) > 46 ) {
1093 if ( (*p) < 65 ) {
1094 if ( 48 <= (*p) && (*p) <= 57 )
1095 goto st17;
1096 } else if ( (*p) > 90 ) {
1097 if ( 94 <= (*p) && (*p) <= 122 )
1098 goto st17;
1099 } else
1100 goto st17;
1101 } else
1102 goto st17;
1103 goto st0;
1104 st51:
1105 if ( ++p == pe )
1106 goto _test_eof51;
1107 case 51:
1108 switch( (*p) ) {
1109 case 33: goto st17;
1110 case 58: goto tr25;
1111 case 67: goto st40;
1112 case 84: goto st52;
1113 case 99: goto st40;
1114 case 116: goto st52;
1115 case 124: goto st17;
1116 case 126: goto st17;
1118 if ( (*p) < 45 ) {
1119 if ( (*p) > 39 ) {
1120 if ( 42 <= (*p) && (*p) <= 43 )
1121 goto st17;
1122 } else if ( (*p) >= 35 )
1123 goto st17;
1124 } else if ( (*p) > 46 ) {
1125 if ( (*p) < 65 ) {
1126 if ( 48 <= (*p) && (*p) <= 57 )
1127 goto st17;
1128 } else if ( (*p) > 90 ) {
1129 if ( 94 <= (*p) && (*p) <= 122 )
1130 goto st17;
1131 } else
1132 goto st17;
1133 } else
1134 goto st17;
1135 goto st0;
1136 st52:
1137 if ( ++p == pe )
1138 goto _test_eof52;
1139 case 52:
1140 switch( (*p) ) {
1141 case 33: goto st17;
1142 case 58: goto tr25;
1143 case 67: goto st40;
1144 case 72: goto st53;
1145 case 99: goto st40;
1146 case 104: goto st53;
1147 case 124: goto st17;
1148 case 126: goto st17;
1150 if ( (*p) < 45 ) {
1151 if ( (*p) > 39 ) {
1152 if ( 42 <= (*p) && (*p) <= 43 )
1153 goto st17;
1154 } else if ( (*p) >= 35 )
1155 goto st17;
1156 } else if ( (*p) > 46 ) {
1157 if ( (*p) < 65 ) {
1158 if ( 48 <= (*p) && (*p) <= 57 )
1159 goto st17;
1160 } else if ( (*p) > 90 ) {
1161 if ( 94 <= (*p) && (*p) <= 122 )
1162 goto st17;
1163 } else
1164 goto st17;
1165 } else
1166 goto st17;
1167 goto st0;
1168 st53:
1169 if ( ++p == pe )
1170 goto _test_eof53;
1171 case 53:
1172 switch( (*p) ) {
1173 case 33: goto st17;
1174 case 58: goto tr68;
1175 case 67: goto st40;
1176 case 99: goto st40;
1177 case 124: goto st17;
1178 case 126: goto st17;
1180 if ( (*p) < 45 ) {
1181 if ( (*p) > 39 ) {
1182 if ( 42 <= (*p) && (*p) <= 43 )
1183 goto st17;
1184 } else if ( (*p) >= 35 )
1185 goto st17;
1186 } else if ( (*p) > 46 ) {
1187 if ( (*p) < 65 ) {
1188 if ( 48 <= (*p) && (*p) <= 57 )
1189 goto st17;
1190 } else if ( (*p) > 90 ) {
1191 if ( 94 <= (*p) && (*p) <= 122 )
1192 goto st17;
1193 } else
1194 goto st17;
1195 } else
1196 goto st17;
1197 goto st0;
1198 tr68:
1199 #line 24 "src/parser.rl"
1201 parser->field_len = LEN(field_start, p);
1202 if(parser->field_len > 256) {
1203 parser->overflow_error = TRUE;
1204 {p++; cs = 54; goto _out;}
1207 goto st54;
1208 tr69:
1209 #line 32 "src/parser.rl"
1210 { MARK(mark, p); }
1211 goto st54;
1212 st54:
1213 if ( ++p == pe )
1214 goto _test_eof54;
1215 case 54:
1216 #line 1217 "src/parser.c"
1217 switch( (*p) ) {
1218 case 13: goto tr28;
1219 case 32: goto tr69;
1220 case 67: goto tr30;
1221 case 99: goto tr30;
1223 if ( 48 <= (*p) && (*p) <= 57 )
1224 goto tr70;
1225 goto tr27;
1226 st55:
1227 if ( ++p == pe )
1228 goto _test_eof55;
1229 case 55:
1230 switch( (*p) ) {
1231 case 33: goto st17;
1232 case 58: goto tr25;
1233 case 67: goto st40;
1234 case 89: goto st56;
1235 case 99: goto st40;
1236 case 121: goto st56;
1237 case 124: goto st17;
1238 case 126: goto st17;
1240 if ( (*p) < 45 ) {
1241 if ( (*p) > 39 ) {
1242 if ( 42 <= (*p) && (*p) <= 43 )
1243 goto st17;
1244 } else if ( (*p) >= 35 )
1245 goto st17;
1246 } else if ( (*p) > 46 ) {
1247 if ( (*p) < 65 ) {
1248 if ( 48 <= (*p) && (*p) <= 57 )
1249 goto st17;
1250 } else if ( (*p) > 90 ) {
1251 if ( 94 <= (*p) && (*p) <= 122 )
1252 goto st17;
1253 } else
1254 goto st17;
1255 } else
1256 goto st17;
1257 goto st0;
1258 st56:
1259 if ( ++p == pe )
1260 goto _test_eof56;
1261 case 56:
1262 switch( (*p) ) {
1263 case 33: goto st17;
1264 case 58: goto tr25;
1265 case 67: goto st40;
1266 case 80: goto st57;
1267 case 99: goto st40;
1268 case 112: goto st57;
1269 case 124: goto st17;
1270 case 126: goto st17;
1272 if ( (*p) < 45 ) {
1273 if ( (*p) > 39 ) {
1274 if ( 42 <= (*p) && (*p) <= 43 )
1275 goto st17;
1276 } else if ( (*p) >= 35 )
1277 goto st17;
1278 } else if ( (*p) > 46 ) {
1279 if ( (*p) < 65 ) {
1280 if ( 48 <= (*p) && (*p) <= 57 )
1281 goto st17;
1282 } else if ( (*p) > 90 ) {
1283 if ( 94 <= (*p) && (*p) <= 122 )
1284 goto st17;
1285 } else
1286 goto st17;
1287 } else
1288 goto st17;
1289 goto st0;
1290 st57:
1291 if ( ++p == pe )
1292 goto _test_eof57;
1293 case 57:
1294 switch( (*p) ) {
1295 case 33: goto st17;
1296 case 58: goto tr25;
1297 case 67: goto st40;
1298 case 69: goto st58;
1299 case 99: goto st40;
1300 case 101: goto st58;
1301 case 124: goto st17;
1302 case 126: goto st17;
1304 if ( (*p) < 45 ) {
1305 if ( (*p) > 39 ) {
1306 if ( 42 <= (*p) && (*p) <= 43 )
1307 goto st17;
1308 } else if ( (*p) >= 35 )
1309 goto st17;
1310 } else if ( (*p) > 46 ) {
1311 if ( (*p) < 65 ) {
1312 if ( 48 <= (*p) && (*p) <= 57 )
1313 goto st17;
1314 } else if ( (*p) > 90 ) {
1315 if ( 94 <= (*p) && (*p) <= 122 )
1316 goto st17;
1317 } else
1318 goto st17;
1319 } else
1320 goto st17;
1321 goto st0;
1322 st58:
1323 if ( ++p == pe )
1324 goto _test_eof58;
1325 case 58:
1326 switch( (*p) ) {
1327 case 33: goto st17;
1328 case 67: goto st40;
1329 case 99: goto st40;
1330 case 124: goto st17;
1331 case 126: goto st17;
1333 if ( (*p) < 45 ) {
1334 if ( (*p) > 39 ) {
1335 if ( 42 <= (*p) && (*p) <= 43 )
1336 goto st17;
1337 } else if ( (*p) >= 35 )
1338 goto st17;
1339 } else if ( (*p) > 46 ) {
1340 if ( (*p) < 65 ) {
1341 if ( 48 <= (*p) && (*p) <= 57 )
1342 goto st17;
1343 } else if ( (*p) > 90 ) {
1344 if ( 94 <= (*p) && (*p) <= 122 )
1345 goto st17;
1346 } else
1347 goto st17;
1348 } else
1349 goto st17;
1350 goto st0;
1351 tr22:
1352 #line 23 "src/parser.rl"
1353 { MARK(field_start, p); }
1354 goto st59;
1355 st59:
1356 if ( ++p == pe )
1357 goto _test_eof59;
1358 case 59:
1359 #line 1360 "src/parser.c"
1360 switch( (*p) ) {
1361 case 33: goto st17;
1362 case 58: goto tr25;
1363 case 67: goto st40;
1364 case 79: goto st60;
1365 case 99: goto st40;
1366 case 111: goto st60;
1367 case 124: goto st17;
1368 case 126: goto st17;
1370 if ( (*p) < 45 ) {
1371 if ( (*p) > 39 ) {
1372 if ( 42 <= (*p) && (*p) <= 43 )
1373 goto st17;
1374 } else if ( (*p) >= 35 )
1375 goto st17;
1376 } else if ( (*p) > 46 ) {
1377 if ( (*p) < 65 ) {
1378 if ( 48 <= (*p) && (*p) <= 57 )
1379 goto st17;
1380 } else if ( (*p) > 90 ) {
1381 if ( 94 <= (*p) && (*p) <= 122 )
1382 goto st17;
1383 } else
1384 goto st17;
1385 } else
1386 goto st17;
1387 goto st0;
1388 st60:
1389 if ( ++p == pe )
1390 goto _test_eof60;
1391 case 60:
1392 switch( (*p) ) {
1393 case 33: goto st17;
1394 case 58: goto tr25;
1395 case 67: goto st40;
1396 case 78: goto st61;
1397 case 99: goto st40;
1398 case 110: goto st61;
1399 case 124: goto st17;
1400 case 126: goto st17;
1402 if ( (*p) < 45 ) {
1403 if ( (*p) > 39 ) {
1404 if ( 42 <= (*p) && (*p) <= 43 )
1405 goto st17;
1406 } else if ( (*p) >= 35 )
1407 goto st17;
1408 } else if ( (*p) > 46 ) {
1409 if ( (*p) < 65 ) {
1410 if ( 48 <= (*p) && (*p) <= 57 )
1411 goto st17;
1412 } else if ( (*p) > 90 ) {
1413 if ( 94 <= (*p) && (*p) <= 122 )
1414 goto st17;
1415 } else
1416 goto st17;
1417 } else
1418 goto st17;
1419 goto st0;
1420 st61:
1421 if ( ++p == pe )
1422 goto _test_eof61;
1423 case 61:
1424 switch( (*p) ) {
1425 case 33: goto st17;
1426 case 58: goto tr25;
1427 case 67: goto st40;
1428 case 84: goto st62;
1429 case 99: goto st40;
1430 case 116: goto st62;
1431 case 124: goto st17;
1432 case 126: goto st17;
1434 if ( (*p) < 45 ) {
1435 if ( (*p) > 39 ) {
1436 if ( 42 <= (*p) && (*p) <= 43 )
1437 goto st17;
1438 } else if ( (*p) >= 35 )
1439 goto st17;
1440 } else if ( (*p) > 46 ) {
1441 if ( (*p) < 65 ) {
1442 if ( 48 <= (*p) && (*p) <= 57 )
1443 goto st17;
1444 } else if ( (*p) > 90 ) {
1445 if ( 94 <= (*p) && (*p) <= 122 )
1446 goto st17;
1447 } else
1448 goto st17;
1449 } else
1450 goto st17;
1451 goto st0;
1452 st62:
1453 if ( ++p == pe )
1454 goto _test_eof62;
1455 case 62:
1456 switch( (*p) ) {
1457 case 33: goto st17;
1458 case 58: goto tr25;
1459 case 67: goto st40;
1460 case 69: goto st63;
1461 case 99: goto st40;
1462 case 101: goto st63;
1463 case 124: goto st17;
1464 case 126: goto st17;
1466 if ( (*p) < 45 ) {
1467 if ( (*p) > 39 ) {
1468 if ( 42 <= (*p) && (*p) <= 43 )
1469 goto st17;
1470 } else if ( (*p) >= 35 )
1471 goto st17;
1472 } else if ( (*p) > 46 ) {
1473 if ( (*p) < 65 ) {
1474 if ( 48 <= (*p) && (*p) <= 57 )
1475 goto st17;
1476 } else if ( (*p) > 90 ) {
1477 if ( 94 <= (*p) && (*p) <= 122 )
1478 goto st17;
1479 } else
1480 goto st17;
1481 } else
1482 goto st17;
1483 goto st0;
1484 st63:
1485 if ( ++p == pe )
1486 goto _test_eof63;
1487 case 63:
1488 switch( (*p) ) {
1489 case 33: goto st17;
1490 case 58: goto tr25;
1491 case 67: goto st40;
1492 case 78: goto st64;
1493 case 99: goto st40;
1494 case 110: goto st64;
1495 case 124: goto st17;
1496 case 126: goto st17;
1498 if ( (*p) < 45 ) {
1499 if ( (*p) > 39 ) {
1500 if ( 42 <= (*p) && (*p) <= 43 )
1501 goto st17;
1502 } else if ( (*p) >= 35 )
1503 goto st17;
1504 } else if ( (*p) > 46 ) {
1505 if ( (*p) < 65 ) {
1506 if ( 48 <= (*p) && (*p) <= 57 )
1507 goto st17;
1508 } else if ( (*p) > 90 ) {
1509 if ( 94 <= (*p) && (*p) <= 122 )
1510 goto st17;
1511 } else
1512 goto st17;
1513 } else
1514 goto st17;
1515 goto st0;
1516 st64:
1517 if ( ++p == pe )
1518 goto _test_eof64;
1519 case 64:
1520 switch( (*p) ) {
1521 case 33: goto st17;
1522 case 58: goto tr25;
1523 case 67: goto st40;
1524 case 84: goto st65;
1525 case 99: goto st40;
1526 case 116: goto st65;
1527 case 124: goto st17;
1528 case 126: goto st17;
1530 if ( (*p) < 45 ) {
1531 if ( (*p) > 39 ) {
1532 if ( 42 <= (*p) && (*p) <= 43 )
1533 goto st17;
1534 } else if ( (*p) >= 35 )
1535 goto st17;
1536 } else if ( (*p) > 46 ) {
1537 if ( (*p) < 65 ) {
1538 if ( 48 <= (*p) && (*p) <= 57 )
1539 goto st17;
1540 } else if ( (*p) > 90 ) {
1541 if ( 94 <= (*p) && (*p) <= 122 )
1542 goto st17;
1543 } else
1544 goto st17;
1545 } else
1546 goto st17;
1547 goto st0;
1548 st65:
1549 if ( ++p == pe )
1550 goto _test_eof65;
1551 case 65:
1552 switch( (*p) ) {
1553 case 33: goto st17;
1554 case 45: goto st66;
1555 case 46: goto st17;
1556 case 58: goto tr25;
1557 case 67: goto st40;
1558 case 99: goto st40;
1559 case 124: goto st17;
1560 case 126: goto st17;
1562 if ( (*p) < 48 ) {
1563 if ( (*p) > 39 ) {
1564 if ( 42 <= (*p) && (*p) <= 43 )
1565 goto st17;
1566 } else if ( (*p) >= 35 )
1567 goto st17;
1568 } else if ( (*p) > 57 ) {
1569 if ( (*p) > 90 ) {
1570 if ( 94 <= (*p) && (*p) <= 122 )
1571 goto st17;
1572 } else if ( (*p) >= 65 )
1573 goto st17;
1574 } else
1575 goto st17;
1576 goto st0;
1577 st66:
1578 if ( ++p == pe )
1579 goto _test_eof66;
1580 case 66:
1581 switch( (*p) ) {
1582 case 33: goto st17;
1583 case 58: goto tr25;
1584 case 67: goto st40;
1585 case 76: goto st67;
1586 case 84: goto st75;
1587 case 99: goto st40;
1588 case 108: goto st67;
1589 case 116: goto st75;
1590 case 124: goto st17;
1591 case 126: goto st17;
1593 if ( (*p) < 45 ) {
1594 if ( (*p) > 39 ) {
1595 if ( 42 <= (*p) && (*p) <= 43 )
1596 goto st17;
1597 } else if ( (*p) >= 35 )
1598 goto st17;
1599 } else if ( (*p) > 46 ) {
1600 if ( (*p) < 65 ) {
1601 if ( 48 <= (*p) && (*p) <= 57 )
1602 goto st17;
1603 } else if ( (*p) > 90 ) {
1604 if ( 94 <= (*p) && (*p) <= 122 )
1605 goto st17;
1606 } else
1607 goto st17;
1608 } else
1609 goto st17;
1610 goto st0;
1611 st67:
1612 if ( ++p == pe )
1613 goto _test_eof67;
1614 case 67:
1615 switch( (*p) ) {
1616 case 33: goto st17;
1617 case 58: goto tr25;
1618 case 67: goto st40;
1619 case 69: goto st68;
1620 case 99: goto st40;
1621 case 101: goto st68;
1622 case 124: goto st17;
1623 case 126: goto st17;
1625 if ( (*p) < 45 ) {
1626 if ( (*p) > 39 ) {
1627 if ( 42 <= (*p) && (*p) <= 43 )
1628 goto st17;
1629 } else if ( (*p) >= 35 )
1630 goto st17;
1631 } else if ( (*p) > 46 ) {
1632 if ( (*p) < 65 ) {
1633 if ( 48 <= (*p) && (*p) <= 57 )
1634 goto st17;
1635 } else if ( (*p) > 90 ) {
1636 if ( 94 <= (*p) && (*p) <= 122 )
1637 goto st17;
1638 } else
1639 goto st17;
1640 } else
1641 goto st17;
1642 goto st0;
1643 st68:
1644 if ( ++p == pe )
1645 goto _test_eof68;
1646 case 68:
1647 switch( (*p) ) {
1648 case 33: goto st17;
1649 case 58: goto tr25;
1650 case 67: goto st40;
1651 case 78: goto st69;
1652 case 99: goto st40;
1653 case 110: goto st69;
1654 case 124: goto st17;
1655 case 126: goto st17;
1657 if ( (*p) < 45 ) {
1658 if ( (*p) > 39 ) {
1659 if ( 42 <= (*p) && (*p) <= 43 )
1660 goto st17;
1661 } else if ( (*p) >= 35 )
1662 goto st17;
1663 } else if ( (*p) > 46 ) {
1664 if ( (*p) < 65 ) {
1665 if ( 48 <= (*p) && (*p) <= 57 )
1666 goto st17;
1667 } else if ( (*p) > 90 ) {
1668 if ( 94 <= (*p) && (*p) <= 122 )
1669 goto st17;
1670 } else
1671 goto st17;
1672 } else
1673 goto st17;
1674 goto st0;
1675 st69:
1676 if ( ++p == pe )
1677 goto _test_eof69;
1678 case 69:
1679 switch( (*p) ) {
1680 case 33: goto st17;
1681 case 58: goto tr25;
1682 case 67: goto st40;
1683 case 71: goto st70;
1684 case 99: goto st40;
1685 case 103: goto st70;
1686 case 124: goto st17;
1687 case 126: goto st17;
1689 if ( (*p) < 45 ) {
1690 if ( (*p) > 39 ) {
1691 if ( 42 <= (*p) && (*p) <= 43 )
1692 goto st17;
1693 } else if ( (*p) >= 35 )
1694 goto st17;
1695 } else if ( (*p) > 46 ) {
1696 if ( (*p) < 65 ) {
1697 if ( 48 <= (*p) && (*p) <= 57 )
1698 goto st17;
1699 } else if ( (*p) > 90 ) {
1700 if ( 94 <= (*p) && (*p) <= 122 )
1701 goto st17;
1702 } else
1703 goto st17;
1704 } else
1705 goto st17;
1706 goto st0;
1707 st70:
1708 if ( ++p == pe )
1709 goto _test_eof70;
1710 case 70:
1711 switch( (*p) ) {
1712 case 33: goto st17;
1713 case 58: goto tr25;
1714 case 67: goto st40;
1715 case 84: goto st71;
1716 case 99: goto st40;
1717 case 116: goto st71;
1718 case 124: goto st17;
1719 case 126: goto st17;
1721 if ( (*p) < 45 ) {
1722 if ( (*p) > 39 ) {
1723 if ( 42 <= (*p) && (*p) <= 43 )
1724 goto st17;
1725 } else if ( (*p) >= 35 )
1726 goto st17;
1727 } else if ( (*p) > 46 ) {
1728 if ( (*p) < 65 ) {
1729 if ( 48 <= (*p) && (*p) <= 57 )
1730 goto st17;
1731 } else if ( (*p) > 90 ) {
1732 if ( 94 <= (*p) && (*p) <= 122 )
1733 goto st17;
1734 } else
1735 goto st17;
1736 } else
1737 goto st17;
1738 goto st0;
1739 st71:
1740 if ( ++p == pe )
1741 goto _test_eof71;
1742 case 71:
1743 switch( (*p) ) {
1744 case 33: goto st17;
1745 case 58: goto tr25;
1746 case 67: goto st40;
1747 case 72: goto st72;
1748 case 99: goto st40;
1749 case 104: goto st72;
1750 case 124: goto st17;
1751 case 126: goto st17;
1753 if ( (*p) < 45 ) {
1754 if ( (*p) > 39 ) {
1755 if ( 42 <= (*p) && (*p) <= 43 )
1756 goto st17;
1757 } else if ( (*p) >= 35 )
1758 goto st17;
1759 } else if ( (*p) > 46 ) {
1760 if ( (*p) < 65 ) {
1761 if ( 48 <= (*p) && (*p) <= 57 )
1762 goto st17;
1763 } else if ( (*p) > 90 ) {
1764 if ( 94 <= (*p) && (*p) <= 122 )
1765 goto st17;
1766 } else
1767 goto st17;
1768 } else
1769 goto st17;
1770 goto st0;
1771 st72:
1772 if ( ++p == pe )
1773 goto _test_eof72;
1774 case 72:
1775 switch( (*p) ) {
1776 case 33: goto st17;
1777 case 58: goto tr88;
1778 case 67: goto st40;
1779 case 99: goto st40;
1780 case 124: goto st17;
1781 case 126: goto st17;
1783 if ( (*p) < 45 ) {
1784 if ( (*p) > 39 ) {
1785 if ( 42 <= (*p) && (*p) <= 43 )
1786 goto st17;
1787 } else if ( (*p) >= 35 )
1788 goto st17;
1789 } else if ( (*p) > 46 ) {
1790 if ( (*p) < 65 ) {
1791 if ( 48 <= (*p) && (*p) <= 57 )
1792 goto st17;
1793 } else if ( (*p) > 90 ) {
1794 if ( 94 <= (*p) && (*p) <= 122 )
1795 goto st17;
1796 } else
1797 goto st17;
1798 } else
1799 goto st17;
1800 goto st0;
1801 tr88:
1802 #line 24 "src/parser.rl"
1804 parser->field_len = LEN(field_start, p);
1805 if(parser->field_len > 256) {
1806 parser->overflow_error = TRUE;
1807 {p++; cs = 73; goto _out;}
1810 goto st73;
1811 tr89:
1812 #line 32 "src/parser.rl"
1813 { MARK(mark, p); }
1814 goto st73;
1815 st73:
1816 if ( ++p == pe )
1817 goto _test_eof73;
1818 case 73:
1819 #line 1820 "src/parser.c"
1820 switch( (*p) ) {
1821 case 13: goto tr28;
1822 case 32: goto tr89;
1823 case 67: goto tr30;
1824 case 99: goto tr30;
1826 if ( 48 <= (*p) && (*p) <= 57 )
1827 goto tr90;
1828 goto tr27;
1829 tr90:
1830 #line 21 "src/parser.rl"
1831 {MARK(mark, p); }
1832 #line 32 "src/parser.rl"
1833 { MARK(mark, p); }
1834 goto st74;
1835 st74:
1836 if ( ++p == pe )
1837 goto _test_eof74;
1838 case 74:
1839 #line 1840 "src/parser.c"
1840 switch( (*p) ) {
1841 case 13: goto tr91;
1842 case 67: goto st20;
1843 case 99: goto st20;
1845 if ( 48 <= (*p) && (*p) <= 57 )
1846 goto st74;
1847 goto st19;
1848 st75:
1849 if ( ++p == pe )
1850 goto _test_eof75;
1851 case 75:
1852 switch( (*p) ) {
1853 case 33: goto st17;
1854 case 58: goto tr25;
1855 case 67: goto st40;
1856 case 89: goto st76;
1857 case 99: goto st40;
1858 case 121: goto st76;
1859 case 124: goto st17;
1860 case 126: goto st17;
1862 if ( (*p) < 45 ) {
1863 if ( (*p) > 39 ) {
1864 if ( 42 <= (*p) && (*p) <= 43 )
1865 goto st17;
1866 } else if ( (*p) >= 35 )
1867 goto st17;
1868 } else if ( (*p) > 46 ) {
1869 if ( (*p) < 65 ) {
1870 if ( 48 <= (*p) && (*p) <= 57 )
1871 goto st17;
1872 } else if ( (*p) > 90 ) {
1873 if ( 94 <= (*p) && (*p) <= 122 )
1874 goto st17;
1875 } else
1876 goto st17;
1877 } else
1878 goto st17;
1879 goto st0;
1880 st76:
1881 if ( ++p == pe )
1882 goto _test_eof76;
1883 case 76:
1884 switch( (*p) ) {
1885 case 33: goto st17;
1886 case 58: goto tr25;
1887 case 67: goto st40;
1888 case 80: goto st77;
1889 case 99: goto st40;
1890 case 112: goto st77;
1891 case 124: goto st17;
1892 case 126: goto st17;
1894 if ( (*p) < 45 ) {
1895 if ( (*p) > 39 ) {
1896 if ( 42 <= (*p) && (*p) <= 43 )
1897 goto st17;
1898 } else if ( (*p) >= 35 )
1899 goto st17;
1900 } else if ( (*p) > 46 ) {
1901 if ( (*p) < 65 ) {
1902 if ( 48 <= (*p) && (*p) <= 57 )
1903 goto st17;
1904 } else if ( (*p) > 90 ) {
1905 if ( 94 <= (*p) && (*p) <= 122 )
1906 goto st17;
1907 } else
1908 goto st17;
1909 } else
1910 goto st17;
1911 goto st0;
1912 st77:
1913 if ( ++p == pe )
1914 goto _test_eof77;
1915 case 77:
1916 switch( (*p) ) {
1917 case 33: goto st17;
1918 case 58: goto tr25;
1919 case 67: goto st40;
1920 case 69: goto st78;
1921 case 99: goto st40;
1922 case 101: goto st78;
1923 case 124: goto st17;
1924 case 126: goto st17;
1926 if ( (*p) < 45 ) {
1927 if ( (*p) > 39 ) {
1928 if ( 42 <= (*p) && (*p) <= 43 )
1929 goto st17;
1930 } else if ( (*p) >= 35 )
1931 goto st17;
1932 } else if ( (*p) > 46 ) {
1933 if ( (*p) < 65 ) {
1934 if ( 48 <= (*p) && (*p) <= 57 )
1935 goto st17;
1936 } else if ( (*p) > 90 ) {
1937 if ( 94 <= (*p) && (*p) <= 122 )
1938 goto st17;
1939 } else
1940 goto st17;
1941 } else
1942 goto st17;
1943 goto st0;
1944 st78:
1945 if ( ++p == pe )
1946 goto _test_eof78;
1947 case 78:
1948 switch( (*p) ) {
1949 case 33: goto st17;
1950 case 58: goto st79;
1951 case 67: goto st40;
1952 case 99: goto st40;
1953 case 124: goto st17;
1954 case 126: goto st17;
1956 if ( (*p) < 45 ) {
1957 if ( (*p) > 39 ) {
1958 if ( 42 <= (*p) && (*p) <= 43 )
1959 goto st17;
1960 } else if ( (*p) >= 35 )
1961 goto st17;
1962 } else if ( (*p) > 46 ) {
1963 if ( (*p) < 65 ) {
1964 if ( 48 <= (*p) && (*p) <= 57 )
1965 goto st17;
1966 } else if ( (*p) > 90 ) {
1967 if ( 94 <= (*p) && (*p) <= 122 )
1968 goto st17;
1969 } else
1970 goto st17;
1971 } else
1972 goto st17;
1973 goto st0;
1974 tr99:
1975 #line 21 "src/parser.rl"
1976 {MARK(mark, p); }
1977 goto st79;
1978 st79:
1979 if ( ++p == pe )
1980 goto _test_eof79;
1981 case 79:
1982 #line 1983 "src/parser.c"
1983 switch( (*p) ) {
1984 case 13: goto tr98;
1985 case 32: goto tr99;
1987 goto tr97;
1988 tr97:
1989 #line 21 "src/parser.rl"
1990 {MARK(mark, p); }
1991 goto st80;
1992 st80:
1993 if ( ++p == pe )
1994 goto _test_eof80;
1995 case 80:
1996 #line 1997 "src/parser.c"
1997 if ( (*p) == 13 )
1998 goto tr101;
1999 goto st80;
2000 tr9:
2001 #line 71 "src/parser.rl"
2003 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2004 {p++; cs = 81; goto _out;}
2006 goto st81;
2007 tr115:
2008 #line 61 "src/parser.rl"
2010 if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
2011 {p++; cs = 81; goto _out;}
2013 #line 71 "src/parser.rl"
2015 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2016 {p++; cs = 81; goto _out;}
2018 goto st81;
2019 tr126:
2020 #line 76 "src/parser.rl"
2021 {MARK(query_start, p); }
2022 #line 77 "src/parser.rl"
2024 if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
2025 {p++; cs = 81; goto _out;}
2027 #line 71 "src/parser.rl"
2029 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2030 {p++; cs = 81; goto _out;}
2032 goto st81;
2033 tr130:
2034 #line 77 "src/parser.rl"
2036 if(!apply_element(parser, MONGREL_QUERY_STRING, PTR_TO(query_start), p, 10*1024))
2037 {p++; cs = 81; goto _out;}
2039 #line 71 "src/parser.rl"
2041 if(!apply_element(parser, MONGREL_REQUEST_URI, PTR_TO(mark), p, 12*1024))
2042 {p++; cs = 81; goto _out;}
2044 goto st81;
2045 st81:
2046 if ( ++p == pe )
2047 goto _test_eof81;
2048 case 81:
2049 #line 2050 "src/parser.c"
2050 switch( (*p) ) {
2051 case 32: goto tr103;
2052 case 37: goto tr104;
2053 case 60: goto st0;
2054 case 62: goto st0;
2055 case 127: goto st0;
2057 if ( (*p) > 31 ) {
2058 if ( 34 <= (*p) && (*p) <= 35 )
2059 goto st0;
2060 } else if ( (*p) >= 0 )
2061 goto st0;
2062 goto tr102;
2063 tr102:
2064 #line 21 "src/parser.rl"
2065 {MARK(mark, p); }
2066 goto st82;
2067 st82:
2068 if ( ++p == pe )
2069 goto _test_eof82;
2070 case 82:
2071 #line 2072 "src/parser.c"
2072 switch( (*p) ) {
2073 case 32: goto tr106;
2074 case 37: goto st83;
2075 case 60: goto st0;
2076 case 62: goto st0;
2077 case 127: goto st0;
2079 if ( (*p) > 31 ) {
2080 if ( 34 <= (*p) && (*p) <= 35 )
2081 goto st0;
2082 } else if ( (*p) >= 0 )
2083 goto st0;
2084 goto st82;
2085 tr104:
2086 #line 21 "src/parser.rl"
2087 {MARK(mark, p); }
2088 goto st83;
2089 st83:
2090 if ( ++p == pe )
2091 goto _test_eof83;
2092 case 83:
2093 #line 2094 "src/parser.c"
2094 if ( (*p) < 65 ) {
2095 if ( 48 <= (*p) && (*p) <= 57 )
2096 goto st84;
2097 } else if ( (*p) > 70 ) {
2098 if ( 97 <= (*p) && (*p) <= 102 )
2099 goto st84;
2100 } else
2101 goto st84;
2102 goto st0;
2103 st84:
2104 if ( ++p == pe )
2105 goto _test_eof84;
2106 case 84:
2107 if ( (*p) < 65 ) {
2108 if ( 48 <= (*p) && (*p) <= 57 )
2109 goto st82;
2110 } else if ( (*p) > 70 ) {
2111 if ( 97 <= (*p) && (*p) <= 102 )
2112 goto st82;
2113 } else
2114 goto st82;
2115 goto st0;
2116 tr5:
2117 #line 21 "src/parser.rl"
2118 {MARK(mark, p); }
2119 goto st85;
2120 st85:
2121 if ( ++p == pe )
2122 goto _test_eof85;
2123 case 85:
2124 #line 2125 "src/parser.c"
2125 switch( (*p) ) {
2126 case 43: goto st85;
2127 case 58: goto st86;
2129 if ( (*p) < 48 ) {
2130 if ( 45 <= (*p) && (*p) <= 46 )
2131 goto st85;
2132 } else if ( (*p) > 57 ) {
2133 if ( (*p) > 90 ) {
2134 if ( 97 <= (*p) && (*p) <= 122 )
2135 goto st85;
2136 } else if ( (*p) >= 65 )
2137 goto st85;
2138 } else
2139 goto st85;
2140 goto st0;
2141 tr7:
2142 #line 21 "src/parser.rl"
2143 {MARK(mark, p); }
2144 goto st86;
2145 st86:
2146 if ( ++p == pe )
2147 goto _test_eof86;
2148 case 86:
2149 #line 2150 "src/parser.c"
2150 switch( (*p) ) {
2151 case 32: goto tr8;
2152 case 34: goto st0;
2153 case 35: goto tr9;
2154 case 37: goto st87;
2155 case 60: goto st0;
2156 case 62: goto st0;
2157 case 127: goto st0;
2159 if ( 0 <= (*p) && (*p) <= 31 )
2160 goto st0;
2161 goto st86;
2162 st87:
2163 if ( ++p == pe )
2164 goto _test_eof87;
2165 case 87:
2166 if ( (*p) < 65 ) {
2167 if ( 48 <= (*p) && (*p) <= 57 )
2168 goto st88;
2169 } else if ( (*p) > 70 ) {
2170 if ( 97 <= (*p) && (*p) <= 102 )
2171 goto st88;
2172 } else
2173 goto st88;
2174 goto st0;
2175 st88:
2176 if ( ++p == pe )
2177 goto _test_eof88;
2178 case 88:
2179 if ( (*p) < 65 ) {
2180 if ( 48 <= (*p) && (*p) <= 57 )
2181 goto st86;
2182 } else if ( (*p) > 70 ) {
2183 if ( 97 <= (*p) && (*p) <= 102 )
2184 goto st86;
2185 } else
2186 goto st86;
2187 goto st0;
2188 tr6:
2189 #line 21 "src/parser.rl"
2190 {MARK(mark, p); }
2191 goto st89;
2192 st89:
2193 if ( ++p == pe )
2194 goto _test_eof89;
2195 case 89:
2196 #line 2197 "src/parser.c"
2197 switch( (*p) ) {
2198 case 32: goto tr114;
2199 case 34: goto st0;
2200 case 35: goto tr115;
2201 case 37: goto st90;
2202 case 59: goto tr117;
2203 case 60: goto st0;
2204 case 62: goto st0;
2205 case 63: goto tr118;
2206 case 127: goto st0;
2208 if ( 0 <= (*p) && (*p) <= 31 )
2209 goto st0;
2210 goto st89;
2211 st90:
2212 if ( ++p == pe )
2213 goto _test_eof90;
2214 case 90:
2215 if ( (*p) < 65 ) {
2216 if ( 48 <= (*p) && (*p) <= 57 )
2217 goto st91;
2218 } else if ( (*p) > 70 ) {
2219 if ( 97 <= (*p) && (*p) <= 102 )
2220 goto st91;
2221 } else
2222 goto st91;
2223 goto st0;
2224 st91:
2225 if ( ++p == pe )
2226 goto _test_eof91;
2227 case 91:
2228 if ( (*p) < 65 ) {
2229 if ( 48 <= (*p) && (*p) <= 57 )
2230 goto st89;
2231 } else if ( (*p) > 70 ) {
2232 if ( 97 <= (*p) && (*p) <= 102 )
2233 goto st89;
2234 } else
2235 goto st89;
2236 goto st0;
2237 tr117:
2238 #line 61 "src/parser.rl"
2240 if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
2241 {p++; cs = 92; goto _out;}
2243 goto st92;
2244 st92:
2245 if ( ++p == pe )
2246 goto _test_eof92;
2247 case 92:
2248 #line 2249 "src/parser.c"
2249 switch( (*p) ) {
2250 case 32: goto tr8;
2251 case 34: goto st0;
2252 case 35: goto tr9;
2253 case 37: goto st93;
2254 case 60: goto st0;
2255 case 62: goto st0;
2256 case 63: goto st95;
2257 case 127: goto st0;
2259 if ( 0 <= (*p) && (*p) <= 31 )
2260 goto st0;
2261 goto st92;
2262 st93:
2263 if ( ++p == pe )
2264 goto _test_eof93;
2265 case 93:
2266 if ( (*p) < 65 ) {
2267 if ( 48 <= (*p) && (*p) <= 57 )
2268 goto st94;
2269 } else if ( (*p) > 70 ) {
2270 if ( 97 <= (*p) && (*p) <= 102 )
2271 goto st94;
2272 } else
2273 goto st94;
2274 goto st0;
2275 st94:
2276 if ( ++p == pe )
2277 goto _test_eof94;
2278 case 94:
2279 if ( (*p) < 65 ) {
2280 if ( 48 <= (*p) && (*p) <= 57 )
2281 goto st92;
2282 } else if ( (*p) > 70 ) {
2283 if ( 97 <= (*p) && (*p) <= 102 )
2284 goto st92;
2285 } else
2286 goto st92;
2287 goto st0;
2288 tr118:
2289 #line 61 "src/parser.rl"
2291 if(!apply_element(parser, MONGREL_REQUEST_PATH, PTR_TO(mark), p, 1024))
2292 {p++; cs = 95; goto _out;}
2294 goto st95;
2295 st95:
2296 if ( ++p == pe )
2297 goto _test_eof95;
2298 case 95:
2299 #line 2300 "src/parser.c"
2300 switch( (*p) ) {
2301 case 32: goto tr125;
2302 case 34: goto st0;
2303 case 35: goto tr126;
2304 case 37: goto tr127;
2305 case 60: goto st0;
2306 case 62: goto st0;
2307 case 127: goto st0;
2309 if ( 0 <= (*p) && (*p) <= 31 )
2310 goto st0;
2311 goto tr124;
2312 tr124:
2313 #line 76 "src/parser.rl"
2314 {MARK(query_start, p); }
2315 goto st96;
2316 st96:
2317 if ( ++p == pe )
2318 goto _test_eof96;
2319 case 96:
2320 #line 2321 "src/parser.c"
2321 switch( (*p) ) {
2322 case 32: goto tr129;
2323 case 34: goto st0;
2324 case 35: goto tr130;
2325 case 37: goto st97;
2326 case 60: goto st0;
2327 case 62: goto st0;
2328 case 127: goto st0;
2330 if ( 0 <= (*p) && (*p) <= 31 )
2331 goto st0;
2332 goto st96;
2333 tr127:
2334 #line 76 "src/parser.rl"
2335 {MARK(query_start, p); }
2336 goto st97;
2337 st97:
2338 if ( ++p == pe )
2339 goto _test_eof97;
2340 case 97:
2341 #line 2342 "src/parser.c"
2342 if ( (*p) < 65 ) {
2343 if ( 48 <= (*p) && (*p) <= 57 )
2344 goto st98;
2345 } else if ( (*p) > 70 ) {
2346 if ( 97 <= (*p) && (*p) <= 102 )
2347 goto st98;
2348 } else
2349 goto st98;
2350 goto st0;
2351 st98:
2352 if ( ++p == pe )
2353 goto _test_eof98;
2354 case 98:
2355 if ( (*p) < 65 ) {
2356 if ( 48 <= (*p) && (*p) <= 57 )
2357 goto st96;
2358 } else if ( (*p) > 70 ) {
2359 if ( 97 <= (*p) && (*p) <= 102 )
2360 goto st96;
2361 } else
2362 goto st96;
2363 goto st0;
2364 st99:
2365 if ( ++p == pe )
2366 goto _test_eof99;
2367 case 99:
2368 switch( (*p) ) {
2369 case 32: goto tr2;
2370 case 36: goto st100;
2371 case 95: goto st100;
2373 if ( (*p) < 48 ) {
2374 if ( 45 <= (*p) && (*p) <= 46 )
2375 goto st100;
2376 } else if ( (*p) > 57 ) {
2377 if ( 65 <= (*p) && (*p) <= 90 )
2378 goto st100;
2379 } else
2380 goto st100;
2381 goto st0;
2382 st100:
2383 if ( ++p == pe )
2384 goto _test_eof100;
2385 case 100:
2386 switch( (*p) ) {
2387 case 32: goto tr2;
2388 case 36: goto st101;
2389 case 95: goto st101;
2391 if ( (*p) < 48 ) {
2392 if ( 45 <= (*p) && (*p) <= 46 )
2393 goto st101;
2394 } else if ( (*p) > 57 ) {
2395 if ( 65 <= (*p) && (*p) <= 90 )
2396 goto st101;
2397 } else
2398 goto st101;
2399 goto st0;
2400 st101:
2401 if ( ++p == pe )
2402 goto _test_eof101;
2403 case 101:
2404 switch( (*p) ) {
2405 case 32: goto tr2;
2406 case 36: goto st102;
2407 case 95: goto st102;
2409 if ( (*p) < 48 ) {
2410 if ( 45 <= (*p) && (*p) <= 46 )
2411 goto st102;
2412 } else if ( (*p) > 57 ) {
2413 if ( 65 <= (*p) && (*p) <= 90 )
2414 goto st102;
2415 } else
2416 goto st102;
2417 goto st0;
2418 st102:
2419 if ( ++p == pe )
2420 goto _test_eof102;
2421 case 102:
2422 switch( (*p) ) {
2423 case 32: goto tr2;
2424 case 36: goto st103;
2425 case 95: goto st103;
2427 if ( (*p) < 48 ) {
2428 if ( 45 <= (*p) && (*p) <= 46 )
2429 goto st103;
2430 } else if ( (*p) > 57 ) {
2431 if ( 65 <= (*p) && (*p) <= 90 )
2432 goto st103;
2433 } else
2434 goto st103;
2435 goto st0;
2436 st103:
2437 if ( ++p == pe )
2438 goto _test_eof103;
2439 case 103:
2440 switch( (*p) ) {
2441 case 32: goto tr2;
2442 case 36: goto st104;
2443 case 95: goto st104;
2445 if ( (*p) < 48 ) {
2446 if ( 45 <= (*p) && (*p) <= 46 )
2447 goto st104;
2448 } else if ( (*p) > 57 ) {
2449 if ( 65 <= (*p) && (*p) <= 90 )
2450 goto st104;
2451 } else
2452 goto st104;
2453 goto st0;
2454 st104:
2455 if ( ++p == pe )
2456 goto _test_eof104;
2457 case 104:
2458 switch( (*p) ) {
2459 case 32: goto tr2;
2460 case 36: goto st105;
2461 case 95: goto st105;
2463 if ( (*p) < 48 ) {
2464 if ( 45 <= (*p) && (*p) <= 46 )
2465 goto st105;
2466 } else if ( (*p) > 57 ) {
2467 if ( 65 <= (*p) && (*p) <= 90 )
2468 goto st105;
2469 } else
2470 goto st105;
2471 goto st0;
2472 st105:
2473 if ( ++p == pe )
2474 goto _test_eof105;
2475 case 105:
2476 switch( (*p) ) {
2477 case 32: goto tr2;
2478 case 36: goto st106;
2479 case 95: goto st106;
2481 if ( (*p) < 48 ) {
2482 if ( 45 <= (*p) && (*p) <= 46 )
2483 goto st106;
2484 } else if ( (*p) > 57 ) {
2485 if ( 65 <= (*p) && (*p) <= 90 )
2486 goto st106;
2487 } else
2488 goto st106;
2489 goto st0;
2490 st106:
2491 if ( ++p == pe )
2492 goto _test_eof106;
2493 case 106:
2494 switch( (*p) ) {
2495 case 32: goto tr2;
2496 case 36: goto st107;
2497 case 95: goto st107;
2499 if ( (*p) < 48 ) {
2500 if ( 45 <= (*p) && (*p) <= 46 )
2501 goto st107;
2502 } else if ( (*p) > 57 ) {
2503 if ( 65 <= (*p) && (*p) <= 90 )
2504 goto st107;
2505 } else
2506 goto st107;
2507 goto st0;
2508 st107:
2509 if ( ++p == pe )
2510 goto _test_eof107;
2511 case 107:
2512 switch( (*p) ) {
2513 case 32: goto tr2;
2514 case 36: goto st108;
2515 case 95: goto st108;
2517 if ( (*p) < 48 ) {
2518 if ( 45 <= (*p) && (*p) <= 46 )
2519 goto st108;
2520 } else if ( (*p) > 57 ) {
2521 if ( 65 <= (*p) && (*p) <= 90 )
2522 goto st108;
2523 } else
2524 goto st108;
2525 goto st0;
2526 st108:
2527 if ( ++p == pe )
2528 goto _test_eof108;
2529 case 108:
2530 switch( (*p) ) {
2531 case 32: goto tr2;
2532 case 36: goto st109;
2533 case 95: goto st109;
2535 if ( (*p) < 48 ) {
2536 if ( 45 <= (*p) && (*p) <= 46 )
2537 goto st109;
2538 } else if ( (*p) > 57 ) {
2539 if ( 65 <= (*p) && (*p) <= 90 )
2540 goto st109;
2541 } else
2542 goto st109;
2543 goto st0;
2544 st109:
2545 if ( ++p == pe )
2546 goto _test_eof109;
2547 case 109:
2548 switch( (*p) ) {
2549 case 32: goto tr2;
2550 case 36: goto st110;
2551 case 95: goto st110;
2553 if ( (*p) < 48 ) {
2554 if ( 45 <= (*p) && (*p) <= 46 )
2555 goto st110;
2556 } else if ( (*p) > 57 ) {
2557 if ( 65 <= (*p) && (*p) <= 90 )
2558 goto st110;
2559 } else
2560 goto st110;
2561 goto st0;
2562 st110:
2563 if ( ++p == pe )
2564 goto _test_eof110;
2565 case 110:
2566 switch( (*p) ) {
2567 case 32: goto tr2;
2568 case 36: goto st111;
2569 case 95: goto st111;
2571 if ( (*p) < 48 ) {
2572 if ( 45 <= (*p) && (*p) <= 46 )
2573 goto st111;
2574 } else if ( (*p) > 57 ) {
2575 if ( 65 <= (*p) && (*p) <= 90 )
2576 goto st111;
2577 } else
2578 goto st111;
2579 goto st0;
2580 st111:
2581 if ( ++p == pe )
2582 goto _test_eof111;
2583 case 111:
2584 switch( (*p) ) {
2585 case 32: goto tr2;
2586 case 36: goto st112;
2587 case 95: goto st112;
2589 if ( (*p) < 48 ) {
2590 if ( 45 <= (*p) && (*p) <= 46 )
2591 goto st112;
2592 } else if ( (*p) > 57 ) {
2593 if ( 65 <= (*p) && (*p) <= 90 )
2594 goto st112;
2595 } else
2596 goto st112;
2597 goto st0;
2598 st112:
2599 if ( ++p == pe )
2600 goto _test_eof112;
2601 case 112:
2602 switch( (*p) ) {
2603 case 32: goto tr2;
2604 case 36: goto st113;
2605 case 95: goto st113;
2607 if ( (*p) < 48 ) {
2608 if ( 45 <= (*p) && (*p) <= 46 )
2609 goto st113;
2610 } else if ( (*p) > 57 ) {
2611 if ( 65 <= (*p) && (*p) <= 90 )
2612 goto st113;
2613 } else
2614 goto st113;
2615 goto st0;
2616 st113:
2617 if ( ++p == pe )
2618 goto _test_eof113;
2619 case 113:
2620 switch( (*p) ) {
2621 case 32: goto tr2;
2622 case 36: goto st114;
2623 case 95: goto st114;
2625 if ( (*p) < 48 ) {
2626 if ( 45 <= (*p) && (*p) <= 46 )
2627 goto st114;
2628 } else if ( (*p) > 57 ) {
2629 if ( 65 <= (*p) && (*p) <= 90 )
2630 goto st114;
2631 } else
2632 goto st114;
2633 goto st0;
2634 st114:
2635 if ( ++p == pe )
2636 goto _test_eof114;
2637 case 114:
2638 switch( (*p) ) {
2639 case 32: goto tr2;
2640 case 36: goto st115;
2641 case 95: goto st115;
2643 if ( (*p) < 48 ) {
2644 if ( 45 <= (*p) && (*p) <= 46 )
2645 goto st115;
2646 } else if ( (*p) > 57 ) {
2647 if ( 65 <= (*p) && (*p) <= 90 )
2648 goto st115;
2649 } else
2650 goto st115;
2651 goto st0;
2652 st115:
2653 if ( ++p == pe )
2654 goto _test_eof115;
2655 case 115:
2656 switch( (*p) ) {
2657 case 32: goto tr2;
2658 case 36: goto st116;
2659 case 95: goto st116;
2661 if ( (*p) < 48 ) {
2662 if ( 45 <= (*p) && (*p) <= 46 )
2663 goto st116;
2664 } else if ( (*p) > 57 ) {
2665 if ( 65 <= (*p) && (*p) <= 90 )
2666 goto st116;
2667 } else
2668 goto st116;
2669 goto st0;
2670 st116:
2671 if ( ++p == pe )
2672 goto _test_eof116;
2673 case 116:
2674 switch( (*p) ) {
2675 case 32: goto tr2;
2676 case 36: goto st117;
2677 case 95: goto st117;
2679 if ( (*p) < 48 ) {
2680 if ( 45 <= (*p) && (*p) <= 46 )
2681 goto st117;
2682 } else if ( (*p) > 57 ) {
2683 if ( 65 <= (*p) && (*p) <= 90 )
2684 goto st117;
2685 } else
2686 goto st117;
2687 goto st0;
2688 st117:
2689 if ( ++p == pe )
2690 goto _test_eof117;
2691 case 117:
2692 if ( (*p) == 32 )
2693 goto tr2;
2694 goto st0;
2696 _test_eof2: cs = 2; goto _test_eof;
2697 _test_eof3: cs = 3; goto _test_eof;
2698 _test_eof4: cs = 4; goto _test_eof;
2699 _test_eof5: cs = 5; goto _test_eof;
2700 _test_eof6: cs = 6; goto _test_eof;
2701 _test_eof7: cs = 7; goto _test_eof;
2702 _test_eof8: cs = 8; goto _test_eof;
2703 _test_eof9: cs = 9; goto _test_eof;
2704 _test_eof10: cs = 10; goto _test_eof;
2705 _test_eof11: cs = 11; goto _test_eof;
2706 _test_eof12: cs = 12; goto _test_eof;
2707 _test_eof13: cs = 13; goto _test_eof;
2708 _test_eof14: cs = 14; goto _test_eof;
2709 _test_eof15: cs = 15; goto _test_eof;
2710 _test_eof16: cs = 16; goto _test_eof;
2711 _test_eof118: cs = 118; goto _test_eof;
2712 _test_eof17: cs = 17; goto _test_eof;
2713 _test_eof18: cs = 18; goto _test_eof;
2714 _test_eof19: cs = 19; goto _test_eof;
2715 _test_eof20: cs = 20; goto _test_eof;
2716 _test_eof21: cs = 21; goto _test_eof;
2717 _test_eof22: cs = 22; goto _test_eof;
2718 _test_eof23: cs = 23; goto _test_eof;
2719 _test_eof24: cs = 24; goto _test_eof;
2720 _test_eof25: cs = 25; goto _test_eof;
2721 _test_eof26: cs = 26; goto _test_eof;
2722 _test_eof27: cs = 27; goto _test_eof;
2723 _test_eof28: cs = 28; goto _test_eof;
2724 _test_eof29: cs = 29; goto _test_eof;
2725 _test_eof30: cs = 30; goto _test_eof;
2726 _test_eof31: cs = 31; goto _test_eof;
2727 _test_eof32: cs = 32; goto _test_eof;
2728 _test_eof33: cs = 33; goto _test_eof;
2729 _test_eof34: cs = 34; goto _test_eof;
2730 _test_eof35: cs = 35; goto _test_eof;
2731 _test_eof36: cs = 36; goto _test_eof;
2732 _test_eof37: cs = 37; goto _test_eof;
2733 _test_eof38: cs = 38; goto _test_eof;
2734 _test_eof39: cs = 39; goto _test_eof;
2735 _test_eof40: cs = 40; goto _test_eof;
2736 _test_eof41: cs = 41; goto _test_eof;
2737 _test_eof42: cs = 42; goto _test_eof;
2738 _test_eof43: cs = 43; goto _test_eof;
2739 _test_eof44: cs = 44; goto _test_eof;
2740 _test_eof45: cs = 45; goto _test_eof;
2741 _test_eof46: cs = 46; goto _test_eof;
2742 _test_eof47: cs = 47; goto _test_eof;
2743 _test_eof48: cs = 48; goto _test_eof;
2744 _test_eof49: cs = 49; goto _test_eof;
2745 _test_eof50: cs = 50; goto _test_eof;
2746 _test_eof51: cs = 51; goto _test_eof;
2747 _test_eof52: cs = 52; goto _test_eof;
2748 _test_eof53: cs = 53; goto _test_eof;
2749 _test_eof54: cs = 54; goto _test_eof;
2750 _test_eof55: cs = 55; goto _test_eof;
2751 _test_eof56: cs = 56; goto _test_eof;
2752 _test_eof57: cs = 57; goto _test_eof;
2753 _test_eof58: cs = 58; goto _test_eof;
2754 _test_eof59: cs = 59; goto _test_eof;
2755 _test_eof60: cs = 60; goto _test_eof;
2756 _test_eof61: cs = 61; goto _test_eof;
2757 _test_eof62: cs = 62; goto _test_eof;
2758 _test_eof63: cs = 63; goto _test_eof;
2759 _test_eof64: cs = 64; goto _test_eof;
2760 _test_eof65: cs = 65; goto _test_eof;
2761 _test_eof66: cs = 66; goto _test_eof;
2762 _test_eof67: cs = 67; goto _test_eof;
2763 _test_eof68: cs = 68; goto _test_eof;
2764 _test_eof69: cs = 69; goto _test_eof;
2765 _test_eof70: cs = 70; goto _test_eof;
2766 _test_eof71: cs = 71; goto _test_eof;
2767 _test_eof72: cs = 72; goto _test_eof;
2768 _test_eof73: cs = 73; goto _test_eof;
2769 _test_eof74: cs = 74; goto _test_eof;
2770 _test_eof75: cs = 75; goto _test_eof;
2771 _test_eof76: cs = 76; goto _test_eof;
2772 _test_eof77: cs = 77; goto _test_eof;
2773 _test_eof78: cs = 78; goto _test_eof;
2774 _test_eof79: cs = 79; goto _test_eof;
2775 _test_eof80: cs = 80; goto _test_eof;
2776 _test_eof81: cs = 81; goto _test_eof;
2777 _test_eof82: cs = 82; goto _test_eof;
2778 _test_eof83: cs = 83; goto _test_eof;
2779 _test_eof84: cs = 84; goto _test_eof;
2780 _test_eof85: cs = 85; goto _test_eof;
2781 _test_eof86: cs = 86; goto _test_eof;
2782 _test_eof87: cs = 87; goto _test_eof;
2783 _test_eof88: cs = 88; goto _test_eof;
2784 _test_eof89: cs = 89; goto _test_eof;
2785 _test_eof90: cs = 90; goto _test_eof;
2786 _test_eof91: cs = 91; goto _test_eof;
2787 _test_eof92: cs = 92; goto _test_eof;
2788 _test_eof93: cs = 93; goto _test_eof;
2789 _test_eof94: cs = 94; goto _test_eof;
2790 _test_eof95: cs = 95; goto _test_eof;
2791 _test_eof96: cs = 96; goto _test_eof;
2792 _test_eof97: cs = 97; goto _test_eof;
2793 _test_eof98: cs = 98; goto _test_eof;
2794 _test_eof99: cs = 99; goto _test_eof;
2795 _test_eof100: cs = 100; goto _test_eof;
2796 _test_eof101: cs = 101; goto _test_eof;
2797 _test_eof102: cs = 102; goto _test_eof;
2798 _test_eof103: cs = 103; goto _test_eof;
2799 _test_eof104: cs = 104; goto _test_eof;
2800 _test_eof105: cs = 105; goto _test_eof;
2801 _test_eof106: cs = 106; goto _test_eof;
2802 _test_eof107: cs = 107; goto _test_eof;
2803 _test_eof108: cs = 108; goto _test_eof;
2804 _test_eof109: cs = 109; goto _test_eof;
2805 _test_eof110: cs = 110; goto _test_eof;
2806 _test_eof111: cs = 111; goto _test_eof;
2807 _test_eof112: cs = 112; goto _test_eof;
2808 _test_eof113: cs = 113; goto _test_eof;
2809 _test_eof114: cs = 114; goto _test_eof;
2810 _test_eof115: cs = 115; goto _test_eof;
2811 _test_eof116: cs = 116; goto _test_eof;
2812 _test_eof117: cs = 117; goto _test_eof;
2814 _test_eof: {}
2815 _out: {}
2817 #line 197 "src/parser.rl"
2819 parser->cs = cs;
2820 parser->nread += p - (buffer + off);
2822 assert(p <= pe && "buffer overflow after parsing execute");
2823 assert(parser->nread <= len && "nread longer than length");
2824 assert(parser->body_start <= len && "body starts after buffer end");
2825 assert(parser->mark < len && "mark is after buffer end");
2826 assert(parser->field_len <= len && "field has length longer than whole buffer");
2827 assert(parser->field_start < len && "field starts after buffer end");
2829 if(parser->nread > 1024 * (80 + 32))
2830 parser->overflow_error = TRUE;
2833 /* Ragel 6 does not use write eof; no need for this
2834 if(parser->body_start) {
2835 // final \r\n combo encountered so stop right here
2836 parser->nread++;
2837 %% write eof;
2841 return(parser->nread);
2844 int http_parser_finish(http_parser *parser)
2846 if (http_parser_has_error(parser))
2847 return -1;
2848 else if (http_parser_is_finished(parser))
2849 return 1;
2850 else
2851 return 0;
2854 int http_parser_has_error(http_parser *parser) {
2855 return parser->cs == http_parser_error || parser->overflow_error;
2858 int http_parser_is_finished(http_parser *parser) {
2859 return parser->cs >= http_parser_first_final;