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.
- checksums.yaml +7 -0
- data/History.md +3273 -0
- data/LICENSE +23 -20
- data/README.md +388 -100
- data/bin/puma-wild +25 -0
- data/bin/pumactl +1 -1
- 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/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/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 +27 -43
- 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/Http11.java +145 -113
- data/ext/puma_http11/org/jruby/puma/Http11Parser.java +139 -172
- 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 +164 -769
- data/lib/puma/client.rb +591 -132
- 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 +370 -202
- data/lib/puma/const.rb +266 -115
- data/lib/puma/control_cli.rb +219 -120
- data/lib/puma/detect.rb +45 -2
- data/lib/puma/dsl.rb +1496 -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 +104 -0
- data/lib/puma/launcher.rb +502 -0
- data/lib/puma/log_writer.rb +147 -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/request.rb +703 -0
- data/lib/puma/runner.rb +211 -0
- data/lib/puma/sd_notify.rb +146 -0
- data/lib/puma/server.rb +544 -436
- data/lib/puma/single.rb +72 -0
- data/lib/puma/state_file.rb +69 -0
- data/lib/puma/thread_pool.rb +282 -56
- 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 +77 -148
- data/COPYING +0 -55
- data/Gemfile +0 -10
- data/History.txt +0 -291
- data/Manifest.txt +0 -60
- data/Rakefile +0 -121
- 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 -207
- 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,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
|
|
14
|
+
// line 58 "ext/puma_http11/http11_parser.java.rl"
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
/** Data **/
|
|
16
18
|
|
|
17
|
-
// line
|
|
18
|
-
private static byte[]
|
|
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
|
|
30
|
+
private static final byte _puma_parser_actions[] = init__puma_parser_actions_0();
|
|
29
31
|
|
|
30
32
|
|
|
31
|
-
private static short[]
|
|
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,
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
43
|
+
private static final short _puma_parser_key_offsets[] = init__puma_parser_key_offsets_0();
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
private static char[]
|
|
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,
|
|
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
|
|
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
|
|
79
|
+
private static final char _puma_parser_trans_keys[] = init__puma_parser_trans_keys_0();
|
|
84
80
|
|
|
85
81
|
|
|
86
|
-
private static byte[]
|
|
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,
|
|
91
|
-
|
|
92
|
-
|
|
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
|
|
92
|
+
private static final byte _puma_parser_single_lengths[] = init__puma_parser_single_lengths_0();
|
|
98
93
|
|
|
99
94
|
|
|
100
|
-
private static byte[]
|
|
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,
|
|
105
|
-
|
|
106
|
-
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
|
|
105
|
+
private static final byte _puma_parser_range_lengths[] = init__puma_parser_range_lengths_0();
|
|
112
106
|
|
|
113
107
|
|
|
114
|
-
private static short[]
|
|
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,
|
|
119
|
-
|
|
120
|
-
|
|
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
|
|
118
|
+
private static final short _puma_parser_index_offsets[] = init__puma_parser_index_offsets_0();
|
|
126
119
|
|
|
127
120
|
|
|
128
|
-
private static byte[]
|
|
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
|
-
|
|
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
|
|
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
|
|
150
|
+
private static final byte _puma_parser_indicies[] = init__puma_parser_indicies_0();
|
|
162
151
|
|
|
163
152
|
|
|
164
|
-
private static byte[]
|
|
153
|
+
private static byte[] init__puma_parser_trans_targs_0()
|
|
165
154
|
{
|
|
166
155
|
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
|
|
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
|
|
165
|
+
private static final byte _puma_parser_trans_targs[] = init__puma_parser_trans_targs_0();
|
|
178
166
|
|
|
179
167
|
|
|
180
|
-
private static byte[]
|
|
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,
|
|
186
|
-
|
|
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
|
|
176
|
+
0, 0, 0, 0
|
|
190
177
|
};
|
|
191
178
|
}
|
|
192
179
|
|
|
193
|
-
private static final byte
|
|
180
|
+
private static final byte _puma_parser_trans_actions[] = init__puma_parser_trans_actions_0();
|
|
194
181
|
|
|
195
182
|
|
|
196
|
-
static final int
|
|
197
|
-
static final int
|
|
198
|
-
static final int
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
|
215
|
+
// line 216 "ext/puma_http11/org/jruby/puma/Http11Parser.java"
|
|
240
216
|
{
|
|
241
|
-
cs =
|
|
217
|
+
cs = puma_parser_start;
|
|
242
218
|
}
|
|
243
219
|
|
|
244
|
-
// line
|
|
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
|
|
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 =
|
|
294
|
-
_trans =
|
|
295
|
-
_klen =
|
|
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] <
|
|
281
|
+
if ( data[p] < _puma_parser_trans_keys[_mid] )
|
|
306
282
|
_upper = _mid - 1;
|
|
307
|
-
else if ( data[p] >
|
|
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 =
|
|
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] <
|
|
304
|
+
if ( data[p] < _puma_parser_trans_keys[_mid] )
|
|
329
305
|
_upper = _mid - 2;
|
|
330
|
-
else if ( data[p] >
|
|
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 =
|
|
342
|
-
cs =
|
|
317
|
+
_trans = _puma_parser_indicies[_trans];
|
|
318
|
+
cs = _puma_parser_trans_targs[_trans];
|
|
343
319
|
|
|
344
|
-
if (
|
|
345
|
-
_acts =
|
|
346
|
-
_nacts = (int)
|
|
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 (
|
|
325
|
+
switch ( _puma_parser_actions[_acts++] )
|
|
350
326
|
{
|
|
351
327
|
case 0:
|
|
352
|
-
// line
|
|
328
|
+
// line 15 "ext/puma_http11/http11_parser.java.rl"
|
|
353
329
|
{parser.mark = p; }
|
|
354
330
|
break;
|
|
355
331
|
case 1:
|
|
356
|
-
// line
|
|
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
|
|
336
|
+
// line 18 "ext/puma_http11/http11_parser.java.rl"
|
|
361
337
|
{ /* FIXME stub */ }
|
|
362
338
|
break;
|
|
363
339
|
case 3:
|
|
364
|
-
// line
|
|
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
|
|
346
|
+
// line 23 "ext/puma_http11/http11_parser.java.rl"
|
|
371
347
|
{ parser.mark = p; }
|
|
372
348
|
break;
|
|
373
349
|
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
|
-
}
|
|
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
|
-
|
|
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
|
|
390
|
-
{
|
|
391
|
-
|
|
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
|
|
397
|
-
{
|
|
398
|
-
|
|
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
|
|
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
|
|
408
|
-
{
|
|
409
|
-
|
|
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
|
|
415
|
-
{
|
|
416
|
-
|
|
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
|
|
390
|
+
// line 46 "ext/puma_http11/http11_parser.java.rl"
|
|
422
391
|
{
|
|
423
|
-
|
|
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
|
|
396
|
+
// line 50 "ext/puma_http11/http11_parser.java.rl"
|
|
429
397
|
{
|
|
430
|
-
parser.body_start = p + 1;
|
|
431
|
-
|
|
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
|
|
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
|
|
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 ==
|
|
449
|
+
return parser.cs == puma_parser_error;
|
|
483
450
|
}
|
|
484
451
|
|
|
485
452
|
public boolean is_finished() {
|
|
486
|
-
return parser.cs ==
|
|
453
|
+
return parser.cs == puma_parser_first_final;
|
|
487
454
|
}
|
|
488
455
|
}
|