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