unicorn 5.8.0 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,6 +14,7 @@
14
14
  #include "common_field_optimization.h"
15
15
  #include "global_variables.h"
16
16
  #include "c_util.h"
17
+ #include "epollexclusive.h"
17
18
 
18
19
  void init_unicorn_httpdate(void);
19
20
 
@@ -67,18 +68,6 @@ struct http_parser {
67
68
  static ID id_set_backtrace, id_is_chunked_p;
68
69
  static VALUE cHttpParser;
69
70
 
70
- #ifdef HAVE_RB_HASH_CLEAR /* Ruby >= 2.0 */
71
- # define my_hash_clear(h) (void)rb_hash_clear(h)
72
- #else /* !HAVE_RB_HASH_CLEAR - Ruby <= 1.9.3 */
73
-
74
- static ID id_clear;
75
-
76
- static void my_hash_clear(VALUE h)
77
- {
78
- rb_funcall(h, id_clear, 0);
79
- }
80
- #endif /* HAVE_RB_HASH_CLEAR */
81
-
82
71
  static void finalize_header(struct http_parser *hp);
83
72
 
84
73
  static void parser_raise(VALUE klass, const char *msg)
@@ -324,12 +313,12 @@ static void write_value(struct http_parser *hp,
324
313
  /** Machine **/
325
314
 
326
315
 
327
- #line 431 "unicorn_http.rl"
316
+ #line 420 "unicorn_http.rl"
328
317
 
329
318
 
330
319
  /** Data **/
331
320
 
332
- #line 333 "unicorn_http.c"
321
+ #line 322 "unicorn_http.c"
333
322
  static const int http_parser_start = 1;
334
323
  static const int http_parser_first_final = 122;
335
324
  static const int http_parser_error = 0;
@@ -340,7 +329,7 @@ static const int http_parser_en_Trailers = 114;
340
329
  static const int http_parser_en_main = 1;
341
330
 
342
331
 
343
- #line 435 "unicorn_http.rl"
332
+ #line 424 "unicorn_http.rl"
344
333
 
345
334
  static void http_parser_init(struct http_parser *hp)
346
335
  {
@@ -353,12 +342,12 @@ static void http_parser_init(struct http_parser *hp)
353
342
  hp->len.content = 0;
354
343
  hp->cont = Qfalse; /* zero on MRI, should be optimized away by above */
355
344
 
356
- #line 357 "unicorn_http.c"
345
+ #line 346 "unicorn_http.c"
357
346
  {
358
347
  cs = http_parser_start;
359
348
  }
360
349
 
361
- #line 447 "unicorn_http.rl"
350
+ #line 436 "unicorn_http.rl"
362
351
  hp->cs = cs;
363
352
  }
364
353
 
@@ -386,7 +375,7 @@ http_parser_execute(struct http_parser *hp, char *buffer, size_t len)
386
375
  goto skip_chunk_data_hack;
387
376
  }
388
377
 
389
- #line 390 "unicorn_http.c"
378
+ #line 379 "unicorn_http.c"
390
379
  {
391
380
  if ( p == pe )
392
381
  goto _test_eof;
@@ -421,14 +410,14 @@ st0:
421
410
  cs = 0;
422
411
  goto _out;
423
412
  tr0:
424
- #line 327 "unicorn_http.rl"
413
+ #line 316 "unicorn_http.rl"
425
414
  {MARK(mark, p); }
426
415
  goto st2;
427
416
  st2:
428
417
  if ( ++p == pe )
429
418
  goto _test_eof2;
430
419
  case 2:
431
- #line 432 "unicorn_http.c"
420
+ #line 421 "unicorn_http.c"
432
421
  switch( (*p) ) {
433
422
  case 32: goto tr3;
434
423
  case 33: goto st49;
@@ -454,14 +443,14 @@ case 2:
454
443
  goto st49;
455
444
  goto st0;
456
445
  tr3:
457
- #line 336 "unicorn_http.rl"
446
+ #line 325 "unicorn_http.rl"
458
447
  { request_method(hp, PTR_TO(mark), LEN(mark, p)); }
459
448
  goto st3;
460
449
  st3:
461
450
  if ( ++p == pe )
462
451
  goto _test_eof3;
463
452
  case 3:
464
- #line 465 "unicorn_http.c"
453
+ #line 454 "unicorn_http.c"
465
454
  switch( (*p) ) {
466
455
  case 42: goto tr5;
467
456
  case 47: goto tr6;
@@ -470,21 +459,21 @@ case 3:
470
459
  }
471
460
  goto st0;
472
461
  tr5:
473
- #line 327 "unicorn_http.rl"
462
+ #line 316 "unicorn_http.rl"
474
463
  {MARK(mark, p); }
475
464
  goto st4;
476
465
  st4:
477
466
  if ( ++p == pe )
478
467
  goto _test_eof4;
479
468
  case 4:
480
- #line 481 "unicorn_http.c"
469
+ #line 470 "unicorn_http.c"
481
470
  switch( (*p) ) {
482
471
  case 32: goto tr8;
483
472
  case 35: goto tr9;
484
473
  }
485
474
  goto st0;
486
475
  tr8:
487
- #line 341 "unicorn_http.rl"
476
+ #line 330 "unicorn_http.rl"
488
477
  {
489
478
  VALUE str;
490
479
 
@@ -502,23 +491,23 @@ tr8:
502
491
  }
503
492
  goto st5;
504
493
  tr42:
505
- #line 327 "unicorn_http.rl"
494
+ #line 316 "unicorn_http.rl"
506
495
  {MARK(mark, p); }
507
- #line 356 "unicorn_http.rl"
496
+ #line 345 "unicorn_http.rl"
508
497
  {
509
498
  VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
510
499
  rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
511
500
  }
512
501
  goto st5;
513
502
  tr45:
514
- #line 356 "unicorn_http.rl"
503
+ #line 345 "unicorn_http.rl"
515
504
  {
516
505
  VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
517
506
  rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
518
507
  }
519
508
  goto st5;
520
509
  tr49:
521
- #line 366 "unicorn_http.rl"
510
+ #line 355 "unicorn_http.rl"
522
511
  {
523
512
  VALUE val;
524
513
 
@@ -529,7 +518,7 @@ tr49:
529
518
  if (!STR_CSTR_EQ(val, "*"))
530
519
  rb_hash_aset(hp->env, g_path_info, val);
531
520
  }
532
- #line 341 "unicorn_http.rl"
521
+ #line 330 "unicorn_http.rl"
533
522
  {
534
523
  VALUE str;
535
524
 
@@ -547,14 +536,14 @@ tr49:
547
536
  }
548
537
  goto st5;
549
538
  tr55:
550
- #line 360 "unicorn_http.rl"
539
+ #line 349 "unicorn_http.rl"
551
540
  {MARK(start.query, p); }
552
- #line 361 "unicorn_http.rl"
541
+ #line 350 "unicorn_http.rl"
553
542
  {
554
543
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
555
544
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
556
545
  }
557
- #line 341 "unicorn_http.rl"
546
+ #line 330 "unicorn_http.rl"
558
547
  {
559
548
  VALUE str;
560
549
 
@@ -572,12 +561,12 @@ tr55:
572
561
  }
573
562
  goto st5;
574
563
  tr59:
575
- #line 361 "unicorn_http.rl"
564
+ #line 350 "unicorn_http.rl"
576
565
  {
577
566
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
578
567
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
579
568
  }
580
- #line 341 "unicorn_http.rl"
569
+ #line 330 "unicorn_http.rl"
581
570
  {
582
571
  VALUE str;
583
572
 
@@ -598,19 +587,19 @@ st5:
598
587
  if ( ++p == pe )
599
588
  goto _test_eof5;
600
589
  case 5:
601
- #line 602 "unicorn_http.c"
590
+ #line 591 "unicorn_http.c"
602
591
  if ( (*p) == 72 )
603
592
  goto tr10;
604
593
  goto st0;
605
594
  tr10:
606
- #line 327 "unicorn_http.rl"
595
+ #line 316 "unicorn_http.rl"
607
596
  {MARK(mark, p); }
608
597
  goto st6;
609
598
  st6:
610
599
  if ( ++p == pe )
611
600
  goto _test_eof6;
612
601
  case 6:
613
- #line 614 "unicorn_http.c"
602
+ #line 603 "unicorn_http.c"
614
603
  if ( (*p) == 84 )
615
604
  goto st7;
616
605
  goto st0;
@@ -670,34 +659,34 @@ case 13:
670
659
  goto st13;
671
660
  goto st0;
672
661
  tr18:
673
- #line 365 "unicorn_http.rl"
662
+ #line 354 "unicorn_http.rl"
674
663
  { http_version(hp, PTR_TO(mark), LEN(mark, p)); }
675
664
  goto st14;
676
665
  tr26:
677
- #line 333 "unicorn_http.rl"
666
+ #line 322 "unicorn_http.rl"
678
667
  { MARK(mark, p); }
679
- #line 335 "unicorn_http.rl"
668
+ #line 324 "unicorn_http.rl"
680
669
  { write_cont_value(hp, buffer, p); }
681
670
  goto st14;
682
671
  tr29:
683
- #line 335 "unicorn_http.rl"
672
+ #line 324 "unicorn_http.rl"
684
673
  { write_cont_value(hp, buffer, p); }
685
674
  goto st14;
686
675
  tr36:
687
- #line 333 "unicorn_http.rl"
676
+ #line 322 "unicorn_http.rl"
688
677
  { MARK(mark, p); }
689
- #line 334 "unicorn_http.rl"
678
+ #line 323 "unicorn_http.rl"
690
679
  { write_value(hp, buffer, p); }
691
680
  goto st14;
692
681
  tr39:
693
- #line 334 "unicorn_http.rl"
682
+ #line 323 "unicorn_http.rl"
694
683
  { write_value(hp, buffer, p); }
695
684
  goto st14;
696
685
  st14:
697
686
  if ( ++p == pe )
698
687
  goto _test_eof14;
699
688
  case 14:
700
- #line 701 "unicorn_http.c"
689
+ #line 690 "unicorn_http.c"
701
690
  switch( (*p) ) {
702
691
  case 9: goto st15;
703
692
  case 10: goto tr21;
@@ -726,14 +715,14 @@ case 14:
726
715
  goto tr23;
727
716
  goto st0;
728
717
  tr25:
729
- #line 333 "unicorn_http.rl"
718
+ #line 322 "unicorn_http.rl"
730
719
  { MARK(mark, p); }
731
720
  goto st15;
732
721
  st15:
733
722
  if ( ++p == pe )
734
723
  goto _test_eof15;
735
724
  case 15:
736
- #line 737 "unicorn_http.c"
725
+ #line 726 "unicorn_http.c"
737
726
  switch( (*p) ) {
738
727
  case 9: goto tr25;
739
728
  case 10: goto tr26;
@@ -745,14 +734,14 @@ case 15:
745
734
  goto st0;
746
735
  goto tr24;
747
736
  tr24:
748
- #line 333 "unicorn_http.rl"
737
+ #line 322 "unicorn_http.rl"
749
738
  { MARK(mark, p); }
750
739
  goto st16;
751
740
  st16:
752
741
  if ( ++p == pe )
753
742
  goto _test_eof16;
754
743
  case 16:
755
- #line 756 "unicorn_http.c"
744
+ #line 745 "unicorn_http.c"
756
745
  switch( (*p) ) {
757
746
  case 10: goto tr29;
758
747
  case 13: goto tr30;
@@ -765,39 +754,39 @@ case 16:
765
754
  goto st0;
766
755
  goto st16;
767
756
  tr19:
768
- #line 365 "unicorn_http.rl"
757
+ #line 354 "unicorn_http.rl"
769
758
  { http_version(hp, PTR_TO(mark), LEN(mark, p)); }
770
759
  goto st17;
771
760
  tr27:
772
- #line 333 "unicorn_http.rl"
761
+ #line 322 "unicorn_http.rl"
773
762
  { MARK(mark, p); }
774
- #line 335 "unicorn_http.rl"
763
+ #line 324 "unicorn_http.rl"
775
764
  { write_cont_value(hp, buffer, p); }
776
765
  goto st17;
777
766
  tr30:
778
- #line 335 "unicorn_http.rl"
767
+ #line 324 "unicorn_http.rl"
779
768
  { write_cont_value(hp, buffer, p); }
780
769
  goto st17;
781
770
  tr37:
782
- #line 333 "unicorn_http.rl"
771
+ #line 322 "unicorn_http.rl"
783
772
  { MARK(mark, p); }
784
- #line 334 "unicorn_http.rl"
773
+ #line 323 "unicorn_http.rl"
785
774
  { write_value(hp, buffer, p); }
786
775
  goto st17;
787
776
  tr40:
788
- #line 334 "unicorn_http.rl"
777
+ #line 323 "unicorn_http.rl"
789
778
  { write_value(hp, buffer, p); }
790
779
  goto st17;
791
780
  st17:
792
781
  if ( ++p == pe )
793
782
  goto _test_eof17;
794
783
  case 17:
795
- #line 796 "unicorn_http.c"
784
+ #line 785 "unicorn_http.c"
796
785
  if ( (*p) == 10 )
797
786
  goto st14;
798
787
  goto st0;
799
788
  tr21:
800
- #line 381 "unicorn_http.rl"
789
+ #line 370 "unicorn_http.rl"
801
790
  {
802
791
  finalize_header(hp);
803
792
 
@@ -818,7 +807,7 @@ tr21:
818
807
  }
819
808
  goto st122;
820
809
  tr104:
821
- #line 341 "unicorn_http.rl"
810
+ #line 330 "unicorn_http.rl"
822
811
  {
823
812
  VALUE str;
824
813
 
@@ -834,7 +823,7 @@ tr104:
834
823
  rb_hash_aset(hp->env, g_request_path, str);
835
824
  }
836
825
  }
837
- #line 381 "unicorn_http.rl"
826
+ #line 370 "unicorn_http.rl"
838
827
  {
839
828
  finalize_header(hp);
840
829
 
@@ -855,14 +844,14 @@ tr104:
855
844
  }
856
845
  goto st122;
857
846
  tr108:
858
- #line 327 "unicorn_http.rl"
847
+ #line 316 "unicorn_http.rl"
859
848
  {MARK(mark, p); }
860
- #line 356 "unicorn_http.rl"
849
+ #line 345 "unicorn_http.rl"
861
850
  {
862
851
  VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
863
852
  rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
864
853
  }
865
- #line 381 "unicorn_http.rl"
854
+ #line 370 "unicorn_http.rl"
866
855
  {
867
856
  finalize_header(hp);
868
857
 
@@ -883,12 +872,12 @@ tr108:
883
872
  }
884
873
  goto st122;
885
874
  tr112:
886
- #line 356 "unicorn_http.rl"
875
+ #line 345 "unicorn_http.rl"
887
876
  {
888
877
  VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
889
878
  rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
890
879
  }
891
- #line 381 "unicorn_http.rl"
880
+ #line 370 "unicorn_http.rl"
892
881
  {
893
882
  finalize_header(hp);
894
883
 
@@ -909,7 +898,7 @@ tr112:
909
898
  }
910
899
  goto st122;
911
900
  tr117:
912
- #line 366 "unicorn_http.rl"
901
+ #line 355 "unicorn_http.rl"
913
902
  {
914
903
  VALUE val;
915
904
 
@@ -920,7 +909,7 @@ tr117:
920
909
  if (!STR_CSTR_EQ(val, "*"))
921
910
  rb_hash_aset(hp->env, g_path_info, val);
922
911
  }
923
- #line 341 "unicorn_http.rl"
912
+ #line 330 "unicorn_http.rl"
924
913
  {
925
914
  VALUE str;
926
915
 
@@ -936,7 +925,7 @@ tr117:
936
925
  rb_hash_aset(hp->env, g_request_path, str);
937
926
  }
938
927
  }
939
- #line 381 "unicorn_http.rl"
928
+ #line 370 "unicorn_http.rl"
940
929
  {
941
930
  finalize_header(hp);
942
931
 
@@ -957,14 +946,14 @@ tr117:
957
946
  }
958
947
  goto st122;
959
948
  tr124:
960
- #line 360 "unicorn_http.rl"
949
+ #line 349 "unicorn_http.rl"
961
950
  {MARK(start.query, p); }
962
- #line 361 "unicorn_http.rl"
951
+ #line 350 "unicorn_http.rl"
963
952
  {
964
953
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
965
954
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
966
955
  }
967
- #line 341 "unicorn_http.rl"
956
+ #line 330 "unicorn_http.rl"
968
957
  {
969
958
  VALUE str;
970
959
 
@@ -980,7 +969,7 @@ tr124:
980
969
  rb_hash_aset(hp->env, g_request_path, str);
981
970
  }
982
971
  }
983
- #line 381 "unicorn_http.rl"
972
+ #line 370 "unicorn_http.rl"
984
973
  {
985
974
  finalize_header(hp);
986
975
 
@@ -1001,12 +990,12 @@ tr124:
1001
990
  }
1002
991
  goto st122;
1003
992
  tr129:
1004
- #line 361 "unicorn_http.rl"
993
+ #line 350 "unicorn_http.rl"
1005
994
  {
1006
995
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
1007
996
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
1008
997
  }
1009
- #line 341 "unicorn_http.rl"
998
+ #line 330 "unicorn_http.rl"
1010
999
  {
1011
1000
  VALUE str;
1012
1001
 
@@ -1022,7 +1011,7 @@ tr129:
1022
1011
  rb_hash_aset(hp->env, g_request_path, str);
1023
1012
  }
1024
1013
  }
1025
- #line 381 "unicorn_http.rl"
1014
+ #line 370 "unicorn_http.rl"
1026
1015
  {
1027
1016
  finalize_header(hp);
1028
1017
 
@@ -1046,10 +1035,10 @@ st122:
1046
1035
  if ( ++p == pe )
1047
1036
  goto _test_eof122;
1048
1037
  case 122:
1049
- #line 1050 "unicorn_http.c"
1038
+ #line 1039 "unicorn_http.c"
1050
1039
  goto st0;
1051
1040
  tr105:
1052
- #line 341 "unicorn_http.rl"
1041
+ #line 330 "unicorn_http.rl"
1053
1042
  {
1054
1043
  VALUE str;
1055
1044
 
@@ -1067,23 +1056,23 @@ tr105:
1067
1056
  }
1068
1057
  goto st18;
1069
1058
  tr109:
1070
- #line 327 "unicorn_http.rl"
1059
+ #line 316 "unicorn_http.rl"
1071
1060
  {MARK(mark, p); }
1072
- #line 356 "unicorn_http.rl"
1061
+ #line 345 "unicorn_http.rl"
1073
1062
  {
1074
1063
  VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
1075
1064
  rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
1076
1065
  }
1077
1066
  goto st18;
1078
1067
  tr113:
1079
- #line 356 "unicorn_http.rl"
1068
+ #line 345 "unicorn_http.rl"
1080
1069
  {
1081
1070
  VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
1082
1071
  rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
1083
1072
  }
1084
1073
  goto st18;
1085
1074
  tr118:
1086
- #line 366 "unicorn_http.rl"
1075
+ #line 355 "unicorn_http.rl"
1087
1076
  {
1088
1077
  VALUE val;
1089
1078
 
@@ -1094,7 +1083,7 @@ tr118:
1094
1083
  if (!STR_CSTR_EQ(val, "*"))
1095
1084
  rb_hash_aset(hp->env, g_path_info, val);
1096
1085
  }
1097
- #line 341 "unicorn_http.rl"
1086
+ #line 330 "unicorn_http.rl"
1098
1087
  {
1099
1088
  VALUE str;
1100
1089
 
@@ -1112,14 +1101,14 @@ tr118:
1112
1101
  }
1113
1102
  goto st18;
1114
1103
  tr125:
1115
- #line 360 "unicorn_http.rl"
1104
+ #line 349 "unicorn_http.rl"
1116
1105
  {MARK(start.query, p); }
1117
- #line 361 "unicorn_http.rl"
1106
+ #line 350 "unicorn_http.rl"
1118
1107
  {
1119
1108
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
1120
1109
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
1121
1110
  }
1122
- #line 341 "unicorn_http.rl"
1111
+ #line 330 "unicorn_http.rl"
1123
1112
  {
1124
1113
  VALUE str;
1125
1114
 
@@ -1137,12 +1126,12 @@ tr125:
1137
1126
  }
1138
1127
  goto st18;
1139
1128
  tr130:
1140
- #line 361 "unicorn_http.rl"
1129
+ #line 350 "unicorn_http.rl"
1141
1130
  {
1142
1131
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
1143
1132
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
1144
1133
  }
1145
- #line 341 "unicorn_http.rl"
1134
+ #line 330 "unicorn_http.rl"
1146
1135
  {
1147
1136
  VALUE str;
1148
1137
 
@@ -1163,25 +1152,25 @@ st18:
1163
1152
  if ( ++p == pe )
1164
1153
  goto _test_eof18;
1165
1154
  case 18:
1166
- #line 1167 "unicorn_http.c"
1155
+ #line 1156 "unicorn_http.c"
1167
1156
  if ( (*p) == 10 )
1168
1157
  goto tr21;
1169
1158
  goto st0;
1170
1159
  tr23:
1171
- #line 329 "unicorn_http.rl"
1160
+ #line 318 "unicorn_http.rl"
1172
1161
  { MARK(start.field, p); }
1173
- #line 330 "unicorn_http.rl"
1162
+ #line 319 "unicorn_http.rl"
1174
1163
  { snake_upcase_char(deconst(p)); }
1175
1164
  goto st19;
1176
1165
  tr32:
1177
- #line 330 "unicorn_http.rl"
1166
+ #line 319 "unicorn_http.rl"
1178
1167
  { snake_upcase_char(deconst(p)); }
1179
1168
  goto st19;
1180
1169
  st19:
1181
1170
  if ( ++p == pe )
1182
1171
  goto _test_eof19;
1183
1172
  case 19:
1184
- #line 1185 "unicorn_http.c"
1173
+ #line 1174 "unicorn_http.c"
1185
1174
  switch( (*p) ) {
1186
1175
  case 33: goto tr32;
1187
1176
  case 58: goto tr33;
@@ -1207,18 +1196,18 @@ case 19:
1207
1196
  goto tr32;
1208
1197
  goto st0;
1209
1198
  tr35:
1210
- #line 333 "unicorn_http.rl"
1199
+ #line 322 "unicorn_http.rl"
1211
1200
  { MARK(mark, p); }
1212
1201
  goto st20;
1213
1202
  tr33:
1214
- #line 332 "unicorn_http.rl"
1203
+ #line 321 "unicorn_http.rl"
1215
1204
  { hp->s.field_len = LEN(start.field, p); }
1216
1205
  goto st20;
1217
1206
  st20:
1218
1207
  if ( ++p == pe )
1219
1208
  goto _test_eof20;
1220
1209
  case 20:
1221
- #line 1222 "unicorn_http.c"
1210
+ #line 1211 "unicorn_http.c"
1222
1211
  switch( (*p) ) {
1223
1212
  case 9: goto tr35;
1224
1213
  case 10: goto tr36;
@@ -1230,14 +1219,14 @@ case 20:
1230
1219
  goto st0;
1231
1220
  goto tr34;
1232
1221
  tr34:
1233
- #line 333 "unicorn_http.rl"
1222
+ #line 322 "unicorn_http.rl"
1234
1223
  { MARK(mark, p); }
1235
1224
  goto st21;
1236
1225
  st21:
1237
1226
  if ( ++p == pe )
1238
1227
  goto _test_eof21;
1239
1228
  case 21:
1240
- #line 1241 "unicorn_http.c"
1229
+ #line 1230 "unicorn_http.c"
1241
1230
  switch( (*p) ) {
1242
1231
  case 10: goto tr39;
1243
1232
  case 13: goto tr40;
@@ -1250,7 +1239,7 @@ case 21:
1250
1239
  goto st0;
1251
1240
  goto st21;
1252
1241
  tr9:
1253
- #line 341 "unicorn_http.rl"
1242
+ #line 330 "unicorn_http.rl"
1254
1243
  {
1255
1244
  VALUE str;
1256
1245
 
@@ -1268,7 +1257,7 @@ tr9:
1268
1257
  }
1269
1258
  goto st22;
1270
1259
  tr50:
1271
- #line 366 "unicorn_http.rl"
1260
+ #line 355 "unicorn_http.rl"
1272
1261
  {
1273
1262
  VALUE val;
1274
1263
 
@@ -1279,7 +1268,7 @@ tr50:
1279
1268
  if (!STR_CSTR_EQ(val, "*"))
1280
1269
  rb_hash_aset(hp->env, g_path_info, val);
1281
1270
  }
1282
- #line 341 "unicorn_http.rl"
1271
+ #line 330 "unicorn_http.rl"
1283
1272
  {
1284
1273
  VALUE str;
1285
1274
 
@@ -1297,14 +1286,14 @@ tr50:
1297
1286
  }
1298
1287
  goto st22;
1299
1288
  tr56:
1300
- #line 360 "unicorn_http.rl"
1289
+ #line 349 "unicorn_http.rl"
1301
1290
  {MARK(start.query, p); }
1302
- #line 361 "unicorn_http.rl"
1291
+ #line 350 "unicorn_http.rl"
1303
1292
  {
1304
1293
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
1305
1294
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
1306
1295
  }
1307
- #line 341 "unicorn_http.rl"
1296
+ #line 330 "unicorn_http.rl"
1308
1297
  {
1309
1298
  VALUE str;
1310
1299
 
@@ -1322,12 +1311,12 @@ tr56:
1322
1311
  }
1323
1312
  goto st22;
1324
1313
  tr60:
1325
- #line 361 "unicorn_http.rl"
1314
+ #line 350 "unicorn_http.rl"
1326
1315
  {
1327
1316
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
1328
1317
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
1329
1318
  }
1330
- #line 341 "unicorn_http.rl"
1319
+ #line 330 "unicorn_http.rl"
1331
1320
  {
1332
1321
  VALUE str;
1333
1322
 
@@ -1348,7 +1337,7 @@ st22:
1348
1337
  if ( ++p == pe )
1349
1338
  goto _test_eof22;
1350
1339
  case 22:
1351
- #line 1352 "unicorn_http.c"
1340
+ #line 1341 "unicorn_http.c"
1352
1341
  switch( (*p) ) {
1353
1342
  case 32: goto tr42;
1354
1343
  case 35: goto st0;
@@ -1359,14 +1348,14 @@ case 22:
1359
1348
  goto st0;
1360
1349
  goto tr41;
1361
1350
  tr41:
1362
- #line 327 "unicorn_http.rl"
1351
+ #line 316 "unicorn_http.rl"
1363
1352
  {MARK(mark, p); }
1364
1353
  goto st23;
1365
1354
  st23:
1366
1355
  if ( ++p == pe )
1367
1356
  goto _test_eof23;
1368
1357
  case 23:
1369
- #line 1370 "unicorn_http.c"
1358
+ #line 1359 "unicorn_http.c"
1370
1359
  switch( (*p) ) {
1371
1360
  case 32: goto tr45;
1372
1361
  case 35: goto st0;
@@ -1377,14 +1366,14 @@ case 23:
1377
1366
  goto st0;
1378
1367
  goto st23;
1379
1368
  tr43:
1380
- #line 327 "unicorn_http.rl"
1369
+ #line 316 "unicorn_http.rl"
1381
1370
  {MARK(mark, p); }
1382
1371
  goto st24;
1383
1372
  st24:
1384
1373
  if ( ++p == pe )
1385
1374
  goto _test_eof24;
1386
1375
  case 24:
1387
- #line 1388 "unicorn_http.c"
1376
+ #line 1377 "unicorn_http.c"
1388
1377
  if ( (*p) < 65 ) {
1389
1378
  if ( 48 <= (*p) && (*p) <= 57 )
1390
1379
  goto st25;
@@ -1408,20 +1397,20 @@ case 25:
1408
1397
  goto st23;
1409
1398
  goto st0;
1410
1399
  tr6:
1411
- #line 327 "unicorn_http.rl"
1400
+ #line 316 "unicorn_http.rl"
1412
1401
  {MARK(mark, p); }
1413
1402
  goto st26;
1414
1403
  tr76:
1415
- #line 340 "unicorn_http.rl"
1404
+ #line 329 "unicorn_http.rl"
1416
1405
  { rb_hash_aset(hp->env, g_http_host, STR_NEW(mark, p)); }
1417
- #line 327 "unicorn_http.rl"
1406
+ #line 316 "unicorn_http.rl"
1418
1407
  {MARK(mark, p); }
1419
1408
  goto st26;
1420
1409
  st26:
1421
1410
  if ( ++p == pe )
1422
1411
  goto _test_eof26;
1423
1412
  case 26:
1424
- #line 1425 "unicorn_http.c"
1413
+ #line 1414 "unicorn_http.c"
1425
1414
  switch( (*p) ) {
1426
1415
  case 32: goto tr49;
1427
1416
  case 35: goto tr50;
@@ -1459,7 +1448,7 @@ case 28:
1459
1448
  goto st26;
1460
1449
  goto st0;
1461
1450
  tr52:
1462
- #line 366 "unicorn_http.rl"
1451
+ #line 355 "unicorn_http.rl"
1463
1452
  {
1464
1453
  VALUE val;
1465
1454
 
@@ -1475,7 +1464,7 @@ st29:
1475
1464
  if ( ++p == pe )
1476
1465
  goto _test_eof29;
1477
1466
  case 29:
1478
- #line 1479 "unicorn_http.c"
1467
+ #line 1468 "unicorn_http.c"
1479
1468
  switch( (*p) ) {
1480
1469
  case 32: goto tr55;
1481
1470
  case 35: goto tr56;
@@ -1486,14 +1475,14 @@ case 29:
1486
1475
  goto st0;
1487
1476
  goto tr54;
1488
1477
  tr54:
1489
- #line 360 "unicorn_http.rl"
1478
+ #line 349 "unicorn_http.rl"
1490
1479
  {MARK(start.query, p); }
1491
1480
  goto st30;
1492
1481
  st30:
1493
1482
  if ( ++p == pe )
1494
1483
  goto _test_eof30;
1495
1484
  case 30:
1496
- #line 1497 "unicorn_http.c"
1485
+ #line 1486 "unicorn_http.c"
1497
1486
  switch( (*p) ) {
1498
1487
  case 32: goto tr59;
1499
1488
  case 35: goto tr60;
@@ -1504,14 +1493,14 @@ case 30:
1504
1493
  goto st0;
1505
1494
  goto st30;
1506
1495
  tr57:
1507
- #line 360 "unicorn_http.rl"
1496
+ #line 349 "unicorn_http.rl"
1508
1497
  {MARK(start.query, p); }
1509
1498
  goto st31;
1510
1499
  st31:
1511
1500
  if ( ++p == pe )
1512
1501
  goto _test_eof31;
1513
1502
  case 31:
1514
- #line 1515 "unicorn_http.c"
1503
+ #line 1504 "unicorn_http.c"
1515
1504
  if ( (*p) < 65 ) {
1516
1505
  if ( 48 <= (*p) && (*p) <= 57 )
1517
1506
  goto st32;
@@ -1535,58 +1524,58 @@ case 32:
1535
1524
  goto st30;
1536
1525
  goto st0;
1537
1526
  tr7:
1538
- #line 327 "unicorn_http.rl"
1527
+ #line 316 "unicorn_http.rl"
1539
1528
  {MARK(mark, p); }
1540
- #line 331 "unicorn_http.rl"
1529
+ #line 320 "unicorn_http.rl"
1541
1530
  { downcase_char(deconst(p)); }
1542
1531
  goto st33;
1543
1532
  st33:
1544
1533
  if ( ++p == pe )
1545
1534
  goto _test_eof33;
1546
1535
  case 33:
1547
- #line 1548 "unicorn_http.c"
1536
+ #line 1537 "unicorn_http.c"
1548
1537
  switch( (*p) ) {
1549
1538
  case 84: goto tr63;
1550
1539
  case 116: goto tr63;
1551
1540
  }
1552
1541
  goto st0;
1553
1542
  tr63:
1554
- #line 331 "unicorn_http.rl"
1543
+ #line 320 "unicorn_http.rl"
1555
1544
  { downcase_char(deconst(p)); }
1556
1545
  goto st34;
1557
1546
  st34:
1558
1547
  if ( ++p == pe )
1559
1548
  goto _test_eof34;
1560
1549
  case 34:
1561
- #line 1562 "unicorn_http.c"
1550
+ #line 1551 "unicorn_http.c"
1562
1551
  switch( (*p) ) {
1563
1552
  case 84: goto tr64;
1564
1553
  case 116: goto tr64;
1565
1554
  }
1566
1555
  goto st0;
1567
1556
  tr64:
1568
- #line 331 "unicorn_http.rl"
1557
+ #line 320 "unicorn_http.rl"
1569
1558
  { downcase_char(deconst(p)); }
1570
1559
  goto st35;
1571
1560
  st35:
1572
1561
  if ( ++p == pe )
1573
1562
  goto _test_eof35;
1574
1563
  case 35:
1575
- #line 1576 "unicorn_http.c"
1564
+ #line 1565 "unicorn_http.c"
1576
1565
  switch( (*p) ) {
1577
1566
  case 80: goto tr65;
1578
1567
  case 112: goto tr65;
1579
1568
  }
1580
1569
  goto st0;
1581
1570
  tr65:
1582
- #line 331 "unicorn_http.rl"
1571
+ #line 320 "unicorn_http.rl"
1583
1572
  { downcase_char(deconst(p)); }
1584
1573
  goto st36;
1585
1574
  st36:
1586
1575
  if ( ++p == pe )
1587
1576
  goto _test_eof36;
1588
1577
  case 36:
1589
- #line 1590 "unicorn_http.c"
1578
+ #line 1579 "unicorn_http.c"
1590
1579
  switch( (*p) ) {
1591
1580
  case 58: goto tr66;
1592
1581
  case 83: goto tr67;
@@ -1594,7 +1583,7 @@ case 36:
1594
1583
  }
1595
1584
  goto st0;
1596
1585
  tr66:
1597
- #line 337 "unicorn_http.rl"
1586
+ #line 326 "unicorn_http.rl"
1598
1587
  {
1599
1588
  rb_hash_aset(hp->env, g_rack_url_scheme, STR_NEW(mark, p));
1600
1589
  }
@@ -1603,7 +1592,7 @@ st37:
1603
1592
  if ( ++p == pe )
1604
1593
  goto _test_eof37;
1605
1594
  case 37:
1606
- #line 1607 "unicorn_http.c"
1595
+ #line 1596 "unicorn_http.c"
1607
1596
  if ( (*p) == 47 )
1608
1597
  goto st38;
1609
1598
  goto st0;
@@ -1691,14 +1680,14 @@ case 42:
1691
1680
  goto st40;
1692
1681
  goto st0;
1693
1682
  tr72:
1694
- #line 327 "unicorn_http.rl"
1683
+ #line 316 "unicorn_http.rl"
1695
1684
  {MARK(mark, p); }
1696
1685
  goto st43;
1697
1686
  st43:
1698
1687
  if ( ++p == pe )
1699
1688
  goto _test_eof43;
1700
1689
  case 43:
1701
- #line 1702 "unicorn_http.c"
1690
+ #line 1691 "unicorn_http.c"
1702
1691
  switch( (*p) ) {
1703
1692
  case 37: goto st41;
1704
1693
  case 47: goto tr76;
@@ -1750,14 +1739,14 @@ case 44:
1750
1739
  goto st0;
1751
1740
  goto st40;
1752
1741
  tr73:
1753
- #line 327 "unicorn_http.rl"
1742
+ #line 316 "unicorn_http.rl"
1754
1743
  {MARK(mark, p); }
1755
1744
  goto st45;
1756
1745
  st45:
1757
1746
  if ( ++p == pe )
1758
1747
  goto _test_eof45;
1759
1748
  case 45:
1760
- #line 1761 "unicorn_http.c"
1749
+ #line 1750 "unicorn_http.c"
1761
1750
  switch( (*p) ) {
1762
1751
  case 37: goto st41;
1763
1752
  case 47: goto st0;
@@ -1835,14 +1824,14 @@ case 47:
1835
1824
  goto st0;
1836
1825
  goto st40;
1837
1826
  tr67:
1838
- #line 331 "unicorn_http.rl"
1827
+ #line 320 "unicorn_http.rl"
1839
1828
  { downcase_char(deconst(p)); }
1840
1829
  goto st48;
1841
1830
  st48:
1842
1831
  if ( ++p == pe )
1843
1832
  goto _test_eof48;
1844
1833
  case 48:
1845
- #line 1846 "unicorn_http.c"
1834
+ #line 1835 "unicorn_http.c"
1846
1835
  if ( (*p) == 58 )
1847
1836
  goto tr66;
1848
1837
  goto st0;
@@ -2358,14 +2347,14 @@ case 67:
2358
2347
  goto tr3;
2359
2348
  goto st0;
2360
2349
  tr2:
2361
- #line 327 "unicorn_http.rl"
2350
+ #line 316 "unicorn_http.rl"
2362
2351
  {MARK(mark, p); }
2363
2352
  goto st68;
2364
2353
  st68:
2365
2354
  if ( ++p == pe )
2366
2355
  goto _test_eof68;
2367
2356
  case 68:
2368
- #line 2369 "unicorn_http.c"
2357
+ #line 2358 "unicorn_http.c"
2369
2358
  switch( (*p) ) {
2370
2359
  case 32: goto tr3;
2371
2360
  case 33: goto st49;
@@ -2449,14 +2438,14 @@ case 70:
2449
2438
  goto st51;
2450
2439
  goto st0;
2451
2440
  tr100:
2452
- #line 336 "unicorn_http.rl"
2441
+ #line 325 "unicorn_http.rl"
2453
2442
  { request_method(hp, PTR_TO(mark), LEN(mark, p)); }
2454
2443
  goto st71;
2455
2444
  st71:
2456
2445
  if ( ++p == pe )
2457
2446
  goto _test_eof71;
2458
2447
  case 71:
2459
- #line 2460 "unicorn_http.c"
2448
+ #line 2449 "unicorn_http.c"
2460
2449
  switch( (*p) ) {
2461
2450
  case 42: goto tr101;
2462
2451
  case 47: goto tr102;
@@ -2465,14 +2454,14 @@ case 71:
2465
2454
  }
2466
2455
  goto st0;
2467
2456
  tr101:
2468
- #line 327 "unicorn_http.rl"
2457
+ #line 316 "unicorn_http.rl"
2469
2458
  {MARK(mark, p); }
2470
2459
  goto st72;
2471
2460
  st72:
2472
2461
  if ( ++p == pe )
2473
2462
  goto _test_eof72;
2474
2463
  case 72:
2475
- #line 2476 "unicorn_http.c"
2464
+ #line 2465 "unicorn_http.c"
2476
2465
  switch( (*p) ) {
2477
2466
  case 10: goto tr104;
2478
2467
  case 13: goto tr105;
@@ -2481,7 +2470,7 @@ case 72:
2481
2470
  }
2482
2471
  goto st0;
2483
2472
  tr106:
2484
- #line 341 "unicorn_http.rl"
2473
+ #line 330 "unicorn_http.rl"
2485
2474
  {
2486
2475
  VALUE str;
2487
2476
 
@@ -2499,7 +2488,7 @@ tr106:
2499
2488
  }
2500
2489
  goto st73;
2501
2490
  tr119:
2502
- #line 366 "unicorn_http.rl"
2491
+ #line 355 "unicorn_http.rl"
2503
2492
  {
2504
2493
  VALUE val;
2505
2494
 
@@ -2510,7 +2499,7 @@ tr119:
2510
2499
  if (!STR_CSTR_EQ(val, "*"))
2511
2500
  rb_hash_aset(hp->env, g_path_info, val);
2512
2501
  }
2513
- #line 341 "unicorn_http.rl"
2502
+ #line 330 "unicorn_http.rl"
2514
2503
  {
2515
2504
  VALUE str;
2516
2505
 
@@ -2528,14 +2517,14 @@ tr119:
2528
2517
  }
2529
2518
  goto st73;
2530
2519
  tr126:
2531
- #line 360 "unicorn_http.rl"
2520
+ #line 349 "unicorn_http.rl"
2532
2521
  {MARK(start.query, p); }
2533
- #line 361 "unicorn_http.rl"
2522
+ #line 350 "unicorn_http.rl"
2534
2523
  {
2535
2524
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
2536
2525
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
2537
2526
  }
2538
- #line 341 "unicorn_http.rl"
2527
+ #line 330 "unicorn_http.rl"
2539
2528
  {
2540
2529
  VALUE str;
2541
2530
 
@@ -2553,12 +2542,12 @@ tr126:
2553
2542
  }
2554
2543
  goto st73;
2555
2544
  tr131:
2556
- #line 361 "unicorn_http.rl"
2545
+ #line 350 "unicorn_http.rl"
2557
2546
  {
2558
2547
  VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
2559
2548
  rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
2560
2549
  }
2561
- #line 341 "unicorn_http.rl"
2550
+ #line 330 "unicorn_http.rl"
2562
2551
  {
2563
2552
  VALUE str;
2564
2553
 
@@ -2579,7 +2568,7 @@ st73:
2579
2568
  if ( ++p == pe )
2580
2569
  goto _test_eof73;
2581
2570
  case 73:
2582
- #line 2583 "unicorn_http.c"
2571
+ #line 2572 "unicorn_http.c"
2583
2572
  switch( (*p) ) {
2584
2573
  case 10: goto tr108;
2585
2574
  case 13: goto tr109;
@@ -2592,14 +2581,14 @@ case 73:
2592
2581
  goto st0;
2593
2582
  goto tr107;
2594
2583
  tr107:
2595
- #line 327 "unicorn_http.rl"
2584
+ #line 316 "unicorn_http.rl"
2596
2585
  {MARK(mark, p); }
2597
2586
  goto st74;
2598
2587
  st74:
2599
2588
  if ( ++p == pe )
2600
2589
  goto _test_eof74;
2601
2590
  case 74:
2602
- #line 2603 "unicorn_http.c"
2591
+ #line 2592 "unicorn_http.c"
2603
2592
  switch( (*p) ) {
2604
2593
  case 10: goto tr112;
2605
2594
  case 13: goto tr113;
@@ -2612,14 +2601,14 @@ case 74:
2612
2601
  goto st0;
2613
2602
  goto st74;
2614
2603
  tr110:
2615
- #line 327 "unicorn_http.rl"
2604
+ #line 316 "unicorn_http.rl"
2616
2605
  {MARK(mark, p); }
2617
2606
  goto st75;
2618
2607
  st75:
2619
2608
  if ( ++p == pe )
2620
2609
  goto _test_eof75;
2621
2610
  case 75:
2622
- #line 2623 "unicorn_http.c"
2611
+ #line 2612 "unicorn_http.c"
2623
2612
  if ( (*p) < 65 ) {
2624
2613
  if ( 48 <= (*p) && (*p) <= 57 )
2625
2614
  goto st76;
@@ -2643,20 +2632,20 @@ case 76:
2643
2632
  goto st74;
2644
2633
  goto st0;
2645
2634
  tr102:
2646
- #line 327 "unicorn_http.rl"
2635
+ #line 316 "unicorn_http.rl"
2647
2636
  {MARK(mark, p); }
2648
2637
  goto st77;
2649
2638
  tr147:
2650
- #line 340 "unicorn_http.rl"
2639
+ #line 329 "unicorn_http.rl"
2651
2640
  { rb_hash_aset(hp->env, g_http_host, STR_NEW(mark, p)); }
2652
- #line 327 "unicorn_http.rl"
2641
+ #line 316 "unicorn_http.rl"
2653
2642
  {MARK(mark, p); }
2654
2643
  goto st77;
2655
2644
  st77:
2656
2645
  if ( ++p == pe )
2657
2646
  goto _test_eof77;
2658
2647
  case 77:
2659
- #line 2660 "unicorn_http.c"
2648
+ #line 2649 "unicorn_http.c"
2660
2649
  switch( (*p) ) {
2661
2650
  case 10: goto tr117;
2662
2651
  case 13: goto tr118;
@@ -2696,7 +2685,7 @@ case 79:
2696
2685
  goto st77;
2697
2686
  goto st0;
2698
2687
  tr121:
2699
- #line 366 "unicorn_http.rl"
2688
+ #line 355 "unicorn_http.rl"
2700
2689
  {
2701
2690
  VALUE val;
2702
2691
 
@@ -2712,7 +2701,7 @@ st80:
2712
2701
  if ( ++p == pe )
2713
2702
  goto _test_eof80;
2714
2703
  case 80:
2715
- #line 2716 "unicorn_http.c"
2704
+ #line 2705 "unicorn_http.c"
2716
2705
  switch( (*p) ) {
2717
2706
  case 10: goto tr124;
2718
2707
  case 13: goto tr125;
@@ -2725,14 +2714,14 @@ case 80:
2725
2714
  goto st0;
2726
2715
  goto tr123;
2727
2716
  tr123:
2728
- #line 360 "unicorn_http.rl"
2717
+ #line 349 "unicorn_http.rl"
2729
2718
  {MARK(start.query, p); }
2730
2719
  goto st81;
2731
2720
  st81:
2732
2721
  if ( ++p == pe )
2733
2722
  goto _test_eof81;
2734
2723
  case 81:
2735
- #line 2736 "unicorn_http.c"
2724
+ #line 2725 "unicorn_http.c"
2736
2725
  switch( (*p) ) {
2737
2726
  case 10: goto tr129;
2738
2727
  case 13: goto tr130;
@@ -2745,14 +2734,14 @@ case 81:
2745
2734
  goto st0;
2746
2735
  goto st81;
2747
2736
  tr127:
2748
- #line 360 "unicorn_http.rl"
2737
+ #line 349 "unicorn_http.rl"
2749
2738
  {MARK(start.query, p); }
2750
2739
  goto st82;
2751
2740
  st82:
2752
2741
  if ( ++p == pe )
2753
2742
  goto _test_eof82;
2754
2743
  case 82:
2755
- #line 2756 "unicorn_http.c"
2744
+ #line 2745 "unicorn_http.c"
2756
2745
  if ( (*p) < 65 ) {
2757
2746
  if ( 48 <= (*p) && (*p) <= 57 )
2758
2747
  goto st83;
@@ -2776,58 +2765,58 @@ case 83:
2776
2765
  goto st81;
2777
2766
  goto st0;
2778
2767
  tr103:
2779
- #line 327 "unicorn_http.rl"
2768
+ #line 316 "unicorn_http.rl"
2780
2769
  {MARK(mark, p); }
2781
- #line 331 "unicorn_http.rl"
2770
+ #line 320 "unicorn_http.rl"
2782
2771
  { downcase_char(deconst(p)); }
2783
2772
  goto st84;
2784
2773
  st84:
2785
2774
  if ( ++p == pe )
2786
2775
  goto _test_eof84;
2787
2776
  case 84:
2788
- #line 2789 "unicorn_http.c"
2777
+ #line 2778 "unicorn_http.c"
2789
2778
  switch( (*p) ) {
2790
2779
  case 84: goto tr134;
2791
2780
  case 116: goto tr134;
2792
2781
  }
2793
2782
  goto st0;
2794
2783
  tr134:
2795
- #line 331 "unicorn_http.rl"
2784
+ #line 320 "unicorn_http.rl"
2796
2785
  { downcase_char(deconst(p)); }
2797
2786
  goto st85;
2798
2787
  st85:
2799
2788
  if ( ++p == pe )
2800
2789
  goto _test_eof85;
2801
2790
  case 85:
2802
- #line 2803 "unicorn_http.c"
2791
+ #line 2792 "unicorn_http.c"
2803
2792
  switch( (*p) ) {
2804
2793
  case 84: goto tr135;
2805
2794
  case 116: goto tr135;
2806
2795
  }
2807
2796
  goto st0;
2808
2797
  tr135:
2809
- #line 331 "unicorn_http.rl"
2798
+ #line 320 "unicorn_http.rl"
2810
2799
  { downcase_char(deconst(p)); }
2811
2800
  goto st86;
2812
2801
  st86:
2813
2802
  if ( ++p == pe )
2814
2803
  goto _test_eof86;
2815
2804
  case 86:
2816
- #line 2817 "unicorn_http.c"
2805
+ #line 2806 "unicorn_http.c"
2817
2806
  switch( (*p) ) {
2818
2807
  case 80: goto tr136;
2819
2808
  case 112: goto tr136;
2820
2809
  }
2821
2810
  goto st0;
2822
2811
  tr136:
2823
- #line 331 "unicorn_http.rl"
2812
+ #line 320 "unicorn_http.rl"
2824
2813
  { downcase_char(deconst(p)); }
2825
2814
  goto st87;
2826
2815
  st87:
2827
2816
  if ( ++p == pe )
2828
2817
  goto _test_eof87;
2829
2818
  case 87:
2830
- #line 2831 "unicorn_http.c"
2819
+ #line 2820 "unicorn_http.c"
2831
2820
  switch( (*p) ) {
2832
2821
  case 58: goto tr137;
2833
2822
  case 83: goto tr138;
@@ -2835,7 +2824,7 @@ case 87:
2835
2824
  }
2836
2825
  goto st0;
2837
2826
  tr137:
2838
- #line 337 "unicorn_http.rl"
2827
+ #line 326 "unicorn_http.rl"
2839
2828
  {
2840
2829
  rb_hash_aset(hp->env, g_rack_url_scheme, STR_NEW(mark, p));
2841
2830
  }
@@ -2844,7 +2833,7 @@ st88:
2844
2833
  if ( ++p == pe )
2845
2834
  goto _test_eof88;
2846
2835
  case 88:
2847
- #line 2848 "unicorn_http.c"
2836
+ #line 2837 "unicorn_http.c"
2848
2837
  if ( (*p) == 47 )
2849
2838
  goto st89;
2850
2839
  goto st0;
@@ -2932,14 +2921,14 @@ case 93:
2932
2921
  goto st91;
2933
2922
  goto st0;
2934
2923
  tr143:
2935
- #line 327 "unicorn_http.rl"
2924
+ #line 316 "unicorn_http.rl"
2936
2925
  {MARK(mark, p); }
2937
2926
  goto st94;
2938
2927
  st94:
2939
2928
  if ( ++p == pe )
2940
2929
  goto _test_eof94;
2941
2930
  case 94:
2942
- #line 2943 "unicorn_http.c"
2931
+ #line 2932 "unicorn_http.c"
2943
2932
  switch( (*p) ) {
2944
2933
  case 37: goto st92;
2945
2934
  case 47: goto tr147;
@@ -2991,14 +2980,14 @@ case 95:
2991
2980
  goto st0;
2992
2981
  goto st91;
2993
2982
  tr144:
2994
- #line 327 "unicorn_http.rl"
2983
+ #line 316 "unicorn_http.rl"
2995
2984
  {MARK(mark, p); }
2996
2985
  goto st96;
2997
2986
  st96:
2998
2987
  if ( ++p == pe )
2999
2988
  goto _test_eof96;
3000
2989
  case 96:
3001
- #line 3002 "unicorn_http.c"
2990
+ #line 2991 "unicorn_http.c"
3002
2991
  switch( (*p) ) {
3003
2992
  case 37: goto st92;
3004
2993
  case 47: goto st0;
@@ -3076,14 +3065,14 @@ case 98:
3076
3065
  goto st0;
3077
3066
  goto st91;
3078
3067
  tr138:
3079
- #line 331 "unicorn_http.rl"
3068
+ #line 320 "unicorn_http.rl"
3080
3069
  { downcase_char(deconst(p)); }
3081
3070
  goto st99;
3082
3071
  st99:
3083
3072
  if ( ++p == pe )
3084
3073
  goto _test_eof99;
3085
3074
  case 99:
3086
- #line 3087 "unicorn_http.c"
3075
+ #line 3076 "unicorn_http.c"
3087
3076
  if ( (*p) == 58 )
3088
3077
  goto tr137;
3089
3078
  goto st0;
@@ -3103,7 +3092,7 @@ case 100:
3103
3092
  goto tr152;
3104
3093
  goto st0;
3105
3094
  tr151:
3106
- #line 376 "unicorn_http.rl"
3095
+ #line 365 "unicorn_http.rl"
3107
3096
  {
3108
3097
  hp->len.chunk = step_incr(hp->len.chunk, (*p), 16);
3109
3098
  if (hp->len.chunk < 0)
@@ -3114,7 +3103,7 @@ st101:
3114
3103
  if ( ++p == pe )
3115
3104
  goto _test_eof101;
3116
3105
  case 101:
3117
- #line 3118 "unicorn_http.c"
3106
+ #line 3107 "unicorn_http.c"
3118
3107
  switch( (*p) ) {
3119
3108
  case 10: goto tr153;
3120
3109
  case 13: goto st102;
@@ -3131,7 +3120,7 @@ case 101:
3131
3120
  goto tr152;
3132
3121
  goto st0;
3133
3122
  tr153:
3134
- #line 405 "unicorn_http.rl"
3123
+ #line 394 "unicorn_http.rl"
3135
3124
  {
3136
3125
  HP_FL_SET(hp, INTRAILER);
3137
3126
  cs = http_parser_en_Trailers;
@@ -3144,7 +3133,7 @@ st123:
3144
3133
  if ( ++p == pe )
3145
3134
  goto _test_eof123;
3146
3135
  case 123:
3147
- #line 3148 "unicorn_http.c"
3136
+ #line 3137 "unicorn_http.c"
3148
3137
  goto st0;
3149
3138
  st102:
3150
3139
  if ( ++p == pe )
@@ -3154,7 +3143,7 @@ case 102:
3154
3143
  goto tr153;
3155
3144
  goto st0;
3156
3145
  tr152:
3157
- #line 376 "unicorn_http.rl"
3146
+ #line 365 "unicorn_http.rl"
3158
3147
  {
3159
3148
  hp->len.chunk = step_incr(hp->len.chunk, (*p), 16);
3160
3149
  if (hp->len.chunk < 0)
@@ -3165,7 +3154,7 @@ st103:
3165
3154
  if ( ++p == pe )
3166
3155
  goto _test_eof103;
3167
3156
  case 103:
3168
- #line 3169 "unicorn_http.c"
3157
+ #line 3158 "unicorn_http.c"
3169
3158
  switch( (*p) ) {
3170
3159
  case 10: goto st104;
3171
3160
  case 13: goto st107;
@@ -3186,7 +3175,7 @@ st104:
3186
3175
  case 104:
3187
3176
  goto tr159;
3188
3177
  tr159:
3189
- #line 413 "unicorn_http.rl"
3178
+ #line 402 "unicorn_http.rl"
3190
3179
  {
3191
3180
  skip_chunk_data_hack: {
3192
3181
  size_t nr = MIN((size_t)hp->len.chunk, REMAINING);
@@ -3208,7 +3197,7 @@ st105:
3208
3197
  if ( ++p == pe )
3209
3198
  goto _test_eof105;
3210
3199
  case 105:
3211
- #line 3212 "unicorn_http.c"
3200
+ #line 3201 "unicorn_http.c"
3212
3201
  switch( (*p) ) {
3213
3202
  case 10: goto st100;
3214
3203
  case 13: goto st106;
@@ -3415,30 +3404,30 @@ case 113:
3415
3404
  goto st113;
3416
3405
  goto st0;
3417
3406
  tr172:
3418
- #line 333 "unicorn_http.rl"
3407
+ #line 322 "unicorn_http.rl"
3419
3408
  { MARK(mark, p); }
3420
- #line 335 "unicorn_http.rl"
3409
+ #line 324 "unicorn_http.rl"
3421
3410
  { write_cont_value(hp, buffer, p); }
3422
3411
  goto st114;
3423
3412
  tr175:
3424
- #line 335 "unicorn_http.rl"
3413
+ #line 324 "unicorn_http.rl"
3425
3414
  { write_cont_value(hp, buffer, p); }
3426
3415
  goto st114;
3427
3416
  tr182:
3428
- #line 333 "unicorn_http.rl"
3417
+ #line 322 "unicorn_http.rl"
3429
3418
  { MARK(mark, p); }
3430
- #line 334 "unicorn_http.rl"
3419
+ #line 323 "unicorn_http.rl"
3431
3420
  { write_value(hp, buffer, p); }
3432
3421
  goto st114;
3433
3422
  tr185:
3434
- #line 334 "unicorn_http.rl"
3423
+ #line 323 "unicorn_http.rl"
3435
3424
  { write_value(hp, buffer, p); }
3436
3425
  goto st114;
3437
3426
  st114:
3438
3427
  if ( ++p == pe )
3439
3428
  goto _test_eof114;
3440
3429
  case 114:
3441
- #line 3442 "unicorn_http.c"
3430
+ #line 3431 "unicorn_http.c"
3442
3431
  switch( (*p) ) {
3443
3432
  case 9: goto st115;
3444
3433
  case 10: goto tr167;
@@ -3467,14 +3456,14 @@ case 114:
3467
3456
  goto tr169;
3468
3457
  goto st0;
3469
3458
  tr171:
3470
- #line 333 "unicorn_http.rl"
3459
+ #line 322 "unicorn_http.rl"
3471
3460
  { MARK(mark, p); }
3472
3461
  goto st115;
3473
3462
  st115:
3474
3463
  if ( ++p == pe )
3475
3464
  goto _test_eof115;
3476
3465
  case 115:
3477
- #line 3478 "unicorn_http.c"
3466
+ #line 3467 "unicorn_http.c"
3478
3467
  switch( (*p) ) {
3479
3468
  case 9: goto tr171;
3480
3469
  case 10: goto tr172;
@@ -3486,14 +3475,14 @@ case 115:
3486
3475
  goto st0;
3487
3476
  goto tr170;
3488
3477
  tr170:
3489
- #line 333 "unicorn_http.rl"
3478
+ #line 322 "unicorn_http.rl"
3490
3479
  { MARK(mark, p); }
3491
3480
  goto st116;
3492
3481
  st116:
3493
3482
  if ( ++p == pe )
3494
3483
  goto _test_eof116;
3495
3484
  case 116:
3496
- #line 3497 "unicorn_http.c"
3485
+ #line 3486 "unicorn_http.c"
3497
3486
  switch( (*p) ) {
3498
3487
  case 10: goto tr175;
3499
3488
  case 13: goto tr176;
@@ -3506,35 +3495,35 @@ case 116:
3506
3495
  goto st0;
3507
3496
  goto st116;
3508
3497
  tr173:
3509
- #line 333 "unicorn_http.rl"
3498
+ #line 322 "unicorn_http.rl"
3510
3499
  { MARK(mark, p); }
3511
- #line 335 "unicorn_http.rl"
3500
+ #line 324 "unicorn_http.rl"
3512
3501
  { write_cont_value(hp, buffer, p); }
3513
3502
  goto st117;
3514
3503
  tr176:
3515
- #line 335 "unicorn_http.rl"
3504
+ #line 324 "unicorn_http.rl"
3516
3505
  { write_cont_value(hp, buffer, p); }
3517
3506
  goto st117;
3518
3507
  tr183:
3519
- #line 333 "unicorn_http.rl"
3508
+ #line 322 "unicorn_http.rl"
3520
3509
  { MARK(mark, p); }
3521
- #line 334 "unicorn_http.rl"
3510
+ #line 323 "unicorn_http.rl"
3522
3511
  { write_value(hp, buffer, p); }
3523
3512
  goto st117;
3524
3513
  tr186:
3525
- #line 334 "unicorn_http.rl"
3514
+ #line 323 "unicorn_http.rl"
3526
3515
  { write_value(hp, buffer, p); }
3527
3516
  goto st117;
3528
3517
  st117:
3529
3518
  if ( ++p == pe )
3530
3519
  goto _test_eof117;
3531
3520
  case 117:
3532
- #line 3533 "unicorn_http.c"
3521
+ #line 3522 "unicorn_http.c"
3533
3522
  if ( (*p) == 10 )
3534
3523
  goto st114;
3535
3524
  goto st0;
3536
3525
  tr167:
3537
- #line 400 "unicorn_http.rl"
3526
+ #line 389 "unicorn_http.rl"
3538
3527
  {
3539
3528
  cs = http_parser_first_final;
3540
3529
  goto post_exec;
@@ -3544,7 +3533,7 @@ st124:
3544
3533
  if ( ++p == pe )
3545
3534
  goto _test_eof124;
3546
3535
  case 124:
3547
- #line 3548 "unicorn_http.c"
3536
+ #line 3537 "unicorn_http.c"
3548
3537
  goto st0;
3549
3538
  st118:
3550
3539
  if ( ++p == pe )
@@ -3554,20 +3543,20 @@ case 118:
3554
3543
  goto tr167;
3555
3544
  goto st0;
3556
3545
  tr169:
3557
- #line 329 "unicorn_http.rl"
3546
+ #line 318 "unicorn_http.rl"
3558
3547
  { MARK(start.field, p); }
3559
- #line 330 "unicorn_http.rl"
3548
+ #line 319 "unicorn_http.rl"
3560
3549
  { snake_upcase_char(deconst(p)); }
3561
3550
  goto st119;
3562
3551
  tr178:
3563
- #line 330 "unicorn_http.rl"
3552
+ #line 319 "unicorn_http.rl"
3564
3553
  { snake_upcase_char(deconst(p)); }
3565
3554
  goto st119;
3566
3555
  st119:
3567
3556
  if ( ++p == pe )
3568
3557
  goto _test_eof119;
3569
3558
  case 119:
3570
- #line 3571 "unicorn_http.c"
3559
+ #line 3560 "unicorn_http.c"
3571
3560
  switch( (*p) ) {
3572
3561
  case 33: goto tr178;
3573
3562
  case 58: goto tr179;
@@ -3593,18 +3582,18 @@ case 119:
3593
3582
  goto tr178;
3594
3583
  goto st0;
3595
3584
  tr181:
3596
- #line 333 "unicorn_http.rl"
3585
+ #line 322 "unicorn_http.rl"
3597
3586
  { MARK(mark, p); }
3598
3587
  goto st120;
3599
3588
  tr179:
3600
- #line 332 "unicorn_http.rl"
3589
+ #line 321 "unicorn_http.rl"
3601
3590
  { hp->s.field_len = LEN(start.field, p); }
3602
3591
  goto st120;
3603
3592
  st120:
3604
3593
  if ( ++p == pe )
3605
3594
  goto _test_eof120;
3606
3595
  case 120:
3607
- #line 3608 "unicorn_http.c"
3596
+ #line 3597 "unicorn_http.c"
3608
3597
  switch( (*p) ) {
3609
3598
  case 9: goto tr181;
3610
3599
  case 10: goto tr182;
@@ -3616,14 +3605,14 @@ case 120:
3616
3605
  goto st0;
3617
3606
  goto tr180;
3618
3607
  tr180:
3619
- #line 333 "unicorn_http.rl"
3608
+ #line 322 "unicorn_http.rl"
3620
3609
  { MARK(mark, p); }
3621
3610
  goto st121;
3622
3611
  st121:
3623
3612
  if ( ++p == pe )
3624
3613
  goto _test_eof121;
3625
3614
  case 121:
3626
- #line 3627 "unicorn_http.c"
3615
+ #line 3616 "unicorn_http.c"
3627
3616
  switch( (*p) ) {
3628
3617
  case 10: goto tr185;
3629
3618
  case 13: goto tr186;
@@ -3764,7 +3753,7 @@ case 121:
3764
3753
  _out: {}
3765
3754
  }
3766
3755
 
3767
- #line 474 "unicorn_http.rl"
3756
+ #line 463 "unicorn_http.rl"
3768
3757
  post_exec: /* "_out:" also goes here */
3769
3758
  if (hp->cs != http_parser_error)
3770
3759
  hp->cs = cs;
@@ -3944,7 +3933,7 @@ static VALUE HttpParser_clear(VALUE self)
3944
3933
  return HttpParser_init(self);
3945
3934
 
3946
3935
  http_parser_init(hp);
3947
- my_hash_clear(hp->env);
3936
+ rb_hash_clear(hp->env);
3948
3937
 
3949
3938
  return self;
3950
3939
  }
@@ -4273,6 +4262,7 @@ void Init_unicorn_http(void)
4273
4262
  e414 = rb_define_class_under(mUnicorn, "RequestURITooLongError",
4274
4263
  eHttpParserError);
4275
4264
 
4265
+ id_uminus = rb_intern("-@");
4276
4266
  init_globals();
4277
4267
  rb_define_alloc_func(cHttpParser, HttpParser_alloc);
4278
4268
  rb_define_method(cHttpParser, "initialize", HttpParser_init, 0);
@@ -4323,5 +4313,7 @@ void Init_unicorn_http(void)
4323
4313
  id_clear = rb_intern("clear");
4324
4314
  #endif
4325
4315
  id_is_chunked_p = rb_intern("is_chunked?");
4316
+
4317
+ init_epollexclusive(mUnicorn);
4326
4318
  }
4327
4319
  #undef SET_GLOBAL