puma 2.1.1 → 7.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. checksums.yaml +7 -0
  2. data/History.md +3273 -0
  3. data/LICENSE +23 -20
  4. data/README.md +388 -100
  5. data/bin/puma-wild +25 -0
  6. data/bin/pumactl +1 -1
  7. data/docs/architecture.md +74 -0
  8. data/docs/compile_options.md +55 -0
  9. data/docs/deployment.md +137 -0
  10. data/docs/fork_worker.md +41 -0
  11. data/docs/images/puma-connection-flow-no-reactor.png +0 -0
  12. data/docs/images/puma-connection-flow.png +0 -0
  13. data/docs/images/puma-general-arch.png +0 -0
  14. data/docs/java_options.md +54 -0
  15. data/docs/jungle/README.md +9 -0
  16. data/docs/jungle/rc.d/README.md +74 -0
  17. data/docs/jungle/rc.d/puma +61 -0
  18. data/docs/jungle/rc.d/puma.conf +10 -0
  19. data/docs/kubernetes.md +73 -0
  20. data/docs/nginx.md +5 -5
  21. data/docs/plugins.md +42 -0
  22. data/docs/rails_dev_mode.md +28 -0
  23. data/docs/restart.md +65 -0
  24. data/docs/signals.md +98 -0
  25. data/docs/stats.md +148 -0
  26. data/docs/systemd.md +253 -0
  27. data/docs/testing_benchmarks_local_files.md +150 -0
  28. data/docs/testing_test_rackup_ci_files.md +36 -0
  29. data/ext/puma_http11/PumaHttp11Service.java +2 -2
  30. data/ext/puma_http11/extconf.rb +59 -2
  31. data/ext/puma_http11/http11_parser.c +319 -487
  32. data/ext/puma_http11/http11_parser.h +15 -13
  33. data/ext/puma_http11/http11_parser.java.rl +27 -43
  34. data/ext/puma_http11/http11_parser.rl +27 -24
  35. data/ext/puma_http11/http11_parser_common.rl +8 -8
  36. data/ext/puma_http11/mini_ssl.c +696 -38
  37. data/ext/puma_http11/no_ssl/PumaHttp11Service.java +15 -0
  38. data/ext/puma_http11/org/jruby/puma/Http11.java +145 -113
  39. data/ext/puma_http11/org/jruby/puma/Http11Parser.java +139 -172
  40. data/ext/puma_http11/org/jruby/puma/MiniSSL.java +413 -193
  41. data/ext/puma_http11/puma_http11.c +183 -175
  42. data/lib/puma/app/status.rb +77 -29
  43. data/lib/puma/binder.rb +349 -119
  44. data/lib/puma/cli.rb +164 -769
  45. data/lib/puma/client.rb +591 -132
  46. data/lib/puma/cluster/worker.rb +183 -0
  47. data/lib/puma/cluster/worker_handle.rb +127 -0
  48. data/lib/puma/cluster.rb +634 -0
  49. data/lib/puma/cluster_accept_loop_delay.rb +91 -0
  50. data/lib/puma/commonlogger.rb +115 -0
  51. data/lib/puma/configuration.rb +370 -202
  52. data/lib/puma/const.rb +266 -115
  53. data/lib/puma/control_cli.rb +219 -120
  54. data/lib/puma/detect.rb +45 -2
  55. data/lib/puma/dsl.rb +1496 -0
  56. data/lib/puma/error_logger.rb +115 -0
  57. data/lib/puma/events.rb +44 -60
  58. data/lib/puma/io_buffer.rb +48 -5
  59. data/lib/puma/jruby_restart.rb +2 -51
  60. data/lib/puma/json_serialization.rb +96 -0
  61. data/lib/puma/launcher/bundle_pruner.rb +104 -0
  62. data/lib/puma/launcher.rb +502 -0
  63. data/lib/puma/log_writer.rb +147 -0
  64. data/lib/puma/minissl/context_builder.rb +96 -0
  65. data/lib/puma/minissl.rb +355 -37
  66. data/lib/puma/null_io.rb +79 -12
  67. data/lib/puma/plugin/systemd.rb +90 -0
  68. data/lib/puma/plugin/tmp_restart.rb +36 -0
  69. data/lib/puma/plugin.rb +111 -0
  70. data/lib/puma/rack/builder.rb +297 -0
  71. data/lib/puma/rack/urlmap.rb +93 -0
  72. data/lib/puma/rack_default.rb +21 -4
  73. data/lib/puma/reactor.rb +102 -133
  74. data/lib/puma/request.rb +703 -0
  75. data/lib/puma/runner.rb +211 -0
  76. data/lib/puma/sd_notify.rb +146 -0
  77. data/lib/puma/server.rb +544 -436
  78. data/lib/puma/single.rb +72 -0
  79. data/lib/puma/state_file.rb +69 -0
  80. data/lib/puma/thread_pool.rb +282 -56
  81. data/lib/puma/util.rb +125 -0
  82. data/lib/puma.rb +80 -6
  83. data/lib/rack/handler/puma.rb +125 -47
  84. data/tools/Dockerfile +26 -0
  85. data/tools/trickletest.rb +44 -0
  86. metadata +77 -148
  87. data/COPYING +0 -55
  88. data/Gemfile +0 -10
  89. data/History.txt +0 -291
  90. data/Manifest.txt +0 -60
  91. data/Rakefile +0 -121
  92. data/TODO +0 -5
  93. data/docs/config.md +0 -0
  94. data/ext/puma_http11/ext_help.h +0 -15
  95. data/ext/puma_http11/io_buffer.c +0 -154
  96. data/lib/puma/accept_nonblock.rb +0 -23
  97. data/lib/puma/capistrano.rb +0 -34
  98. data/lib/puma/compat.rb +0 -11
  99. data/lib/puma/daemon_ext.rb +0 -20
  100. data/lib/puma/delegation.rb +0 -11
  101. data/lib/puma/java_io_buffer.rb +0 -45
  102. data/lib/puma/rack_patch.rb +0 -25
  103. data/puma.gemspec +0 -45
  104. data/test/test_app_status.rb +0 -88
  105. data/test/test_cli.rb +0 -171
  106. data/test/test_config.rb +0 -16
  107. data/test/test_http10.rb +0 -27
  108. data/test/test_http11.rb +0 -126
  109. data/test/test_integration.rb +0 -154
  110. data/test/test_iobuffer.rb +0 -38
  111. data/test/test_minissl.rb +0 -25
  112. data/test/test_null_io.rb +0 -31
  113. data/test/test_persistent.rb +0 -238
  114. data/test/test_puma_server.rb +0 -207
  115. data/test/test_rack_handler.rb +0 -10
  116. data/test/test_rack_server.rb +0 -141
  117. data/test/test_thread_pool.rb +0 -146
  118. data/test/test_unix_socket.rb +0 -39
  119. data/test/test_ws.rb +0 -89
  120. data/tools/jungle/init.d/README.md +0 -54
  121. data/tools/jungle/init.d/puma +0 -332
  122. data/tools/jungle/init.d/run-puma +0 -3
  123. data/tools/jungle/upstart/README.md +0 -61
  124. data/tools/jungle/upstart/puma-manager.conf +0 -31
  125. data/tools/jungle/upstart/puma.conf +0 -52
@@ -2,6 +2,8 @@
2
2
  // line 1 "ext/puma_http11/http11_parser.java.rl"
3
3
  package org.jruby.puma;
4
4
 
5
+ import org.jruby.Ruby;
6
+ import org.jruby.RubyHash;
5
7
  import org.jruby.util.ByteList;
6
8
 
7
9
  public class Http11Parser {
@@ -9,13 +11,13 @@ public class Http11Parser {
9
11
  /** Machine **/
10
12
 
11
13
 
12
- // line 65 "ext/puma_http11/http11_parser.java.rl"
14
+ // line 58 "ext/puma_http11/http11_parser.java.rl"
13
15
 
14
16
 
15
17
  /** Data **/
16
18
 
17
- // line 18 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
18
- private static byte[] init__http_parser_actions_0()
19
+ // line 20 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
20
+ private static byte[] init__puma_parser_actions_0()
19
21
  {
20
22
  return new byte [] {
21
23
  0, 1, 0, 1, 2, 1, 3, 1, 4, 1, 5, 1,
@@ -25,24 +27,23 @@ private static byte[] init__http_parser_actions_0()
25
27
  };
26
28
  }
27
29
 
28
- private static final byte _http_parser_actions[] = init__http_parser_actions_0();
30
+ private static final byte _puma_parser_actions[] = init__puma_parser_actions_0();
29
31
 
30
32
 
31
- private static short[] init__http_parser_key_offsets_0()
33
+ private static short[] init__puma_parser_key_offsets_0()
32
34
  {
33
35
  return new short [] {
34
36
  0, 0, 8, 17, 27, 29, 30, 31, 32, 33, 34, 36,
35
- 39, 41, 44, 45, 61, 62, 78, 80, 81, 90, 99, 105,
36
- 111, 121, 130, 136, 142, 153, 159, 165, 175, 181, 187, 196,
37
- 205, 211, 217, 226, 235, 244, 253, 262, 271, 280, 289, 298,
38
- 307, 316, 325, 334, 343, 352, 361, 370, 379, 380
37
+ 39, 41, 44, 45, 61, 62, 78, 85, 91, 99, 107, 117,
38
+ 125, 134, 142, 150, 159, 168, 177, 186, 195, 204, 213, 222,
39
+ 231, 240, 249, 258, 267, 276, 285, 294, 303, 312, 313
39
40
  };
40
41
  }
41
42
 
42
- private static final short _http_parser_key_offsets[] = init__http_parser_key_offsets_0();
43
+ private static final short _puma_parser_key_offsets[] = init__puma_parser_key_offsets_0();
43
44
 
44
45
 
45
- private static char[] init__http_parser_trans_keys_0()
46
+ private static char[] init__puma_parser_trans_keys_0()
46
47
  {
47
48
  return new char [] {
48
49
  36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45,
@@ -51,81 +52,73 @@ private static char[] init__http_parser_trans_keys_0()
51
52
  46, 48, 57, 48, 57, 13, 48, 57, 10, 13, 33, 124,
52
53
  126, 35, 39, 42, 43, 45, 46, 48, 57, 65, 90, 94,
53
54
  122, 10, 33, 58, 124, 126, 35, 39, 42, 43, 45, 46,
54
- 48, 57, 65, 90, 94, 122, 13, 32, 13, 32, 37, 60,
55
- 62, 127, 0, 31, 34, 35, 32, 37, 60, 62, 127, 0,
56
- 31, 34, 35, 48, 57, 65, 70, 97, 102, 48, 57, 65,
57
- 70, 97, 102, 43, 58, 45, 46, 48, 57, 65, 90, 97,
58
- 122, 32, 34, 35, 37, 60, 62, 127, 0, 31, 48, 57,
59
- 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 34,
60
- 35, 37, 59, 60, 62, 63, 127, 0, 31, 48, 57, 65,
61
- 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 34, 35,
62
- 37, 60, 62, 63, 127, 0, 31, 48, 57, 65, 70, 97,
63
- 102, 48, 57, 65, 70, 97, 102, 32, 34, 35, 37, 60,
64
- 62, 127, 0, 31, 32, 34, 35, 37, 60, 62, 127, 0,
65
- 31, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97,
66
- 102, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36,
67
- 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46,
68
- 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65,
69
- 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36,
70
- 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46,
71
- 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65,
72
- 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36,
73
- 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46,
74
- 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65,
75
- 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36,
76
- 95, 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46,
77
- 48, 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65,
78
- 90, 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36,
79
- 95, 45, 46, 48, 57, 65, 90, 32, 0
55
+ 48, 57, 65, 90, 94, 122, 13, 32, 127, 0, 8, 10,
56
+ 31, 13, 127, 0, 8, 10, 31, 32, 60, 62, 127, 0,
57
+ 31, 34, 35, 32, 60, 62, 127, 0, 31, 34, 35, 43,
58
+ 58, 45, 46, 48, 57, 65, 90, 97, 122, 32, 34, 35,
59
+ 60, 62, 127, 0, 31, 32, 34, 35, 60, 62, 63, 127,
60
+ 0, 31, 32, 34, 35, 60, 62, 127, 0, 31, 32, 34,
61
+ 35, 60, 62, 127, 0, 31, 32, 36, 95, 45, 46, 48,
62
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
63
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
64
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
65
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
66
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
67
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
68
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
69
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
70
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
71
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
72
+ 32, 36, 95, 45, 46, 48, 57, 65, 90, 32, 36, 95,
73
+ 45, 46, 48, 57, 65, 90, 32, 36, 95, 45, 46, 48,
74
+ 57, 65, 90, 32, 36, 95, 45, 46, 48, 57, 65, 90,
75
+ 32, 0
80
76
  };
81
77
  }
82
78
 
83
- private static final char _http_parser_trans_keys[] = init__http_parser_trans_keys_0();
79
+ private static final char _puma_parser_trans_keys[] = init__puma_parser_trans_keys_0();
84
80
 
85
81
 
86
- private static byte[] init__http_parser_single_lengths_0()
82
+ private static byte[] init__puma_parser_single_lengths_0()
87
83
  {
88
84
  return new byte [] {
89
85
  0, 2, 3, 4, 2, 1, 1, 1, 1, 1, 0, 1,
90
- 0, 1, 1, 4, 1, 4, 2, 1, 5, 5, 0, 0,
91
- 2, 7, 0, 0, 9, 0, 0, 8, 0, 0, 7, 7,
92
- 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
93
- 3, 3, 3, 3, 3, 3, 3, 3, 1, 0
86
+ 0, 1, 1, 4, 1, 4, 3, 2, 4, 4, 2, 6,
87
+ 7, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3,
88
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0
94
89
  };
95
90
  }
96
91
 
97
- private static final byte _http_parser_single_lengths[] = init__http_parser_single_lengths_0();
92
+ private static final byte _puma_parser_single_lengths[] = init__puma_parser_single_lengths_0();
98
93
 
99
94
 
100
- private static byte[] init__http_parser_range_lengths_0()
95
+ private static byte[] init__puma_parser_range_lengths_0()
101
96
  {
102
97
  return new byte [] {
103
98
  0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1,
104
- 1, 1, 0, 6, 0, 6, 0, 0, 2, 2, 3, 3,
105
- 4, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1,
106
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
107
- 3, 3, 3, 3, 3, 3, 3, 3, 0, 0
99
+ 1, 1, 0, 6, 0, 6, 2, 2, 2, 2, 4, 1,
100
+ 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
101
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0
108
102
  };
109
103
  }
110
104
 
111
- private static final byte _http_parser_range_lengths[] = init__http_parser_range_lengths_0();
105
+ private static final byte _puma_parser_range_lengths[] = init__puma_parser_range_lengths_0();
112
106
 
113
107
 
114
- private static short[] init__http_parser_index_offsets_0()
108
+ private static short[] init__puma_parser_index_offsets_0()
115
109
  {
116
110
  return new short [] {
117
111
  0, 0, 6, 13, 21, 24, 26, 28, 30, 32, 34, 36,
118
- 39, 41, 44, 46, 57, 59, 70, 73, 75, 83, 91, 95,
119
- 99, 106, 115, 119, 123, 134, 138, 142, 152, 156, 160, 169,
120
- 178, 182, 186, 193, 200, 207, 214, 221, 228, 235, 242, 249,
121
- 256, 263, 270, 277, 284, 291, 298, 305, 312, 314
112
+ 39, 41, 44, 46, 57, 59, 70, 76, 81, 88, 95, 102,
113
+ 110, 119, 127, 135, 142, 149, 156, 163, 170, 177, 184, 191,
114
+ 198, 205, 212, 219, 226, 233, 240, 247, 254, 261, 263
122
115
  };
123
116
  }
124
117
 
125
- private static final short _http_parser_index_offsets[] = init__http_parser_index_offsets_0();
118
+ private static final short _puma_parser_index_offsets[] = init__puma_parser_index_offsets_0();
126
119
 
127
120
 
128
- private static byte[] init__http_parser_indicies_0()
121
+ private static byte[] init__puma_parser_indicies_0()
129
122
  {
130
123
  return new byte [] {
131
124
  0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3,
@@ -134,80 +127,72 @@ private static byte[] init__http_parser_indicies_0()
134
127
  16, 15, 1, 17, 1, 18, 17, 1, 19, 1, 20, 21,
135
128
  21, 21, 21, 21, 21, 21, 21, 21, 1, 22, 1, 23,
136
129
  24, 23, 23, 23, 23, 23, 23, 23, 23, 1, 26, 27,
137
- 25, 29, 28, 30, 32, 1, 1, 1, 1, 1, 31, 33,
138
- 35, 1, 1, 1, 1, 1, 34, 36, 36, 36, 1, 34,
139
- 34, 34, 1, 37, 38, 37, 37, 37, 37, 1, 8, 1,
140
- 9, 39, 1, 1, 1, 1, 38, 40, 40, 40, 1, 38,
141
- 38, 38, 1, 41, 1, 43, 44, 45, 1, 1, 46, 1,
142
- 1, 42, 47, 47, 47, 1, 42, 42, 42, 1, 8, 1,
143
- 9, 49, 1, 1, 50, 1, 1, 48, 51, 51, 51, 1,
144
- 48, 48, 48, 1, 52, 1, 54, 55, 1, 1, 1, 1,
145
- 53, 56, 1, 58, 59, 1, 1, 1, 1, 57, 60, 60,
146
- 60, 1, 57, 57, 57, 1, 2, 61, 61, 61, 61, 61,
147
- 1, 2, 62, 62, 62, 62, 62, 1, 2, 63, 63, 63,
148
- 63, 63, 1, 2, 64, 64, 64, 64, 64, 1, 2, 65,
149
- 65, 65, 65, 65, 1, 2, 66, 66, 66, 66, 66, 1,
150
- 2, 67, 67, 67, 67, 67, 1, 2, 68, 68, 68, 68,
151
- 68, 1, 2, 69, 69, 69, 69, 69, 1, 2, 70, 70,
152
- 70, 70, 70, 1, 2, 71, 71, 71, 71, 71, 1, 2,
153
- 72, 72, 72, 72, 72, 1, 2, 73, 73, 73, 73, 73,
154
- 1, 2, 74, 74, 74, 74, 74, 1, 2, 75, 75, 75,
155
- 75, 75, 1, 2, 76, 76, 76, 76, 76, 1, 2, 77,
156
- 77, 77, 77, 77, 1, 2, 78, 78, 78, 78, 78, 1,
157
- 2, 1, 1, 0
130
+ 1, 1, 1, 25, 29, 1, 1, 1, 28, 30, 1, 1,
131
+ 1, 1, 1, 31, 32, 1, 1, 1, 1, 1, 33, 34,
132
+ 35, 34, 34, 34, 34, 1, 8, 1, 9, 1, 1, 1,
133
+ 1, 35, 36, 1, 38, 1, 1, 39, 1, 1, 37, 40,
134
+ 1, 42, 1, 1, 1, 1, 41, 43, 1, 45, 1, 1,
135
+ 1, 1, 44, 2, 46, 46, 46, 46, 46, 1, 2, 47,
136
+ 47, 47, 47, 47, 1, 2, 48, 48, 48, 48, 48, 1,
137
+ 2, 49, 49, 49, 49, 49, 1, 2, 50, 50, 50, 50,
138
+ 50, 1, 2, 51, 51, 51, 51, 51, 1, 2, 52, 52,
139
+ 52, 52, 52, 1, 2, 53, 53, 53, 53, 53, 1, 2,
140
+ 54, 54, 54, 54, 54, 1, 2, 55, 55, 55, 55, 55,
141
+ 1, 2, 56, 56, 56, 56, 56, 1, 2, 57, 57, 57,
142
+ 57, 57, 1, 2, 58, 58, 58, 58, 58, 1, 2, 59,
143
+ 59, 59, 59, 59, 1, 2, 60, 60, 60, 60, 60, 1,
144
+ 2, 61, 61, 61, 61, 61, 1, 2, 62, 62, 62, 62,
145
+ 62, 1, 2, 63, 63, 63, 63, 63, 1, 2, 1, 1,
146
+ 0
158
147
  };
159
148
  }
160
149
 
161
- private static final byte _http_parser_indicies[] = init__http_parser_indicies_0();
150
+ private static final byte _puma_parser_indicies[] = init__puma_parser_indicies_0();
162
151
 
163
152
 
164
- private static byte[] init__http_parser_trans_targs_0()
153
+ private static byte[] init__puma_parser_trans_targs_0()
165
154
  {
166
155
  return new byte [] {
167
- 2, 0, 3, 38, 4, 24, 28, 25, 5, 20, 6, 7,
168
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 57, 17,
169
- 18, 19, 14, 18, 19, 14, 5, 21, 22, 5, 21, 22,
170
- 23, 24, 25, 26, 27, 5, 28, 20, 29, 31, 34, 30,
171
- 31, 32, 34, 33, 5, 35, 20, 36, 5, 35, 20, 36,
172
- 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
173
- 50, 51, 52, 53, 54, 55, 56
156
+ 2, 0, 3, 27, 4, 22, 24, 23, 5, 20, 6, 7,
157
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 46, 17,
158
+ 18, 19, 14, 18, 19, 14, 5, 21, 5, 21, 22, 23,
159
+ 5, 24, 20, 25, 5, 26, 20, 5, 26, 20, 28, 29,
160
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
161
+ 42, 43, 44, 45
174
162
  };
175
163
  }
176
164
 
177
- private static final byte _http_parser_trans_targs[] = init__http_parser_trans_targs_0();
165
+ private static final byte _puma_parser_trans_targs[] = init__puma_parser_trans_targs_0();
178
166
 
179
167
 
180
- private static byte[] init__http_parser_trans_actions_0()
168
+ private static byte[] init__puma_parser_trans_actions_0()
181
169
  {
182
170
  return new byte [] {
183
171
  1, 0, 11, 0, 1, 1, 1, 1, 13, 13, 1, 0,
184
172
  0, 0, 0, 0, 0, 0, 19, 0, 0, 28, 23, 3,
185
- 5, 7, 31, 7, 0, 9, 25, 1, 1, 15, 0, 0,
186
- 0, 0, 0, 0, 0, 37, 0, 37, 0, 21, 21, 0,
187
- 0, 0, 0, 0, 40, 17, 40, 17, 34, 0, 34, 0,
173
+ 5, 7, 31, 7, 0, 9, 25, 1, 15, 0, 0, 0,
174
+ 37, 0, 37, 21, 40, 17, 40, 34, 0, 34, 0, 0,
188
175
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
189
- 0, 0, 0, 0, 0, 0, 0
176
+ 0, 0, 0, 0
190
177
  };
191
178
  }
192
179
 
193
- private static final byte _http_parser_trans_actions[] = init__http_parser_trans_actions_0();
180
+ private static final byte _puma_parser_trans_actions[] = init__puma_parser_trans_actions_0();
194
181
 
195
182
 
196
- static final int http_parser_start = 1;
197
- static final int http_parser_first_final = 57;
198
- static final int http_parser_error = 0;
183
+ static final int puma_parser_start = 1;
184
+ static final int puma_parser_first_final = 46;
185
+ static final int puma_parser_error = 0;
199
186
 
200
- static final int http_parser_en_main = 1;
201
187
 
202
-
203
- // line 69 "ext/puma_http11/http11_parser.java.rl"
188
+ // line 62 "ext/puma_http11/http11_parser.java.rl"
204
189
 
205
190
  public static interface ElementCB {
206
- public void call(Object data, int at, int length);
191
+ public void call(Ruby runtime, RubyHash data, ByteList buffer, int at, int length);
207
192
  }
208
193
 
209
194
  public static interface FieldCB {
210
- public void call(Object data, int field, int flen, int value, int vlen);
195
+ public void call(Ruby runtime, RubyHash data, ByteList buffer, int field, int flen, int value, int vlen);
211
196
  }
212
197
 
213
198
  public static class HttpParser {
@@ -220,28 +205,19 @@ static final int http_parser_en_main = 1;
220
205
  int field_len;
221
206
  int query_start;
222
207
 
223
- Object data;
208
+ RubyHash data;
224
209
  ByteList buffer;
225
210
 
226
- public FieldCB http_field;
227
- public ElementCB request_method;
228
- public ElementCB request_uri;
229
- public ElementCB fragment;
230
- public ElementCB request_path;
231
- public ElementCB query_string;
232
- public ElementCB http_version;
233
- public ElementCB header_done;
234
-
235
211
  public void init() {
236
212
  cs = 0;
237
213
 
238
214
 
239
- // line 240 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
215
+ // line 216 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
240
216
  {
241
- cs = http_parser_start;
217
+ cs = puma_parser_start;
242
218
  }
243
219
 
244
- // line 104 "ext/puma_http11/http11_parser.java.rl"
220
+ // line 88 "ext/puma_http11/http11_parser.java.rl"
245
221
 
246
222
  body_start = 0;
247
223
  content_len = 0;
@@ -254,7 +230,7 @@ static final int http_parser_en_main = 1;
254
230
 
255
231
  public final HttpParser parser = new HttpParser();
256
232
 
257
- public int execute(ByteList buffer, int off) {
233
+ public int execute(Ruby runtime, Http11 http, ByteList buffer, int off) {
258
234
  int p, pe;
259
235
  int cs = parser.cs;
260
236
  int len = buffer.length();
@@ -268,7 +244,7 @@ static final int http_parser_en_main = 1;
268
244
  parser.buffer = buffer;
269
245
 
270
246
 
271
- // line 272 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
247
+ // line 248 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
272
248
  {
273
249
  int _klen;
274
250
  int _trans = 0;
@@ -290,9 +266,9 @@ static final int http_parser_en_main = 1;
290
266
  }
291
267
  case 1:
292
268
  _match: do {
293
- _keys = _http_parser_key_offsets[cs];
294
- _trans = _http_parser_index_offsets[cs];
295
- _klen = _http_parser_single_lengths[cs];
269
+ _keys = _puma_parser_key_offsets[cs];
270
+ _trans = _puma_parser_index_offsets[cs];
271
+ _klen = _puma_parser_single_lengths[cs];
296
272
  if ( _klen > 0 ) {
297
273
  int _lower = _keys;
298
274
  int _mid;
@@ -302,9 +278,9 @@ case 1:
302
278
  break;
303
279
 
304
280
  _mid = _lower + ((_upper-_lower) >> 1);
305
- if ( data[p] < _http_parser_trans_keys[_mid] )
281
+ if ( data[p] < _puma_parser_trans_keys[_mid] )
306
282
  _upper = _mid - 1;
307
- else if ( data[p] > _http_parser_trans_keys[_mid] )
283
+ else if ( data[p] > _puma_parser_trans_keys[_mid] )
308
284
  _lower = _mid + 1;
309
285
  else {
310
286
  _trans += (_mid - _keys);
@@ -315,7 +291,7 @@ case 1:
315
291
  _trans += _klen;
316
292
  }
317
293
 
318
- _klen = _http_parser_range_lengths[cs];
294
+ _klen = _puma_parser_range_lengths[cs];
319
295
  if ( _klen > 0 ) {
320
296
  int _lower = _keys;
321
297
  int _mid;
@@ -325,9 +301,9 @@ case 1:
325
301
  break;
326
302
 
327
303
  _mid = _lower + (((_upper-_lower) >> 1) & ~1);
328
- if ( data[p] < _http_parser_trans_keys[_mid] )
304
+ if ( data[p] < _puma_parser_trans_keys[_mid] )
329
305
  _upper = _mid - 2;
330
- else if ( data[p] > _http_parser_trans_keys[_mid+1] )
306
+ else if ( data[p] > _puma_parser_trans_keys[_mid+1] )
331
307
  _lower = _mid + 2;
332
308
  else {
333
309
  _trans += ((_mid - _keys)>>1);
@@ -338,102 +314,93 @@ case 1:
338
314
  }
339
315
  } while (false);
340
316
 
341
- _trans = _http_parser_indicies[_trans];
342
- cs = _http_parser_trans_targs[_trans];
317
+ _trans = _puma_parser_indicies[_trans];
318
+ cs = _puma_parser_trans_targs[_trans];
343
319
 
344
- if ( _http_parser_trans_actions[_trans] != 0 ) {
345
- _acts = _http_parser_trans_actions[_trans];
346
- _nacts = (int) _http_parser_actions[_acts++];
320
+ if ( _puma_parser_trans_actions[_trans] != 0 ) {
321
+ _acts = _puma_parser_trans_actions[_trans];
322
+ _nacts = (int) _puma_parser_actions[_acts++];
347
323
  while ( _nacts-- > 0 )
348
324
  {
349
- switch ( _http_parser_actions[_acts++] )
325
+ switch ( _puma_parser_actions[_acts++] )
350
326
  {
351
327
  case 0:
352
- // line 13 "ext/puma_http11/http11_parser.java.rl"
328
+ // line 15 "ext/puma_http11/http11_parser.java.rl"
353
329
  {parser.mark = p; }
354
330
  break;
355
331
  case 1:
356
- // line 15 "ext/puma_http11/http11_parser.java.rl"
332
+ // line 17 "ext/puma_http11/http11_parser.java.rl"
357
333
  { parser.field_start = p; }
358
334
  break;
359
335
  case 2:
360
- // line 16 "ext/puma_http11/http11_parser.java.rl"
336
+ // line 18 "ext/puma_http11/http11_parser.java.rl"
361
337
  { /* FIXME stub */ }
362
338
  break;
363
339
  case 3:
364
- // line 17 "ext/puma_http11/http11_parser.java.rl"
340
+ // line 19 "ext/puma_http11/http11_parser.java.rl"
365
341
  {
366
342
  parser.field_len = p-parser.field_start;
367
343
  }
368
344
  break;
369
345
  case 4:
370
- // line 21 "ext/puma_http11/http11_parser.java.rl"
346
+ // line 23 "ext/puma_http11/http11_parser.java.rl"
371
347
  { parser.mark = p; }
372
348
  break;
373
349
  case 5:
374
- // line 22 "ext/puma_http11/http11_parser.java.rl"
375
- {
376
- if(parser.http_field != null) {
377
- parser.http_field.call(parser.data, parser.field_start, parser.field_len, parser.mark, p-parser.mark);
378
- }
350
+ // line 24 "ext/puma_http11/http11_parser.java.rl"
351
+ {
352
+ Http11.http_field(runtime, parser.data, parser.buffer, parser.field_start, parser.field_len, parser.mark, p-parser.mark);
379
353
  }
380
354
  break;
381
355
  case 6:
382
356
  // line 27 "ext/puma_http11/http11_parser.java.rl"
383
- {
384
- if(parser.request_method != null)
385
- parser.request_method.call(parser.data, parser.mark, p-parser.mark);
357
+ {
358
+ Http11.request_method(runtime, parser.data, parser.buffer, parser.mark, p-parser.mark);
386
359
  }
387
360
  break;
388
361
  case 7:
389
- // line 31 "ext/puma_http11/http11_parser.java.rl"
390
- {
391
- if(parser.request_uri != null)
392
- parser.request_uri.call(parser.data, parser.mark, p-parser.mark);
362
+ // line 30 "ext/puma_http11/http11_parser.java.rl"
363
+ {
364
+ Http11.request_uri(runtime, parser.data, parser.buffer, parser.mark, p-parser.mark);
393
365
  }
394
366
  break;
395
367
  case 8:
396
- // line 35 "ext/puma_http11/http11_parser.java.rl"
397
- {
398
- if(parser.fragment != null)
399
- parser.fragment.call(parser.data, parser.mark, p-parser.mark);
368
+ // line 33 "ext/puma_http11/http11_parser.java.rl"
369
+ {
370
+ Http11.fragment(runtime, parser.data, parser.buffer, parser.mark, p-parser.mark);
400
371
  }
401
372
  break;
402
373
  case 9:
403
- // line 40 "ext/puma_http11/http11_parser.java.rl"
374
+ // line 37 "ext/puma_http11/http11_parser.java.rl"
404
375
  {parser.query_start = p; }
405
376
  break;
406
377
  case 10:
407
- // line 41 "ext/puma_http11/http11_parser.java.rl"
408
- {
409
- if(parser.query_string != null)
410
- parser.query_string.call(parser.data, parser.query_start, p-parser.query_start);
378
+ // line 38 "ext/puma_http11/http11_parser.java.rl"
379
+ {
380
+ Http11.query_string(runtime, parser.data, parser.buffer, parser.query_start, p-parser.query_start);
411
381
  }
412
382
  break;
413
383
  case 11:
414
- // line 46 "ext/puma_http11/http11_parser.java.rl"
415
- {
416
- if(parser.http_version != null)
417
- parser.http_version.call(parser.data, parser.mark, p-parser.mark);
384
+ // line 42 "ext/puma_http11/http11_parser.java.rl"
385
+ {
386
+ Http11.server_protocol(runtime, parser.data, parser.buffer, parser.mark, p-parser.mark);
418
387
  }
419
388
  break;
420
389
  case 12:
421
- // line 51 "ext/puma_http11/http11_parser.java.rl"
390
+ // line 46 "ext/puma_http11/http11_parser.java.rl"
422
391
  {
423
- if(parser.request_path != null)
424
- parser.request_path.call(parser.data, parser.mark, p-parser.mark);
392
+ Http11.request_path(runtime, parser.data, parser.buffer, parser.mark, p-parser.mark);
425
393
  }
426
394
  break;
427
395
  case 13:
428
- // line 56 "ext/puma_http11/http11_parser.java.rl"
396
+ // line 50 "ext/puma_http11/http11_parser.java.rl"
429
397
  {
430
- parser.body_start = p + 1;
431
- if(parser.header_done != null)
432
- parser.header_done.call(parser.data, p + 1, pe - p - 1);
398
+ parser.body_start = p + 1;
399
+ http.header_done(runtime, parser.data, parser.buffer, p + 1, pe - p - 1);
433
400
  { p += 1; _goto_targ = 5; if (true) continue _goto;}
434
401
  }
435
402
  break;
436
- // line 437 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
403
+ // line 404 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
437
404
  }
438
405
  }
439
406
  }
@@ -453,7 +420,7 @@ case 5:
453
420
  break; }
454
421
  }
455
422
 
456
- // line 130 "ext/puma_http11/http11_parser.java.rl"
423
+ // line 114 "ext/puma_http11/http11_parser.java.rl"
457
424
 
458
425
  parser.cs = cs;
459
426
  parser.nread += (p - off);
@@ -479,10 +446,10 @@ case 5:
479
446
  }
480
447
 
481
448
  public boolean has_error() {
482
- return parser.cs == http_parser_error;
449
+ return parser.cs == puma_parser_error;
483
450
  }
484
451
 
485
452
  public boolean is_finished() {
486
- return parser.cs == http_parser_first_final;
453
+ return parser.cs == puma_parser_first_final;
487
454
  }
488
455
  }