unicorn 5.1.0 → 5.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.olddoc.yml +3 -3
- data/Documentation/unicorn.1.txt +2 -2
- data/Documentation/unicorn_rails.1.txt +2 -2
- data/FAQ +1 -1
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +3 -3
- data/HACKING +1 -1
- data/ISSUES +6 -6
- data/KNOWN_ISSUES +2 -2
- data/Links +2 -2
- data/README +2 -2
- data/SIGNALS +1 -1
- data/Sandbox +3 -2
- data/TODO +0 -2
- data/examples/big_app_gc.rb +1 -1
- data/examples/init.sh +36 -8
- data/examples/logrotate.conf +16 -1
- data/examples/nginx.conf +1 -1
- data/examples/unicorn.conf.minimal.rb +2 -2
- data/examples/unicorn.conf.rb +2 -2
- data/examples/unicorn@.service +5 -0
- data/ext/unicorn_http/unicorn_http.c +641 -342
- data/ext/unicorn_http/unicorn_http_common.rl +1 -1
- data/lib/unicorn/configurator.rb +3 -3
- data/lib/unicorn/http_server.rb +1 -1
- data/lib/unicorn/oob_gc.rb +3 -2
- data/lib/unicorn/version.rb +1 -1
- data/man/man1/unicorn.1 +54 -53
- data/man/man1/unicorn_rails.1 +47 -45
- data/test/unit/test_http_parser.rb +18 -0
- data/unicorn_1 +1 -0
- data/unicorn_rails_1 +1 -0
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75575863e5a09d4ac351269084628052c8ec554c
|
4
|
+
data.tar.gz: 5f7fc37e895b8982c3076fc56642ec90d8632d46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85c7d9f5d6c3056508758a7375809d477ee7e640167470711e4fda53e7f6c52ea6688e708fde80af5e54262dcdd218c0ef9fc966221c1e30762b0bdabf5c41fb
|
7
|
+
data.tar.gz: 1829ab9e474b1932617c97e37d6efa1075c1c147f8aa726777478741b5ae9106a163194647e03ff8d73786017dd2142afad8804d16625fde48876e10dc0e3a30
|
data/.olddoc.yml
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
---
|
2
|
-
cgit_url:
|
2
|
+
cgit_url: https://bogomips.org/unicorn.git
|
3
3
|
git_url: git://bogomips.org/unicorn.git
|
4
|
-
rdoc_url:
|
5
|
-
ml_url:
|
4
|
+
rdoc_url: https://bogomips.org/unicorn/
|
5
|
+
ml_url: https://bogomips.org/unicorn-public/
|
6
6
|
merge_html:
|
7
7
|
unicorn_1: Documentation/unicorn.1.html
|
8
8
|
unicorn_rails_1: Documentation/unicorn_rails.1.html
|
data/Documentation/unicorn.1.txt
CHANGED
@@ -181,7 +181,7 @@ the unicorn config file.
|
|
181
181
|
* [Rack RDoc][2]
|
182
182
|
* [Rackup HowTo][3]
|
183
183
|
|
184
|
-
[1]:
|
184
|
+
[1]: https://bogomips.org/unicorn/
|
185
185
|
[2]: http://www.rubydoc.info/github/rack/rack/
|
186
186
|
[3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
|
187
|
-
[4]:
|
187
|
+
[4]: https://bogomips.org/unicorn/SIGNALS.html
|
@@ -169,7 +169,7 @@ used by Unicorn.
|
|
169
169
|
* [Rack RDoc][2]
|
170
170
|
* [Rackup HowTo][3]
|
171
171
|
|
172
|
-
[1]:
|
172
|
+
[1]: https://bogomips.org/unicorn/
|
173
173
|
[2]: http://www.rubydoc.info/github/rack/rack/
|
174
174
|
[3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
|
175
|
-
[4]:
|
175
|
+
[4]: https://bogomips.org/unicorn/SIGNALS.html
|
data/FAQ
CHANGED
@@ -7,7 +7,7 @@ drained entirely by the application. This may happen when request
|
|
7
7
|
bodies are gzipped, as unicorn reads request body data lazily to avoid
|
8
8
|
overhead from bad requests.
|
9
9
|
|
10
|
-
Ref:
|
10
|
+
Ref: https://bogomips.org/unicorn-public/FC91211E-FD32-432C-92FC-0318714C2170@zendesk.com/
|
11
11
|
|
12
12
|
=== Why aren't my Rails log files rotated when I use SIGUSR1?
|
13
13
|
|
data/GIT-VERSION-FILE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
GIT_VERSION = 5.
|
1
|
+
GIT_VERSION = 5.2.0
|
data/GIT-VERSION-GEN
CHANGED
data/GNUmakefile
CHANGED
@@ -183,13 +183,13 @@ doc: .document $(ext)/unicorn_http.c man html .olddoc.yml $(PLACEHOLDERS)
|
|
183
183
|
install -m644 $(man1_paths) doc/
|
184
184
|
tar cf - $$(git ls-files examples/) | (cd doc && tar xf -)
|
185
185
|
|
186
|
-
# publishes docs to
|
186
|
+
# publishes docs to https://bogomips.org/unicorn/
|
187
187
|
publish_doc:
|
188
188
|
-git set-file-times
|
189
189
|
$(MAKE) doc
|
190
190
|
$(MAKE) doc_gz
|
191
191
|
chmod 644 $$(find doc -type f)
|
192
|
-
$(RSYNC) -av doc/
|
192
|
+
$(RSYNC) -av doc/ bogomips.org:/srv/bogomips/unicorn/
|
193
193
|
git ls-files | xargs touch
|
194
194
|
|
195
195
|
# Create gzip variants of the same timestamp as the original so nginx
|
@@ -219,7 +219,7 @@ fix-perms:
|
|
219
219
|
gem: $(pkggem)
|
220
220
|
|
221
221
|
install-gem: $(pkggem)
|
222
|
-
gem install $(CURDIR)/$<
|
222
|
+
gem install --local $(CURDIR)/$<
|
223
223
|
|
224
224
|
$(pkggem): .manifest fix-perms
|
225
225
|
gem build $(rfpackage).gemspec
|
data/HACKING
CHANGED
@@ -57,7 +57,7 @@ Please wrap documentation at 72 characters-per-line or less (long URLs
|
|
57
57
|
are exempt) so it is comfortably readable from terminals.
|
58
58
|
|
59
59
|
When referencing mailing list posts, use
|
60
|
-
<tt>
|
60
|
+
<tt>https://bogomips.org/unicorn-public/$MESSAGE_ID/</tt> if possible
|
61
61
|
since the Message-ID remains searchable even if a particular site
|
62
62
|
becomes unavailable.
|
63
63
|
|
data/ISSUES
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
mailto:unicorn-public@bogomips.org is the best place to report bugs,
|
4
4
|
submit patches and/or obtain support after you have searched the
|
5
|
-
{email archives}[
|
6
|
-
{documentation}[
|
5
|
+
{email archives}[https://bogomips.org/unicorn-public/] and
|
6
|
+
{documentation}[https://bogomips.org/unicorn/].
|
7
7
|
|
8
8
|
* No subscription will ever be required to email us
|
9
9
|
* Cc: all participants in a thread or commit, as subscription is optional
|
@@ -12,7 +12,7 @@ submit patches and/or obtain support after you have searched the
|
|
12
12
|
* Do not send HTML mail or images, it will be flagged as spam
|
13
13
|
* Anonymous and pseudonymous messages will always be welcome.
|
14
14
|
* The email submission port (587) is enabled on the bogomips.org MX:
|
15
|
-
|
15
|
+
https://bogomips.org/unicorn-public/20141004232241.GA23908@dcvr.yhbt.net/t/
|
16
16
|
|
17
17
|
If your issue is of a sensitive nature or you're just shy in public,
|
18
18
|
then feel free to email us privately at mailto:unicorn@bogomips.org
|
@@ -67,7 +67,7 @@ document distributed with git) on guidelines for patch submission.
|
|
67
67
|
* private: mailto:unicorn@bogomips.org
|
68
68
|
* nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
69
69
|
* nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
|
70
|
-
*
|
70
|
+
* https://bogomips.org/unicorn-public/
|
71
71
|
|
72
72
|
Mailing list subscription is optional, so Cc: all participants.
|
73
73
|
|
@@ -78,9 +78,9 @@ You can follow along via NNTP:
|
|
78
78
|
|
79
79
|
Or Atom feeds:
|
80
80
|
|
81
|
-
|
81
|
+
https://bogomips.org/unicorn-public/new.atom
|
82
82
|
|
83
|
-
The HTML archives at
|
83
|
+
The HTML archives at https://bogomips.org/unicorn-public/
|
84
84
|
also has links to per-thread Atom feeds and downloadable
|
85
85
|
mboxes.
|
86
86
|
|
data/KNOWN_ISSUES
CHANGED
@@ -9,7 +9,7 @@ acceptable solution. Those issues are documented here.
|
|
9
9
|
handlers.
|
10
10
|
|
11
11
|
* Issues with FreeBSD jails can be worked around as documented by Tatsuya Ono:
|
12
|
-
|
12
|
+
https://bogomips.org/unicorn-public/CAHBuKRj09FdxAgzsefJWotexw-7JYZGJMtgUp_dhjPz9VbKD6Q@mail.gmail.com/
|
13
13
|
|
14
14
|
* PRNGs (pseudo-random number generators) loaded before forking
|
15
15
|
(e.g. "preload_app true") may need to have their internal state
|
@@ -60,7 +60,7 @@ acceptable solution. Those issues are documented here.
|
|
60
60
|
application to use Rails 2.3.2 and you have no other choice, then
|
61
61
|
you may edit your unicorn gemspec and remove the Rack dependency.
|
62
62
|
|
63
|
-
ref:
|
63
|
+
ref: https://bogomips.org/unicorn-public/20091014221552.GA30624@dcvr.yhbt.net/
|
64
64
|
Note: the workaround described in the article above only made
|
65
65
|
the issue more subtle and we didn't notice them immediately.
|
66
66
|
|
data/Links
CHANGED
@@ -26,7 +26,7 @@ or services behind them.
|
|
26
26
|
* {raindrops}[http://raindrops.bogomips.org/] - real-time stats for
|
27
27
|
preforking Rack servers
|
28
28
|
|
29
|
-
* {UnXF}[
|
29
|
+
* {UnXF}[https://bogomips.org/unxf/] Un-X-Forward* the Rack environment,
|
30
30
|
useful since unicorn is designed to be deployed behind a reverse proxy.
|
31
31
|
|
32
32
|
=== unicorn is written to work with
|
@@ -52,5 +52,5 @@ or services behind them.
|
|
52
52
|
* {Mongrel}[http://rubygems.org/gems/mongrel] - the awesome webserver
|
53
53
|
unicorn is based on
|
54
54
|
|
55
|
-
* {david}[
|
55
|
+
* {david}[https://bogomips.org/david.git] - a tool to explain why you need
|
56
56
|
nginx in front of unicorn
|
data/README
CHANGED
@@ -82,7 +82,7 @@ You can get the latest source via git from the following locations
|
|
82
82
|
|
83
83
|
You may browse the code from the web:
|
84
84
|
|
85
|
-
*
|
85
|
+
* https://bogomips.org/unicorn.git
|
86
86
|
* http://repo.or.cz/w/unicorn.git (gitweb)
|
87
87
|
|
88
88
|
See the HACKING guide on how to contribute and build prerelease gems
|
@@ -128,7 +128,7 @@ All feedback (bug reports, user/development dicussion, patches, pull
|
|
128
128
|
requests) go to the mailing list/newsgroup. See the ISSUES document for
|
129
129
|
information on the {mailing list}[mailto:unicorn-public@bogomips.org].
|
130
130
|
|
131
|
-
The mailing list is archived at
|
131
|
+
The mailing list is archived at https://bogomips.org/unicorn-public/
|
132
132
|
Read-only NNTP access is available at:
|
133
133
|
nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn and
|
134
134
|
nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
data/SIGNALS
CHANGED
@@ -8,7 +8,7 @@ should be possible to easily share process management scripts between
|
|
8
8
|
Unicorn and nginx.
|
9
9
|
|
10
10
|
One example init script is distributed with unicorn:
|
11
|
-
|
11
|
+
https://bogomips.org/unicorn/examples/init.sh
|
12
12
|
|
13
13
|
=== Master Process
|
14
14
|
|
data/Sandbox
CHANGED
@@ -34,7 +34,7 @@ is the primary issue with sandboxing tools such as Bundler and Isolate.
|
|
34
34
|
If you're bundling unicorn, use "bundle exec unicorn" (or "bundle exec
|
35
35
|
unicorn_rails") to start unicorn with the correct environment variables
|
36
36
|
|
37
|
-
ref:
|
37
|
+
ref: https://bogomips.org/unicorn-public/9ECF07C4-5216-47BE-961D-AFC0F0C82060@internetfamo.us/
|
38
38
|
|
39
39
|
Otherwise (if you choose to not sandbox your unicorn installation), we
|
40
40
|
expect the tips for Isolate (below) apply, too.
|
@@ -43,7 +43,8 @@ expect the tips for Isolate (below) apply, too.
|
|
43
43
|
|
44
44
|
This is no longer be an issue as of bundler 0.9.17
|
45
45
|
|
46
|
-
ref:
|
46
|
+
ref:
|
47
|
+
https://bogomips.org/unicorn-public/8FC34B23-5994-41CC-B5AF-7198EF06909E@tramchase.com/
|
47
48
|
|
48
49
|
=== BUNDLE_GEMFILE for Capistrano users
|
49
50
|
|
data/TODO
CHANGED
data/examples/big_app_gc.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
# see {Unicorn::OobGC}[
|
1
|
+
# see {Unicorn::OobGC}[https://bogomips.org/unicorn/Unicorn/OobGC.html]
|
2
2
|
# Unicorn::OobGC was broken in Unicorn v3.3.1 - v3.6.1 and fixed in v3.6.2
|
data/examples/init.sh
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
#!/bin/sh
|
2
2
|
set -e
|
3
|
+
### BEGIN INIT INFO
|
4
|
+
# Provides: unicorn
|
5
|
+
# Required-Start: $local_fs $network
|
6
|
+
# Required-Stop: $local_fs $network
|
7
|
+
# Default-Start: 2 3 4 5
|
8
|
+
# Default-Stop: 0 1 6
|
9
|
+
# Short-Description: Start/stop unicorn Rack app server
|
10
|
+
### END INIT INFO
|
11
|
+
|
3
12
|
# Example init script, this can be used with nginx, too,
|
4
|
-
# since nginx and unicorn accept the same signals
|
13
|
+
# since nginx and unicorn accept the same signals.
|
5
14
|
|
6
15
|
# Feel free to change any of the following variables for your app:
|
7
16
|
TIMEOUT=${TIMEOUT-60}
|
@@ -9,21 +18,22 @@ APP_ROOT=/home/x/my_app/current
|
|
9
18
|
PID=$APP_ROOT/tmp/pids/unicorn.pid
|
10
19
|
CMD="/usr/bin/unicorn -D -c $APP_ROOT/config/unicorn.rb"
|
11
20
|
INIT_CONF=$APP_ROOT/config/init.conf
|
21
|
+
UPGRADE_DELAY=${UPGRADE_DELAY-2}
|
12
22
|
action="$1"
|
13
23
|
set -u
|
14
24
|
|
15
25
|
test -f "$INIT_CONF" && . $INIT_CONF
|
16
26
|
|
17
|
-
|
27
|
+
OLD="$PID.oldbin"
|
18
28
|
|
19
29
|
cd $APP_ROOT || exit 1
|
20
30
|
|
21
31
|
sig () {
|
22
|
-
test -s "$PID" && kill -$1
|
32
|
+
test -s "$PID" && kill -$1 $(cat $PID)
|
23
33
|
}
|
24
34
|
|
25
35
|
oldsig () {
|
26
|
-
test -s $
|
36
|
+
test -s "$OLD" && kill -$1 $(cat $OLD)
|
27
37
|
}
|
28
38
|
|
29
39
|
case $action in
|
@@ -45,18 +55,36 @@ restart|reload)
|
|
45
55
|
$CMD
|
46
56
|
;;
|
47
57
|
upgrade)
|
48
|
-
if
|
58
|
+
if oldsig 0
|
59
|
+
then
|
60
|
+
echo >&2 "Old upgraded process still running with $OLD"
|
61
|
+
exit 1
|
62
|
+
fi
|
63
|
+
|
64
|
+
cur_pid=
|
65
|
+
if test -s "$PID"
|
66
|
+
then
|
67
|
+
cur_pid=$(cat $PID)
|
68
|
+
fi
|
69
|
+
|
70
|
+
if test -n "$cur_pid" &&
|
71
|
+
kill -USR2 "$cur_pid" &&
|
72
|
+
sleep $UPGRADE_DELAY &&
|
73
|
+
new_pid=$(cat $PID) &&
|
74
|
+
test x"$new_pid" != x"$cur_pid" &&
|
75
|
+
kill -0 "$new_pid" &&
|
76
|
+
kill -QUIT "$cur_pid"
|
49
77
|
then
|
50
78
|
n=$TIMEOUT
|
51
|
-
while
|
79
|
+
while kill -0 "$cur_pid" 2>/dev/null && test $n -ge 0
|
52
80
|
do
|
53
81
|
printf '.' && sleep 1 && n=$(( $n - 1 ))
|
54
82
|
done
|
55
83
|
echo
|
56
84
|
|
57
|
-
if test $n -lt 0 &&
|
85
|
+
if test $n -lt 0 && kill -0 "$cur_pid" 2>/dev/null
|
58
86
|
then
|
59
|
-
echo >&2 "$
|
87
|
+
echo >&2 "$cur_pid still running after $TIMEOUT seconds"
|
60
88
|
exit 1
|
61
89
|
fi
|
62
90
|
exit 0
|
data/examples/logrotate.conf
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
#
|
4
4
|
# See the logrotate(8) manpage for more information:
|
5
5
|
# http://linux.die.net/man/8/logrotate
|
6
|
+
#
|
7
|
+
# public logrotate-related discussion in our archives:
|
8
|
+
# https://bogomips.org/unicorn-public/?q=logrotate
|
6
9
|
|
7
10
|
# Modify the following glob to match the logfiles your app writes to:
|
8
11
|
/var/log/unicorn_app/*.log {
|
@@ -22,7 +25,19 @@
|
|
22
25
|
# config. Unicorn supports the USR1 signal and we send it
|
23
26
|
# as our "lastaction" action:
|
24
27
|
lastaction
|
25
|
-
#
|
28
|
+
# For systemd users, assuming you use two services
|
29
|
+
# (as recommended) to allow zero-downtime upgrades.
|
30
|
+
# Only one service needs to be started, but signaling
|
31
|
+
# both here is harmless as long as they're both enabled
|
32
|
+
systemctl kill -s SIGUSR1 unicorn@1.service
|
33
|
+
systemctl kill -s SIGUSR1 unicorn@2.service
|
34
|
+
|
35
|
+
# Examples for other process management systems appreciated
|
36
|
+
# Mail us at unicorn-public@bogomips.org
|
37
|
+
# (see above for archives)
|
38
|
+
|
39
|
+
# If you use a pid file and assuming your pid file
|
40
|
+
# is in /var/run/unicorn_app/pid
|
26
41
|
pid=/var/run/unicorn_app/pid
|
27
42
|
test -s $pid && kill -USR1 "$(cat $pid)"
|
28
43
|
endscript
|
data/examples/nginx.conf
CHANGED
@@ -112,7 +112,7 @@ http {
|
|
112
112
|
# try_files directive appeared in in nginx 0.7.27 and has stabilized
|
113
113
|
# over time. Older versions of nginx (e.g. 0.6.x) requires
|
114
114
|
# "if (!-f $request_filename)" which was less efficient:
|
115
|
-
#
|
115
|
+
# https://bogomips.org/unicorn.git/tree/examples/nginx.conf?id=v3.3.1#n127
|
116
116
|
try_files $uri/index.html $uri.html $uri @app;
|
117
117
|
|
118
118
|
location @app {
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# Minimal sample configuration file for Unicorn (not Rack) when used
|
2
2
|
# with daemonization (unicorn -D) started in your working directory.
|
3
3
|
#
|
4
|
-
# See
|
4
|
+
# See https://bogomips.org/unicorn/Unicorn/Configurator.html for complete
|
5
5
|
# documentation.
|
6
|
-
# See also
|
6
|
+
# See also https://bogomips.org/unicorn/examples/unicorn.conf.rb for
|
7
7
|
# a more verbose configuration using more features.
|
8
8
|
|
9
9
|
listen 2007 # by default Unicorn listens on port 8080
|
data/examples/unicorn.conf.rb
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
#
|
3
3
|
# This configuration file documents many features of Unicorn
|
4
4
|
# that may not be needed for some applications. See
|
5
|
-
#
|
5
|
+
# https://bogomips.org/unicorn/examples/unicorn.conf.minimal.rb
|
6
6
|
# for a much simpler configuration file.
|
7
7
|
#
|
8
|
-
# See
|
8
|
+
# See https://bogomips.org/unicorn/Unicorn/Configurator.html for complete
|
9
9
|
# documentation.
|
10
10
|
|
11
11
|
# Use at least one worker per core if you're on a dedicated server,
|
data/examples/unicorn@.service
CHANGED
@@ -24,5 +24,10 @@ ExecReload = /bin/kill -HUP $MAINPID
|
|
24
24
|
# adding a few seconds for scheduling differences:
|
25
25
|
TimeoutStopSec = 62
|
26
26
|
|
27
|
+
# Only kill the master process, it may be harmful to signal
|
28
|
+
# workers via default "control-group" setting since some
|
29
|
+
# Ruby extensions and applications misbehave on interrupts
|
30
|
+
KillMode = process
|
31
|
+
|
27
32
|
[Install]
|
28
33
|
WantedBy = multi-user.target
|
@@ -297,7 +297,7 @@ static const int http_parser_first_final = 122;
|
|
297
297
|
static const int http_parser_error = 0;
|
298
298
|
|
299
299
|
static const int http_parser_en_ChunkedBody = 100;
|
300
|
-
static const int http_parser_en_ChunkedBody_chunk_chunk_end =
|
300
|
+
static const int http_parser_en_ChunkedBody_chunk_chunk_end = 105;
|
301
301
|
static const int http_parser_en_Trailers = 114;
|
302
302
|
static const int http_parser_en_main = 1;
|
303
303
|
|
@@ -463,7 +463,7 @@ tr8:
|
|
463
463
|
}
|
464
464
|
}
|
465
465
|
goto st5;
|
466
|
-
|
466
|
+
tr42:
|
467
467
|
#line 289 "unicorn_http.rl"
|
468
468
|
{MARK(mark, p); }
|
469
469
|
#line 318 "unicorn_http.rl"
|
@@ -472,14 +472,14 @@ tr37:
|
|
472
472
|
rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
|
473
473
|
}
|
474
474
|
goto st5;
|
475
|
-
|
475
|
+
tr45:
|
476
476
|
#line 318 "unicorn_http.rl"
|
477
477
|
{
|
478
478
|
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
|
479
479
|
rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
|
480
480
|
}
|
481
481
|
goto st5;
|
482
|
-
|
482
|
+
tr49:
|
483
483
|
#line 328 "unicorn_http.rl"
|
484
484
|
{
|
485
485
|
VALUE val;
|
@@ -508,7 +508,7 @@ tr44:
|
|
508
508
|
}
|
509
509
|
}
|
510
510
|
goto st5;
|
511
|
-
|
511
|
+
tr55:
|
512
512
|
#line 322 "unicorn_http.rl"
|
513
513
|
{MARK(start.query, p); }
|
514
514
|
#line 323 "unicorn_http.rl"
|
@@ -533,7 +533,7 @@ tr50:
|
|
533
533
|
}
|
534
534
|
}
|
535
535
|
goto st5;
|
536
|
-
|
536
|
+
tr59:
|
537
537
|
#line 323 "unicorn_http.rl"
|
538
538
|
{
|
539
539
|
VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
|
@@ -624,8 +624,10 @@ st13:
|
|
624
624
|
if ( ++p == pe )
|
625
625
|
goto _test_eof13;
|
626
626
|
case 13:
|
627
|
-
|
628
|
-
goto tr18;
|
627
|
+
switch( (*p) ) {
|
628
|
+
case 10: goto tr18;
|
629
|
+
case 13: goto tr19;
|
630
|
+
}
|
629
631
|
if ( 48 <= (*p) && (*p) <= 57 )
|
630
632
|
goto st13;
|
631
633
|
goto st0;
|
@@ -633,23 +635,23 @@ tr18:
|
|
633
635
|
#line 327 "unicorn_http.rl"
|
634
636
|
{ http_version(hp, PTR_TO(mark), LEN(mark, p)); }
|
635
637
|
goto st14;
|
636
|
-
|
638
|
+
tr26:
|
637
639
|
#line 295 "unicorn_http.rl"
|
638
640
|
{ MARK(mark, p); }
|
639
641
|
#line 297 "unicorn_http.rl"
|
640
642
|
{ write_cont_value(hp, buffer, p); }
|
641
643
|
goto st14;
|
642
|
-
|
644
|
+
tr29:
|
643
645
|
#line 297 "unicorn_http.rl"
|
644
646
|
{ write_cont_value(hp, buffer, p); }
|
645
647
|
goto st14;
|
646
|
-
|
648
|
+
tr36:
|
647
649
|
#line 295 "unicorn_http.rl"
|
648
650
|
{ MARK(mark, p); }
|
649
651
|
#line 296 "unicorn_http.rl"
|
650
652
|
{ write_value(hp, buffer, p); }
|
651
653
|
goto st14;
|
652
|
-
|
654
|
+
tr39:
|
653
655
|
#line 296 "unicorn_http.rl"
|
654
656
|
{ write_value(hp, buffer, p); }
|
655
657
|
goto st14;
|
@@ -657,78 +659,127 @@ st14:
|
|
657
659
|
if ( ++p == pe )
|
658
660
|
goto _test_eof14;
|
659
661
|
case 14:
|
660
|
-
#line
|
661
|
-
if ( (*p) == 10 )
|
662
|
-
goto st15;
|
663
|
-
goto st0;
|
664
|
-
st15:
|
665
|
-
if ( ++p == pe )
|
666
|
-
goto _test_eof15;
|
667
|
-
case 15:
|
662
|
+
#line 663 "unicorn_http.c"
|
668
663
|
switch( (*p) ) {
|
669
|
-
case 9: goto
|
664
|
+
case 9: goto st15;
|
665
|
+
case 10: goto tr21;
|
670
666
|
case 13: goto st18;
|
671
|
-
case 32: goto
|
672
|
-
case 33: goto
|
673
|
-
case 124: goto
|
674
|
-
case 126: goto
|
667
|
+
case 32: goto st15;
|
668
|
+
case 33: goto tr23;
|
669
|
+
case 124: goto tr23;
|
670
|
+
case 126: goto tr23;
|
675
671
|
}
|
676
672
|
if ( (*p) < 45 ) {
|
677
673
|
if ( (*p) > 39 ) {
|
678
674
|
if ( 42 <= (*p) && (*p) <= 43 )
|
679
|
-
goto
|
675
|
+
goto tr23;
|
680
676
|
} else if ( (*p) >= 35 )
|
681
|
-
goto
|
677
|
+
goto tr23;
|
682
678
|
} else if ( (*p) > 46 ) {
|
683
679
|
if ( (*p) < 65 ) {
|
684
680
|
if ( 48 <= (*p) && (*p) <= 57 )
|
685
|
-
goto
|
681
|
+
goto tr23;
|
686
682
|
} else if ( (*p) > 90 ) {
|
687
683
|
if ( 94 <= (*p) && (*p) <= 122 )
|
688
|
-
goto
|
684
|
+
goto tr23;
|
689
685
|
} else
|
690
|
-
goto
|
686
|
+
goto tr23;
|
691
687
|
} else
|
692
|
-
goto
|
688
|
+
goto tr23;
|
693
689
|
goto st0;
|
694
|
-
|
690
|
+
tr25:
|
695
691
|
#line 295 "unicorn_http.rl"
|
696
692
|
{ MARK(mark, p); }
|
697
|
-
goto
|
698
|
-
|
693
|
+
goto st15;
|
694
|
+
st15:
|
699
695
|
if ( ++p == pe )
|
700
|
-
goto
|
701
|
-
case
|
702
|
-
#line
|
696
|
+
goto _test_eof15;
|
697
|
+
case 15:
|
698
|
+
#line 699 "unicorn_http.c"
|
703
699
|
switch( (*p) ) {
|
704
|
-
case 9: goto
|
705
|
-
case
|
706
|
-
case
|
700
|
+
case 9: goto tr25;
|
701
|
+
case 10: goto tr26;
|
702
|
+
case 13: goto tr27;
|
703
|
+
case 32: goto tr25;
|
707
704
|
case 127: goto st0;
|
708
705
|
}
|
709
706
|
if ( 0 <= (*p) && (*p) <= 31 )
|
710
707
|
goto st0;
|
711
|
-
goto
|
712
|
-
|
708
|
+
goto tr24;
|
709
|
+
tr24:
|
713
710
|
#line 295 "unicorn_http.rl"
|
714
711
|
{ MARK(mark, p); }
|
715
|
-
goto
|
716
|
-
|
712
|
+
goto st16;
|
713
|
+
st16:
|
717
714
|
if ( ++p == pe )
|
718
|
-
goto
|
719
|
-
case
|
720
|
-
#line
|
715
|
+
goto _test_eof16;
|
716
|
+
case 16:
|
717
|
+
#line 718 "unicorn_http.c"
|
721
718
|
switch( (*p) ) {
|
722
|
-
case
|
719
|
+
case 10: goto tr29;
|
720
|
+
case 13: goto tr30;
|
723
721
|
case 127: goto st0;
|
724
722
|
}
|
725
723
|
if ( (*p) > 8 ) {
|
726
|
-
if (
|
724
|
+
if ( 11 <= (*p) && (*p) <= 31 )
|
727
725
|
goto st0;
|
728
726
|
} else if ( (*p) >= 0 )
|
729
727
|
goto st0;
|
728
|
+
goto st16;
|
729
|
+
tr19:
|
730
|
+
#line 327 "unicorn_http.rl"
|
731
|
+
{ http_version(hp, PTR_TO(mark), LEN(mark, p)); }
|
732
|
+
goto st17;
|
733
|
+
tr27:
|
734
|
+
#line 295 "unicorn_http.rl"
|
735
|
+
{ MARK(mark, p); }
|
736
|
+
#line 297 "unicorn_http.rl"
|
737
|
+
{ write_cont_value(hp, buffer, p); }
|
738
|
+
goto st17;
|
739
|
+
tr30:
|
740
|
+
#line 297 "unicorn_http.rl"
|
741
|
+
{ write_cont_value(hp, buffer, p); }
|
730
742
|
goto st17;
|
731
|
-
|
743
|
+
tr37:
|
744
|
+
#line 295 "unicorn_http.rl"
|
745
|
+
{ MARK(mark, p); }
|
746
|
+
#line 296 "unicorn_http.rl"
|
747
|
+
{ write_value(hp, buffer, p); }
|
748
|
+
goto st17;
|
749
|
+
tr40:
|
750
|
+
#line 296 "unicorn_http.rl"
|
751
|
+
{ write_value(hp, buffer, p); }
|
752
|
+
goto st17;
|
753
|
+
st17:
|
754
|
+
if ( ++p == pe )
|
755
|
+
goto _test_eof17;
|
756
|
+
case 17:
|
757
|
+
#line 758 "unicorn_http.c"
|
758
|
+
if ( (*p) == 10 )
|
759
|
+
goto st14;
|
760
|
+
goto st0;
|
761
|
+
tr21:
|
762
|
+
#line 343 "unicorn_http.rl"
|
763
|
+
{
|
764
|
+
finalize_header(hp);
|
765
|
+
|
766
|
+
cs = http_parser_first_final;
|
767
|
+
if (HP_FL_TEST(hp, HASBODY)) {
|
768
|
+
HP_FL_SET(hp, INBODY);
|
769
|
+
if (HP_FL_TEST(hp, CHUNKED))
|
770
|
+
cs = http_parser_en_ChunkedBody;
|
771
|
+
} else {
|
772
|
+
HP_FL_SET(hp, REQEOF);
|
773
|
+
assert(!HP_FL_TEST(hp, CHUNKED) && "chunked encoding without body!");
|
774
|
+
}
|
775
|
+
/*
|
776
|
+
* go back to Ruby so we can call the Rack application, we'll reenter
|
777
|
+
* the parser iff the body needs to be processed.
|
778
|
+
*/
|
779
|
+
goto post_exec;
|
780
|
+
}
|
781
|
+
goto st122;
|
782
|
+
tr104:
|
732
783
|
#line 303 "unicorn_http.rl"
|
733
784
|
{
|
734
785
|
VALUE str;
|
@@ -745,8 +796,27 @@ tr99:
|
|
745
796
|
rb_hash_aset(hp->env, g_request_path, str);
|
746
797
|
}
|
747
798
|
}
|
748
|
-
|
749
|
-
|
799
|
+
#line 343 "unicorn_http.rl"
|
800
|
+
{
|
801
|
+
finalize_header(hp);
|
802
|
+
|
803
|
+
cs = http_parser_first_final;
|
804
|
+
if (HP_FL_TEST(hp, HASBODY)) {
|
805
|
+
HP_FL_SET(hp, INBODY);
|
806
|
+
if (HP_FL_TEST(hp, CHUNKED))
|
807
|
+
cs = http_parser_en_ChunkedBody;
|
808
|
+
} else {
|
809
|
+
HP_FL_SET(hp, REQEOF);
|
810
|
+
assert(!HP_FL_TEST(hp, CHUNKED) && "chunked encoding without body!");
|
811
|
+
}
|
812
|
+
/*
|
813
|
+
* go back to Ruby so we can call the Rack application, we'll reenter
|
814
|
+
* the parser iff the body needs to be processed.
|
815
|
+
*/
|
816
|
+
goto post_exec;
|
817
|
+
}
|
818
|
+
goto st122;
|
819
|
+
tr108:
|
750
820
|
#line 289 "unicorn_http.rl"
|
751
821
|
{MARK(mark, p); }
|
752
822
|
#line 318 "unicorn_http.rl"
|
@@ -754,15 +824,53 @@ tr102:
|
|
754
824
|
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
|
755
825
|
rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
|
756
826
|
}
|
757
|
-
|
758
|
-
|
827
|
+
#line 343 "unicorn_http.rl"
|
828
|
+
{
|
829
|
+
finalize_header(hp);
|
830
|
+
|
831
|
+
cs = http_parser_first_final;
|
832
|
+
if (HP_FL_TEST(hp, HASBODY)) {
|
833
|
+
HP_FL_SET(hp, INBODY);
|
834
|
+
if (HP_FL_TEST(hp, CHUNKED))
|
835
|
+
cs = http_parser_en_ChunkedBody;
|
836
|
+
} else {
|
837
|
+
HP_FL_SET(hp, REQEOF);
|
838
|
+
assert(!HP_FL_TEST(hp, CHUNKED) && "chunked encoding without body!");
|
839
|
+
}
|
840
|
+
/*
|
841
|
+
* go back to Ruby so we can call the Rack application, we'll reenter
|
842
|
+
* the parser iff the body needs to be processed.
|
843
|
+
*/
|
844
|
+
goto post_exec;
|
845
|
+
}
|
846
|
+
goto st122;
|
847
|
+
tr112:
|
759
848
|
#line 318 "unicorn_http.rl"
|
760
849
|
{
|
761
850
|
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
|
762
851
|
rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
|
763
852
|
}
|
764
|
-
|
765
|
-
|
853
|
+
#line 343 "unicorn_http.rl"
|
854
|
+
{
|
855
|
+
finalize_header(hp);
|
856
|
+
|
857
|
+
cs = http_parser_first_final;
|
858
|
+
if (HP_FL_TEST(hp, HASBODY)) {
|
859
|
+
HP_FL_SET(hp, INBODY);
|
860
|
+
if (HP_FL_TEST(hp, CHUNKED))
|
861
|
+
cs = http_parser_en_ChunkedBody;
|
862
|
+
} else {
|
863
|
+
HP_FL_SET(hp, REQEOF);
|
864
|
+
assert(!HP_FL_TEST(hp, CHUNKED) && "chunked encoding without body!");
|
865
|
+
}
|
866
|
+
/*
|
867
|
+
* go back to Ruby so we can call the Rack application, we'll reenter
|
868
|
+
* the parser iff the body needs to be processed.
|
869
|
+
*/
|
870
|
+
goto post_exec;
|
871
|
+
}
|
872
|
+
goto st122;
|
873
|
+
tr117:
|
766
874
|
#line 328 "unicorn_http.rl"
|
767
875
|
{
|
768
876
|
VALUE val;
|
@@ -790,8 +898,27 @@ tr109:
|
|
790
898
|
rb_hash_aset(hp->env, g_request_path, str);
|
791
899
|
}
|
792
900
|
}
|
793
|
-
|
794
|
-
|
901
|
+
#line 343 "unicorn_http.rl"
|
902
|
+
{
|
903
|
+
finalize_header(hp);
|
904
|
+
|
905
|
+
cs = http_parser_first_final;
|
906
|
+
if (HP_FL_TEST(hp, HASBODY)) {
|
907
|
+
HP_FL_SET(hp, INBODY);
|
908
|
+
if (HP_FL_TEST(hp, CHUNKED))
|
909
|
+
cs = http_parser_en_ChunkedBody;
|
910
|
+
} else {
|
911
|
+
HP_FL_SET(hp, REQEOF);
|
912
|
+
assert(!HP_FL_TEST(hp, CHUNKED) && "chunked encoding without body!");
|
913
|
+
}
|
914
|
+
/*
|
915
|
+
* go back to Ruby so we can call the Rack application, we'll reenter
|
916
|
+
* the parser iff the body needs to be processed.
|
917
|
+
*/
|
918
|
+
goto post_exec;
|
919
|
+
}
|
920
|
+
goto st122;
|
921
|
+
tr124:
|
795
922
|
#line 322 "unicorn_http.rl"
|
796
923
|
{MARK(start.query, p); }
|
797
924
|
#line 323 "unicorn_http.rl"
|
@@ -815,8 +942,27 @@ tr115:
|
|
815
942
|
rb_hash_aset(hp->env, g_request_path, str);
|
816
943
|
}
|
817
944
|
}
|
818
|
-
|
819
|
-
|
945
|
+
#line 343 "unicorn_http.rl"
|
946
|
+
{
|
947
|
+
finalize_header(hp);
|
948
|
+
|
949
|
+
cs = http_parser_first_final;
|
950
|
+
if (HP_FL_TEST(hp, HASBODY)) {
|
951
|
+
HP_FL_SET(hp, INBODY);
|
952
|
+
if (HP_FL_TEST(hp, CHUNKED))
|
953
|
+
cs = http_parser_en_ChunkedBody;
|
954
|
+
} else {
|
955
|
+
HP_FL_SET(hp, REQEOF);
|
956
|
+
assert(!HP_FL_TEST(hp, CHUNKED) && "chunked encoding without body!");
|
957
|
+
}
|
958
|
+
/*
|
959
|
+
* go back to Ruby so we can call the Rack application, we'll reenter
|
960
|
+
* the parser iff the body needs to be processed.
|
961
|
+
*/
|
962
|
+
goto post_exec;
|
963
|
+
}
|
964
|
+
goto st122;
|
965
|
+
tr129:
|
820
966
|
#line 323 "unicorn_http.rl"
|
821
967
|
{
|
822
968
|
VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
|
@@ -838,16 +984,6 @@ tr119:
|
|
838
984
|
rb_hash_aset(hp->env, g_request_path, str);
|
839
985
|
}
|
840
986
|
}
|
841
|
-
goto st18;
|
842
|
-
st18:
|
843
|
-
if ( ++p == pe )
|
844
|
-
goto _test_eof18;
|
845
|
-
case 18:
|
846
|
-
#line 847 "unicorn_http.c"
|
847
|
-
if ( (*p) == 10 )
|
848
|
-
goto tr28;
|
849
|
-
goto st0;
|
850
|
-
tr28:
|
851
987
|
#line 343 "unicorn_http.rl"
|
852
988
|
{
|
853
989
|
finalize_header(hp);
|
@@ -872,15 +1008,134 @@ st122:
|
|
872
1008
|
if ( ++p == pe )
|
873
1009
|
goto _test_eof122;
|
874
1010
|
case 122:
|
875
|
-
#line
|
1011
|
+
#line 1012 "unicorn_http.c"
|
876
1012
|
goto st0;
|
877
|
-
|
1013
|
+
tr105:
|
1014
|
+
#line 303 "unicorn_http.rl"
|
1015
|
+
{
|
1016
|
+
VALUE str;
|
1017
|
+
|
1018
|
+
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), REQUEST_URI);
|
1019
|
+
str = rb_hash_aset(hp->env, g_request_uri, STR_NEW(mark, p));
|
1020
|
+
/*
|
1021
|
+
* "OPTIONS * HTTP/1.1\r\n" is a valid request, but we can't have '*'
|
1022
|
+
* in REQUEST_PATH or PATH_INFO or else Rack::Lint will complain
|
1023
|
+
*/
|
1024
|
+
if (STR_CSTR_EQ(str, "*")) {
|
1025
|
+
str = rb_str_new(NULL, 0);
|
1026
|
+
rb_hash_aset(hp->env, g_path_info, str);
|
1027
|
+
rb_hash_aset(hp->env, g_request_path, str);
|
1028
|
+
}
|
1029
|
+
}
|
1030
|
+
goto st18;
|
1031
|
+
tr109:
|
1032
|
+
#line 289 "unicorn_http.rl"
|
1033
|
+
{MARK(mark, p); }
|
1034
|
+
#line 318 "unicorn_http.rl"
|
1035
|
+
{
|
1036
|
+
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
|
1037
|
+
rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
|
1038
|
+
}
|
1039
|
+
goto st18;
|
1040
|
+
tr113:
|
1041
|
+
#line 318 "unicorn_http.rl"
|
1042
|
+
{
|
1043
|
+
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), FRAGMENT);
|
1044
|
+
rb_hash_aset(hp->env, g_fragment, STR_NEW(mark, p));
|
1045
|
+
}
|
1046
|
+
goto st18;
|
1047
|
+
tr118:
|
1048
|
+
#line 328 "unicorn_http.rl"
|
1049
|
+
{
|
1050
|
+
VALUE val;
|
1051
|
+
|
1052
|
+
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), REQUEST_PATH);
|
1053
|
+
val = rb_hash_aset(hp->env, g_request_path, STR_NEW(mark, p));
|
1054
|
+
|
1055
|
+
/* rack says PATH_INFO must start with "/" or be empty */
|
1056
|
+
if (!STR_CSTR_EQ(val, "*"))
|
1057
|
+
rb_hash_aset(hp->env, g_path_info, val);
|
1058
|
+
}
|
1059
|
+
#line 303 "unicorn_http.rl"
|
1060
|
+
{
|
1061
|
+
VALUE str;
|
1062
|
+
|
1063
|
+
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), REQUEST_URI);
|
1064
|
+
str = rb_hash_aset(hp->env, g_request_uri, STR_NEW(mark, p));
|
1065
|
+
/*
|
1066
|
+
* "OPTIONS * HTTP/1.1\r\n" is a valid request, but we can't have '*'
|
1067
|
+
* in REQUEST_PATH or PATH_INFO or else Rack::Lint will complain
|
1068
|
+
*/
|
1069
|
+
if (STR_CSTR_EQ(str, "*")) {
|
1070
|
+
str = rb_str_new(NULL, 0);
|
1071
|
+
rb_hash_aset(hp->env, g_path_info, str);
|
1072
|
+
rb_hash_aset(hp->env, g_request_path, str);
|
1073
|
+
}
|
1074
|
+
}
|
1075
|
+
goto st18;
|
1076
|
+
tr125:
|
1077
|
+
#line 322 "unicorn_http.rl"
|
1078
|
+
{MARK(start.query, p); }
|
1079
|
+
#line 323 "unicorn_http.rl"
|
1080
|
+
{
|
1081
|
+
VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
|
1082
|
+
rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
|
1083
|
+
}
|
1084
|
+
#line 303 "unicorn_http.rl"
|
1085
|
+
{
|
1086
|
+
VALUE str;
|
1087
|
+
|
1088
|
+
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), REQUEST_URI);
|
1089
|
+
str = rb_hash_aset(hp->env, g_request_uri, STR_NEW(mark, p));
|
1090
|
+
/*
|
1091
|
+
* "OPTIONS * HTTP/1.1\r\n" is a valid request, but we can't have '*'
|
1092
|
+
* in REQUEST_PATH or PATH_INFO or else Rack::Lint will complain
|
1093
|
+
*/
|
1094
|
+
if (STR_CSTR_EQ(str, "*")) {
|
1095
|
+
str = rb_str_new(NULL, 0);
|
1096
|
+
rb_hash_aset(hp->env, g_path_info, str);
|
1097
|
+
rb_hash_aset(hp->env, g_request_path, str);
|
1098
|
+
}
|
1099
|
+
}
|
1100
|
+
goto st18;
|
1101
|
+
tr130:
|
1102
|
+
#line 323 "unicorn_http.rl"
|
1103
|
+
{
|
1104
|
+
VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
|
1105
|
+
rb_hash_aset(hp->env, g_query_string, STR_NEW(start.query, p));
|
1106
|
+
}
|
1107
|
+
#line 303 "unicorn_http.rl"
|
1108
|
+
{
|
1109
|
+
VALUE str;
|
1110
|
+
|
1111
|
+
VALIDATE_MAX_URI_LENGTH(LEN(mark, p), REQUEST_URI);
|
1112
|
+
str = rb_hash_aset(hp->env, g_request_uri, STR_NEW(mark, p));
|
1113
|
+
/*
|
1114
|
+
* "OPTIONS * HTTP/1.1\r\n" is a valid request, but we can't have '*'
|
1115
|
+
* in REQUEST_PATH or PATH_INFO or else Rack::Lint will complain
|
1116
|
+
*/
|
1117
|
+
if (STR_CSTR_EQ(str, "*")) {
|
1118
|
+
str = rb_str_new(NULL, 0);
|
1119
|
+
rb_hash_aset(hp->env, g_path_info, str);
|
1120
|
+
rb_hash_aset(hp->env, g_request_path, str);
|
1121
|
+
}
|
1122
|
+
}
|
1123
|
+
goto st18;
|
1124
|
+
st18:
|
1125
|
+
if ( ++p == pe )
|
1126
|
+
goto _test_eof18;
|
1127
|
+
case 18:
|
1128
|
+
#line 1129 "unicorn_http.c"
|
1129
|
+
if ( (*p) == 10 )
|
1130
|
+
goto tr21;
|
1131
|
+
goto st0;
|
1132
|
+
tr23:
|
878
1133
|
#line 291 "unicorn_http.rl"
|
879
1134
|
{ MARK(start.field, p); }
|
880
1135
|
#line 292 "unicorn_http.rl"
|
881
1136
|
{ snake_upcase_char(deconst(p)); }
|
882
1137
|
goto st19;
|
883
|
-
|
1138
|
+
tr32:
|
884
1139
|
#line 292 "unicorn_http.rl"
|
885
1140
|
{ snake_upcase_char(deconst(p)); }
|
886
1141
|
goto st19;
|
@@ -888,36 +1143,36 @@ st19:
|
|
888
1143
|
if ( ++p == pe )
|
889
1144
|
goto _test_eof19;
|
890
1145
|
case 19:
|
891
|
-
#line
|
1146
|
+
#line 1147 "unicorn_http.c"
|
892
1147
|
switch( (*p) ) {
|
893
|
-
case 33: goto
|
894
|
-
case 58: goto
|
895
|
-
case 124: goto
|
896
|
-
case 126: goto
|
1148
|
+
case 33: goto tr32;
|
1149
|
+
case 58: goto tr33;
|
1150
|
+
case 124: goto tr32;
|
1151
|
+
case 126: goto tr32;
|
897
1152
|
}
|
898
1153
|
if ( (*p) < 45 ) {
|
899
1154
|
if ( (*p) > 39 ) {
|
900
1155
|
if ( 42 <= (*p) && (*p) <= 43 )
|
901
|
-
goto
|
1156
|
+
goto tr32;
|
902
1157
|
} else if ( (*p) >= 35 )
|
903
|
-
goto
|
1158
|
+
goto tr32;
|
904
1159
|
} else if ( (*p) > 46 ) {
|
905
1160
|
if ( (*p) < 65 ) {
|
906
1161
|
if ( 48 <= (*p) && (*p) <= 57 )
|
907
|
-
goto
|
1162
|
+
goto tr32;
|
908
1163
|
} else if ( (*p) > 90 ) {
|
909
1164
|
if ( 94 <= (*p) && (*p) <= 122 )
|
910
|
-
goto
|
1165
|
+
goto tr32;
|
911
1166
|
} else
|
912
|
-
goto
|
1167
|
+
goto tr32;
|
913
1168
|
} else
|
914
|
-
goto
|
1169
|
+
goto tr32;
|
915
1170
|
goto st0;
|
916
|
-
|
1171
|
+
tr35:
|
917
1172
|
#line 295 "unicorn_http.rl"
|
918
1173
|
{ MARK(mark, p); }
|
919
1174
|
goto st20;
|
920
|
-
|
1175
|
+
tr33:
|
921
1176
|
#line 294 "unicorn_http.rl"
|
922
1177
|
{ hp->s.field_len = LEN(start.field, p); }
|
923
1178
|
goto st20;
|
@@ -925,17 +1180,18 @@ st20:
|
|
925
1180
|
if ( ++p == pe )
|
926
1181
|
goto _test_eof20;
|
927
1182
|
case 20:
|
928
|
-
#line
|
1183
|
+
#line 1184 "unicorn_http.c"
|
929
1184
|
switch( (*p) ) {
|
930
|
-
case 9: goto
|
931
|
-
case
|
932
|
-
case
|
1185
|
+
case 9: goto tr35;
|
1186
|
+
case 10: goto tr36;
|
1187
|
+
case 13: goto tr37;
|
1188
|
+
case 32: goto tr35;
|
933
1189
|
case 127: goto st0;
|
934
1190
|
}
|
935
1191
|
if ( 0 <= (*p) && (*p) <= 31 )
|
936
1192
|
goto st0;
|
937
|
-
goto
|
938
|
-
|
1193
|
+
goto tr34;
|
1194
|
+
tr34:
|
939
1195
|
#line 295 "unicorn_http.rl"
|
940
1196
|
{ MARK(mark, p); }
|
941
1197
|
goto st21;
|
@@ -943,13 +1199,14 @@ st21:
|
|
943
1199
|
if ( ++p == pe )
|
944
1200
|
goto _test_eof21;
|
945
1201
|
case 21:
|
946
|
-
#line
|
1202
|
+
#line 1203 "unicorn_http.c"
|
947
1203
|
switch( (*p) ) {
|
948
|
-
case
|
1204
|
+
case 10: goto tr39;
|
1205
|
+
case 13: goto tr40;
|
949
1206
|
case 127: goto st0;
|
950
1207
|
}
|
951
1208
|
if ( (*p) > 8 ) {
|
952
|
-
if (
|
1209
|
+
if ( 11 <= (*p) && (*p) <= 31 )
|
953
1210
|
goto st0;
|
954
1211
|
} else if ( (*p) >= 0 )
|
955
1212
|
goto st0;
|
@@ -972,7 +1229,7 @@ tr9:
|
|
972
1229
|
}
|
973
1230
|
}
|
974
1231
|
goto st22;
|
975
|
-
|
1232
|
+
tr50:
|
976
1233
|
#line 328 "unicorn_http.rl"
|
977
1234
|
{
|
978
1235
|
VALUE val;
|
@@ -1001,7 +1258,7 @@ tr45:
|
|
1001
1258
|
}
|
1002
1259
|
}
|
1003
1260
|
goto st22;
|
1004
|
-
|
1261
|
+
tr56:
|
1005
1262
|
#line 322 "unicorn_http.rl"
|
1006
1263
|
{MARK(start.query, p); }
|
1007
1264
|
#line 323 "unicorn_http.rl"
|
@@ -1026,7 +1283,7 @@ tr51:
|
|
1026
1283
|
}
|
1027
1284
|
}
|
1028
1285
|
goto st22;
|
1029
|
-
|
1286
|
+
tr60:
|
1030
1287
|
#line 323 "unicorn_http.rl"
|
1031
1288
|
{
|
1032
1289
|
VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
|
@@ -1053,17 +1310,17 @@ st22:
|
|
1053
1310
|
if ( ++p == pe )
|
1054
1311
|
goto _test_eof22;
|
1055
1312
|
case 22:
|
1056
|
-
#line
|
1313
|
+
#line 1314 "unicorn_http.c"
|
1057
1314
|
switch( (*p) ) {
|
1058
|
-
case 32: goto
|
1315
|
+
case 32: goto tr42;
|
1059
1316
|
case 35: goto st0;
|
1060
|
-
case 37: goto
|
1317
|
+
case 37: goto tr43;
|
1061
1318
|
case 127: goto st0;
|
1062
1319
|
}
|
1063
1320
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1064
1321
|
goto st0;
|
1065
|
-
goto
|
1066
|
-
|
1322
|
+
goto tr41;
|
1323
|
+
tr41:
|
1067
1324
|
#line 289 "unicorn_http.rl"
|
1068
1325
|
{MARK(mark, p); }
|
1069
1326
|
goto st23;
|
@@ -1071,9 +1328,9 @@ st23:
|
|
1071
1328
|
if ( ++p == pe )
|
1072
1329
|
goto _test_eof23;
|
1073
1330
|
case 23:
|
1074
|
-
#line
|
1331
|
+
#line 1332 "unicorn_http.c"
|
1075
1332
|
switch( (*p) ) {
|
1076
|
-
case 32: goto
|
1333
|
+
case 32: goto tr45;
|
1077
1334
|
case 35: goto st0;
|
1078
1335
|
case 37: goto st24;
|
1079
1336
|
case 127: goto st0;
|
@@ -1081,7 +1338,7 @@ case 23:
|
|
1081
1338
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1082
1339
|
goto st0;
|
1083
1340
|
goto st23;
|
1084
|
-
|
1341
|
+
tr43:
|
1085
1342
|
#line 289 "unicorn_http.rl"
|
1086
1343
|
{MARK(mark, p); }
|
1087
1344
|
goto st24;
|
@@ -1089,7 +1346,7 @@ st24:
|
|
1089
1346
|
if ( ++p == pe )
|
1090
1347
|
goto _test_eof24;
|
1091
1348
|
case 24:
|
1092
|
-
#line
|
1349
|
+
#line 1350 "unicorn_http.c"
|
1093
1350
|
if ( (*p) < 65 ) {
|
1094
1351
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1095
1352
|
goto st25;
|
@@ -1116,7 +1373,7 @@ tr6:
|
|
1116
1373
|
#line 289 "unicorn_http.rl"
|
1117
1374
|
{MARK(mark, p); }
|
1118
1375
|
goto st26;
|
1119
|
-
|
1376
|
+
tr76:
|
1120
1377
|
#line 302 "unicorn_http.rl"
|
1121
1378
|
{ rb_hash_aset(hp->env, g_http_host, STR_NEW(mark, p)); }
|
1122
1379
|
#line 289 "unicorn_http.rl"
|
@@ -1126,12 +1383,12 @@ st26:
|
|
1126
1383
|
if ( ++p == pe )
|
1127
1384
|
goto _test_eof26;
|
1128
1385
|
case 26:
|
1129
|
-
#line
|
1386
|
+
#line 1387 "unicorn_http.c"
|
1130
1387
|
switch( (*p) ) {
|
1131
|
-
case 32: goto
|
1132
|
-
case 35: goto
|
1388
|
+
case 32: goto tr49;
|
1389
|
+
case 35: goto tr50;
|
1133
1390
|
case 37: goto st27;
|
1134
|
-
case 63: goto
|
1391
|
+
case 63: goto tr52;
|
1135
1392
|
case 127: goto st0;
|
1136
1393
|
}
|
1137
1394
|
if ( 0 <= (*p) && (*p) <= 31 )
|
@@ -1163,7 +1420,7 @@ case 28:
|
|
1163
1420
|
} else
|
1164
1421
|
goto st26;
|
1165
1422
|
goto st0;
|
1166
|
-
|
1423
|
+
tr52:
|
1167
1424
|
#line 328 "unicorn_http.rl"
|
1168
1425
|
{
|
1169
1426
|
VALUE val;
|
@@ -1180,17 +1437,17 @@ st29:
|
|
1180
1437
|
if ( ++p == pe )
|
1181
1438
|
goto _test_eof29;
|
1182
1439
|
case 29:
|
1183
|
-
#line
|
1440
|
+
#line 1441 "unicorn_http.c"
|
1184
1441
|
switch( (*p) ) {
|
1185
|
-
case 32: goto
|
1186
|
-
case 35: goto
|
1187
|
-
case 37: goto
|
1442
|
+
case 32: goto tr55;
|
1443
|
+
case 35: goto tr56;
|
1444
|
+
case 37: goto tr57;
|
1188
1445
|
case 127: goto st0;
|
1189
1446
|
}
|
1190
1447
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1191
1448
|
goto st0;
|
1192
|
-
goto
|
1193
|
-
|
1449
|
+
goto tr54;
|
1450
|
+
tr54:
|
1194
1451
|
#line 322 "unicorn_http.rl"
|
1195
1452
|
{MARK(start.query, p); }
|
1196
1453
|
goto st30;
|
@@ -1198,17 +1455,17 @@ st30:
|
|
1198
1455
|
if ( ++p == pe )
|
1199
1456
|
goto _test_eof30;
|
1200
1457
|
case 30:
|
1201
|
-
#line
|
1458
|
+
#line 1459 "unicorn_http.c"
|
1202
1459
|
switch( (*p) ) {
|
1203
|
-
case 32: goto
|
1204
|
-
case 35: goto
|
1460
|
+
case 32: goto tr59;
|
1461
|
+
case 35: goto tr60;
|
1205
1462
|
case 37: goto st31;
|
1206
1463
|
case 127: goto st0;
|
1207
1464
|
}
|
1208
1465
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1209
1466
|
goto st0;
|
1210
1467
|
goto st30;
|
1211
|
-
|
1468
|
+
tr57:
|
1212
1469
|
#line 322 "unicorn_http.rl"
|
1213
1470
|
{MARK(start.query, p); }
|
1214
1471
|
goto st31;
|
@@ -1216,7 +1473,7 @@ st31:
|
|
1216
1473
|
if ( ++p == pe )
|
1217
1474
|
goto _test_eof31;
|
1218
1475
|
case 31:
|
1219
|
-
#line
|
1476
|
+
#line 1477 "unicorn_http.c"
|
1220
1477
|
if ( (*p) < 65 ) {
|
1221
1478
|
if ( 48 <= (*p) && (*p) <= 57 )
|
1222
1479
|
goto st32;
|
@@ -1249,13 +1506,13 @@ st33:
|
|
1249
1506
|
if ( ++p == pe )
|
1250
1507
|
goto _test_eof33;
|
1251
1508
|
case 33:
|
1252
|
-
#line
|
1509
|
+
#line 1510 "unicorn_http.c"
|
1253
1510
|
switch( (*p) ) {
|
1254
|
-
case 84: goto
|
1255
|
-
case 116: goto
|
1511
|
+
case 84: goto tr63;
|
1512
|
+
case 116: goto tr63;
|
1256
1513
|
}
|
1257
1514
|
goto st0;
|
1258
|
-
|
1515
|
+
tr63:
|
1259
1516
|
#line 293 "unicorn_http.rl"
|
1260
1517
|
{ downcase_char(deconst(p)); }
|
1261
1518
|
goto st34;
|
@@ -1263,13 +1520,13 @@ st34:
|
|
1263
1520
|
if ( ++p == pe )
|
1264
1521
|
goto _test_eof34;
|
1265
1522
|
case 34:
|
1266
|
-
#line
|
1523
|
+
#line 1524 "unicorn_http.c"
|
1267
1524
|
switch( (*p) ) {
|
1268
|
-
case 84: goto
|
1269
|
-
case 116: goto
|
1525
|
+
case 84: goto tr64;
|
1526
|
+
case 116: goto tr64;
|
1270
1527
|
}
|
1271
1528
|
goto st0;
|
1272
|
-
|
1529
|
+
tr64:
|
1273
1530
|
#line 293 "unicorn_http.rl"
|
1274
1531
|
{ downcase_char(deconst(p)); }
|
1275
1532
|
goto st35;
|
@@ -1277,13 +1534,13 @@ st35:
|
|
1277
1534
|
if ( ++p == pe )
|
1278
1535
|
goto _test_eof35;
|
1279
1536
|
case 35:
|
1280
|
-
#line
|
1537
|
+
#line 1538 "unicorn_http.c"
|
1281
1538
|
switch( (*p) ) {
|
1282
|
-
case 80: goto
|
1283
|
-
case 112: goto
|
1539
|
+
case 80: goto tr65;
|
1540
|
+
case 112: goto tr65;
|
1284
1541
|
}
|
1285
1542
|
goto st0;
|
1286
|
-
|
1543
|
+
tr65:
|
1287
1544
|
#line 293 "unicorn_http.rl"
|
1288
1545
|
{ downcase_char(deconst(p)); }
|
1289
1546
|
goto st36;
|
@@ -1291,14 +1548,14 @@ st36:
|
|
1291
1548
|
if ( ++p == pe )
|
1292
1549
|
goto _test_eof36;
|
1293
1550
|
case 36:
|
1294
|
-
#line
|
1551
|
+
#line 1552 "unicorn_http.c"
|
1295
1552
|
switch( (*p) ) {
|
1296
|
-
case 58: goto
|
1297
|
-
case 83: goto
|
1298
|
-
case 115: goto
|
1553
|
+
case 58: goto tr66;
|
1554
|
+
case 83: goto tr67;
|
1555
|
+
case 115: goto tr67;
|
1299
1556
|
}
|
1300
1557
|
goto st0;
|
1301
|
-
|
1558
|
+
tr66:
|
1302
1559
|
#line 299 "unicorn_http.rl"
|
1303
1560
|
{
|
1304
1561
|
rb_hash_aset(hp->env, g_rack_url_scheme, STR_NEW(mark, p));
|
@@ -1308,7 +1565,7 @@ st37:
|
|
1308
1565
|
if ( ++p == pe )
|
1309
1566
|
goto _test_eof37;
|
1310
1567
|
case 37:
|
1311
|
-
#line
|
1568
|
+
#line 1569 "unicorn_http.c"
|
1312
1569
|
if ( (*p) == 47 )
|
1313
1570
|
goto st38;
|
1314
1571
|
goto st0;
|
@@ -1327,8 +1584,8 @@ case 39:
|
|
1327
1584
|
case 37: goto st41;
|
1328
1585
|
case 47: goto st0;
|
1329
1586
|
case 60: goto st0;
|
1330
|
-
case 91: goto
|
1331
|
-
case 95: goto
|
1587
|
+
case 91: goto tr73;
|
1588
|
+
case 95: goto tr72;
|
1332
1589
|
case 127: goto st0;
|
1333
1590
|
}
|
1334
1591
|
if ( (*p) < 45 ) {
|
@@ -1343,11 +1600,11 @@ case 39:
|
|
1343
1600
|
goto st0;
|
1344
1601
|
} else if ( (*p) > 90 ) {
|
1345
1602
|
if ( 97 <= (*p) && (*p) <= 122 )
|
1346
|
-
goto
|
1603
|
+
goto tr72;
|
1347
1604
|
} else
|
1348
|
-
goto
|
1605
|
+
goto tr72;
|
1349
1606
|
} else
|
1350
|
-
goto
|
1607
|
+
goto tr72;
|
1351
1608
|
goto st40;
|
1352
1609
|
st40:
|
1353
1610
|
if ( ++p == pe )
|
@@ -1395,7 +1652,7 @@ case 42:
|
|
1395
1652
|
} else
|
1396
1653
|
goto st40;
|
1397
1654
|
goto st0;
|
1398
|
-
|
1655
|
+
tr72:
|
1399
1656
|
#line 289 "unicorn_http.rl"
|
1400
1657
|
{MARK(mark, p); }
|
1401
1658
|
goto st43;
|
@@ -1403,10 +1660,10 @@ st43:
|
|
1403
1660
|
if ( ++p == pe )
|
1404
1661
|
goto _test_eof43;
|
1405
1662
|
case 43:
|
1406
|
-
#line
|
1663
|
+
#line 1664 "unicorn_http.c"
|
1407
1664
|
switch( (*p) ) {
|
1408
1665
|
case 37: goto st41;
|
1409
|
-
case 47: goto
|
1666
|
+
case 47: goto tr76;
|
1410
1667
|
case 58: goto st44;
|
1411
1668
|
case 60: goto st0;
|
1412
1669
|
case 64: goto st39;
|
@@ -1437,7 +1694,7 @@ st44:
|
|
1437
1694
|
case 44:
|
1438
1695
|
switch( (*p) ) {
|
1439
1696
|
case 37: goto st41;
|
1440
|
-
case 47: goto
|
1697
|
+
case 47: goto tr76;
|
1441
1698
|
case 60: goto st0;
|
1442
1699
|
case 64: goto st39;
|
1443
1700
|
case 127: goto st0;
|
@@ -1454,7 +1711,7 @@ case 44:
|
|
1454
1711
|
} else
|
1455
1712
|
goto st0;
|
1456
1713
|
goto st40;
|
1457
|
-
|
1714
|
+
tr73:
|
1458
1715
|
#line 289 "unicorn_http.rl"
|
1459
1716
|
{MARK(mark, p); }
|
1460
1717
|
goto st45;
|
@@ -1462,7 +1719,7 @@ st45:
|
|
1462
1719
|
if ( ++p == pe )
|
1463
1720
|
goto _test_eof45;
|
1464
1721
|
case 45:
|
1465
|
-
#line
|
1722
|
+
#line 1723 "unicorn_http.c"
|
1466
1723
|
switch( (*p) ) {
|
1467
1724
|
case 37: goto st41;
|
1468
1725
|
case 47: goto st0;
|
@@ -1524,7 +1781,7 @@ st47:
|
|
1524
1781
|
case 47:
|
1525
1782
|
switch( (*p) ) {
|
1526
1783
|
case 37: goto st41;
|
1527
|
-
case 47: goto
|
1784
|
+
case 47: goto tr76;
|
1528
1785
|
case 58: goto st44;
|
1529
1786
|
case 60: goto st0;
|
1530
1787
|
case 64: goto st39;
|
@@ -1539,7 +1796,7 @@ case 47:
|
|
1539
1796
|
} else
|
1540
1797
|
goto st0;
|
1541
1798
|
goto st40;
|
1542
|
-
|
1799
|
+
tr67:
|
1543
1800
|
#line 293 "unicorn_http.rl"
|
1544
1801
|
{ downcase_char(deconst(p)); }
|
1545
1802
|
goto st48;
|
@@ -1547,9 +1804,9 @@ st48:
|
|
1547
1804
|
if ( ++p == pe )
|
1548
1805
|
goto _test_eof48;
|
1549
1806
|
case 48:
|
1550
|
-
#line
|
1807
|
+
#line 1808 "unicorn_http.c"
|
1551
1808
|
if ( (*p) == 58 )
|
1552
|
-
goto
|
1809
|
+
goto tr66;
|
1553
1810
|
goto st0;
|
1554
1811
|
st49:
|
1555
1812
|
if ( ++p == pe )
|
@@ -2070,7 +2327,7 @@ st68:
|
|
2070
2327
|
if ( ++p == pe )
|
2071
2328
|
goto _test_eof68;
|
2072
2329
|
case 68:
|
2073
|
-
#line
|
2330
|
+
#line 2331 "unicorn_http.c"
|
2074
2331
|
switch( (*p) ) {
|
2075
2332
|
case 32: goto tr3;
|
2076
2333
|
case 33: goto st49;
|
@@ -2130,7 +2387,7 @@ st70:
|
|
2130
2387
|
goto _test_eof70;
|
2131
2388
|
case 70:
|
2132
2389
|
switch( (*p) ) {
|
2133
|
-
case 32: goto
|
2390
|
+
case 32: goto tr100;
|
2134
2391
|
case 33: goto st51;
|
2135
2392
|
case 124: goto st51;
|
2136
2393
|
case 126: goto st51;
|
@@ -2153,7 +2410,7 @@ case 70:
|
|
2153
2410
|
} else
|
2154
2411
|
goto st51;
|
2155
2412
|
goto st0;
|
2156
|
-
|
2413
|
+
tr100:
|
2157
2414
|
#line 298 "unicorn_http.rl"
|
2158
2415
|
{ request_method(hp, PTR_TO(mark), LEN(mark, p)); }
|
2159
2416
|
goto st71;
|
@@ -2161,15 +2418,15 @@ st71:
|
|
2161
2418
|
if ( ++p == pe )
|
2162
2419
|
goto _test_eof71;
|
2163
2420
|
case 71:
|
2164
|
-
#line
|
2421
|
+
#line 2422 "unicorn_http.c"
|
2165
2422
|
switch( (*p) ) {
|
2166
|
-
case 42: goto
|
2167
|
-
case 47: goto
|
2168
|
-
case 72: goto
|
2169
|
-
case 104: goto
|
2423
|
+
case 42: goto tr101;
|
2424
|
+
case 47: goto tr102;
|
2425
|
+
case 72: goto tr103;
|
2426
|
+
case 104: goto tr103;
|
2170
2427
|
}
|
2171
2428
|
goto st0;
|
2172
|
-
|
2429
|
+
tr101:
|
2173
2430
|
#line 289 "unicorn_http.rl"
|
2174
2431
|
{MARK(mark, p); }
|
2175
2432
|
goto st72;
|
@@ -2177,14 +2434,15 @@ st72:
|
|
2177
2434
|
if ( ++p == pe )
|
2178
2435
|
goto _test_eof72;
|
2179
2436
|
case 72:
|
2180
|
-
#line
|
2437
|
+
#line 2438 "unicorn_http.c"
|
2181
2438
|
switch( (*p) ) {
|
2182
|
-
case
|
2439
|
+
case 10: goto tr104;
|
2440
|
+
case 13: goto tr105;
|
2183
2441
|
case 32: goto tr8;
|
2184
|
-
case 35: goto
|
2442
|
+
case 35: goto tr106;
|
2185
2443
|
}
|
2186
2444
|
goto st0;
|
2187
|
-
|
2445
|
+
tr106:
|
2188
2446
|
#line 303 "unicorn_http.rl"
|
2189
2447
|
{
|
2190
2448
|
VALUE str;
|
@@ -2202,7 +2460,7 @@ tr100:
|
|
2202
2460
|
}
|
2203
2461
|
}
|
2204
2462
|
goto st73;
|
2205
|
-
|
2463
|
+
tr119:
|
2206
2464
|
#line 328 "unicorn_http.rl"
|
2207
2465
|
{
|
2208
2466
|
VALUE val;
|
@@ -2231,7 +2489,7 @@ tr110:
|
|
2231
2489
|
}
|
2232
2490
|
}
|
2233
2491
|
goto st73;
|
2234
|
-
|
2492
|
+
tr126:
|
2235
2493
|
#line 322 "unicorn_http.rl"
|
2236
2494
|
{MARK(start.query, p); }
|
2237
2495
|
#line 323 "unicorn_http.rl"
|
@@ -2256,7 +2514,7 @@ tr116:
|
|
2256
2514
|
}
|
2257
2515
|
}
|
2258
2516
|
goto st73;
|
2259
|
-
|
2517
|
+
tr131:
|
2260
2518
|
#line 323 "unicorn_http.rl"
|
2261
2519
|
{
|
2262
2520
|
VALIDATE_MAX_URI_LENGTH(LEN(start.query, p), QUERY_STRING);
|
@@ -2283,18 +2541,19 @@ st73:
|
|
2283
2541
|
if ( ++p == pe )
|
2284
2542
|
goto _test_eof73;
|
2285
2543
|
case 73:
|
2286
|
-
#line
|
2544
|
+
#line 2545 "unicorn_http.c"
|
2287
2545
|
switch( (*p) ) {
|
2288
|
-
case
|
2289
|
-
case
|
2546
|
+
case 10: goto tr108;
|
2547
|
+
case 13: goto tr109;
|
2548
|
+
case 32: goto tr42;
|
2290
2549
|
case 35: goto st0;
|
2291
|
-
case 37: goto
|
2550
|
+
case 37: goto tr110;
|
2292
2551
|
case 127: goto st0;
|
2293
2552
|
}
|
2294
2553
|
if ( 0 <= (*p) && (*p) <= 31 )
|
2295
2554
|
goto st0;
|
2296
|
-
goto
|
2297
|
-
|
2555
|
+
goto tr107;
|
2556
|
+
tr107:
|
2298
2557
|
#line 289 "unicorn_http.rl"
|
2299
2558
|
{MARK(mark, p); }
|
2300
2559
|
goto st74;
|
@@ -2302,10 +2561,11 @@ st74:
|
|
2302
2561
|
if ( ++p == pe )
|
2303
2562
|
goto _test_eof74;
|
2304
2563
|
case 74:
|
2305
|
-
#line
|
2564
|
+
#line 2565 "unicorn_http.c"
|
2306
2565
|
switch( (*p) ) {
|
2307
|
-
case
|
2308
|
-
case
|
2566
|
+
case 10: goto tr112;
|
2567
|
+
case 13: goto tr113;
|
2568
|
+
case 32: goto tr45;
|
2309
2569
|
case 35: goto st0;
|
2310
2570
|
case 37: goto st75;
|
2311
2571
|
case 127: goto st0;
|
@@ -2313,7 +2573,7 @@ case 74:
|
|
2313
2573
|
if ( 0 <= (*p) && (*p) <= 31 )
|
2314
2574
|
goto st0;
|
2315
2575
|
goto st74;
|
2316
|
-
|
2576
|
+
tr110:
|
2317
2577
|
#line 289 "unicorn_http.rl"
|
2318
2578
|
{MARK(mark, p); }
|
2319
2579
|
goto st75;
|
@@ -2321,7 +2581,7 @@ st75:
|
|
2321
2581
|
if ( ++p == pe )
|
2322
2582
|
goto _test_eof75;
|
2323
2583
|
case 75:
|
2324
|
-
#line
|
2584
|
+
#line 2585 "unicorn_http.c"
|
2325
2585
|
if ( (*p) < 65 ) {
|
2326
2586
|
if ( 48 <= (*p) && (*p) <= 57 )
|
2327
2587
|
goto st76;
|
@@ -2344,11 +2604,11 @@ case 76:
|
|
2344
2604
|
} else
|
2345
2605
|
goto st74;
|
2346
2606
|
goto st0;
|
2347
|
-
|
2607
|
+
tr102:
|
2348
2608
|
#line 289 "unicorn_http.rl"
|
2349
2609
|
{MARK(mark, p); }
|
2350
2610
|
goto st77;
|
2351
|
-
|
2611
|
+
tr147:
|
2352
2612
|
#line 302 "unicorn_http.rl"
|
2353
2613
|
{ rb_hash_aset(hp->env, g_http_host, STR_NEW(mark, p)); }
|
2354
2614
|
#line 289 "unicorn_http.rl"
|
@@ -2358,13 +2618,14 @@ st77:
|
|
2358
2618
|
if ( ++p == pe )
|
2359
2619
|
goto _test_eof77;
|
2360
2620
|
case 77:
|
2361
|
-
#line
|
2621
|
+
#line 2622 "unicorn_http.c"
|
2362
2622
|
switch( (*p) ) {
|
2363
|
-
case
|
2364
|
-
case
|
2365
|
-
case
|
2623
|
+
case 10: goto tr117;
|
2624
|
+
case 13: goto tr118;
|
2625
|
+
case 32: goto tr49;
|
2626
|
+
case 35: goto tr119;
|
2366
2627
|
case 37: goto st78;
|
2367
|
-
case 63: goto
|
2628
|
+
case 63: goto tr121;
|
2368
2629
|
case 127: goto st0;
|
2369
2630
|
}
|
2370
2631
|
if ( 0 <= (*p) && (*p) <= 31 )
|
@@ -2396,7 +2657,7 @@ case 79:
|
|
2396
2657
|
} else
|
2397
2658
|
goto st77;
|
2398
2659
|
goto st0;
|
2399
|
-
|
2660
|
+
tr121:
|
2400
2661
|
#line 328 "unicorn_http.rl"
|
2401
2662
|
{
|
2402
2663
|
VALUE val;
|
@@ -2413,18 +2674,19 @@ st80:
|
|
2413
2674
|
if ( ++p == pe )
|
2414
2675
|
goto _test_eof80;
|
2415
2676
|
case 80:
|
2416
|
-
#line
|
2677
|
+
#line 2678 "unicorn_http.c"
|
2417
2678
|
switch( (*p) ) {
|
2418
|
-
case
|
2419
|
-
case
|
2420
|
-
case
|
2421
|
-
case
|
2679
|
+
case 10: goto tr124;
|
2680
|
+
case 13: goto tr125;
|
2681
|
+
case 32: goto tr55;
|
2682
|
+
case 35: goto tr126;
|
2683
|
+
case 37: goto tr127;
|
2422
2684
|
case 127: goto st0;
|
2423
2685
|
}
|
2424
2686
|
if ( 0 <= (*p) && (*p) <= 31 )
|
2425
2687
|
goto st0;
|
2426
|
-
goto
|
2427
|
-
|
2688
|
+
goto tr123;
|
2689
|
+
tr123:
|
2428
2690
|
#line 322 "unicorn_http.rl"
|
2429
2691
|
{MARK(start.query, p); }
|
2430
2692
|
goto st81;
|
@@ -2432,18 +2694,19 @@ st81:
|
|
2432
2694
|
if ( ++p == pe )
|
2433
2695
|
goto _test_eof81;
|
2434
2696
|
case 81:
|
2435
|
-
#line
|
2697
|
+
#line 2698 "unicorn_http.c"
|
2436
2698
|
switch( (*p) ) {
|
2437
|
-
case
|
2438
|
-
case
|
2439
|
-
case
|
2699
|
+
case 10: goto tr129;
|
2700
|
+
case 13: goto tr130;
|
2701
|
+
case 32: goto tr59;
|
2702
|
+
case 35: goto tr131;
|
2440
2703
|
case 37: goto st82;
|
2441
2704
|
case 127: goto st0;
|
2442
2705
|
}
|
2443
2706
|
if ( 0 <= (*p) && (*p) <= 31 )
|
2444
2707
|
goto st0;
|
2445
2708
|
goto st81;
|
2446
|
-
|
2709
|
+
tr127:
|
2447
2710
|
#line 322 "unicorn_http.rl"
|
2448
2711
|
{MARK(start.query, p); }
|
2449
2712
|
goto st82;
|
@@ -2451,7 +2714,7 @@ st82:
|
|
2451
2714
|
if ( ++p == pe )
|
2452
2715
|
goto _test_eof82;
|
2453
2716
|
case 82:
|
2454
|
-
#line
|
2717
|
+
#line 2718 "unicorn_http.c"
|
2455
2718
|
if ( (*p) < 65 ) {
|
2456
2719
|
if ( 48 <= (*p) && (*p) <= 57 )
|
2457
2720
|
goto st83;
|
@@ -2474,7 +2737,7 @@ case 83:
|
|
2474
2737
|
} else
|
2475
2738
|
goto st81;
|
2476
2739
|
goto st0;
|
2477
|
-
|
2740
|
+
tr103:
|
2478
2741
|
#line 289 "unicorn_http.rl"
|
2479
2742
|
{MARK(mark, p); }
|
2480
2743
|
#line 293 "unicorn_http.rl"
|
@@ -2484,13 +2747,13 @@ st84:
|
|
2484
2747
|
if ( ++p == pe )
|
2485
2748
|
goto _test_eof84;
|
2486
2749
|
case 84:
|
2487
|
-
#line
|
2750
|
+
#line 2751 "unicorn_http.c"
|
2488
2751
|
switch( (*p) ) {
|
2489
|
-
case 84: goto
|
2490
|
-
case 116: goto
|
2752
|
+
case 84: goto tr134;
|
2753
|
+
case 116: goto tr134;
|
2491
2754
|
}
|
2492
2755
|
goto st0;
|
2493
|
-
|
2756
|
+
tr134:
|
2494
2757
|
#line 293 "unicorn_http.rl"
|
2495
2758
|
{ downcase_char(deconst(p)); }
|
2496
2759
|
goto st85;
|
@@ -2498,13 +2761,13 @@ st85:
|
|
2498
2761
|
if ( ++p == pe )
|
2499
2762
|
goto _test_eof85;
|
2500
2763
|
case 85:
|
2501
|
-
#line
|
2764
|
+
#line 2765 "unicorn_http.c"
|
2502
2765
|
switch( (*p) ) {
|
2503
|
-
case 84: goto
|
2504
|
-
case 116: goto
|
2766
|
+
case 84: goto tr135;
|
2767
|
+
case 116: goto tr135;
|
2505
2768
|
}
|
2506
2769
|
goto st0;
|
2507
|
-
|
2770
|
+
tr135:
|
2508
2771
|
#line 293 "unicorn_http.rl"
|
2509
2772
|
{ downcase_char(deconst(p)); }
|
2510
2773
|
goto st86;
|
@@ -2512,13 +2775,13 @@ st86:
|
|
2512
2775
|
if ( ++p == pe )
|
2513
2776
|
goto _test_eof86;
|
2514
2777
|
case 86:
|
2515
|
-
#line
|
2778
|
+
#line 2779 "unicorn_http.c"
|
2516
2779
|
switch( (*p) ) {
|
2517
|
-
case 80: goto
|
2518
|
-
case 112: goto
|
2780
|
+
case 80: goto tr136;
|
2781
|
+
case 112: goto tr136;
|
2519
2782
|
}
|
2520
2783
|
goto st0;
|
2521
|
-
|
2784
|
+
tr136:
|
2522
2785
|
#line 293 "unicorn_http.rl"
|
2523
2786
|
{ downcase_char(deconst(p)); }
|
2524
2787
|
goto st87;
|
@@ -2526,14 +2789,14 @@ st87:
|
|
2526
2789
|
if ( ++p == pe )
|
2527
2790
|
goto _test_eof87;
|
2528
2791
|
case 87:
|
2529
|
-
#line
|
2792
|
+
#line 2793 "unicorn_http.c"
|
2530
2793
|
switch( (*p) ) {
|
2531
|
-
case 58: goto
|
2532
|
-
case 83: goto
|
2533
|
-
case 115: goto
|
2794
|
+
case 58: goto tr137;
|
2795
|
+
case 83: goto tr138;
|
2796
|
+
case 115: goto tr138;
|
2534
2797
|
}
|
2535
2798
|
goto st0;
|
2536
|
-
|
2799
|
+
tr137:
|
2537
2800
|
#line 299 "unicorn_http.rl"
|
2538
2801
|
{
|
2539
2802
|
rb_hash_aset(hp->env, g_rack_url_scheme, STR_NEW(mark, p));
|
@@ -2543,7 +2806,7 @@ st88:
|
|
2543
2806
|
if ( ++p == pe )
|
2544
2807
|
goto _test_eof88;
|
2545
2808
|
case 88:
|
2546
|
-
#line
|
2809
|
+
#line 2810 "unicorn_http.c"
|
2547
2810
|
if ( (*p) == 47 )
|
2548
2811
|
goto st89;
|
2549
2812
|
goto st0;
|
@@ -2562,8 +2825,8 @@ case 90:
|
|
2562
2825
|
case 37: goto st92;
|
2563
2826
|
case 47: goto st0;
|
2564
2827
|
case 60: goto st0;
|
2565
|
-
case 91: goto
|
2566
|
-
case 95: goto
|
2828
|
+
case 91: goto tr144;
|
2829
|
+
case 95: goto tr143;
|
2567
2830
|
case 127: goto st0;
|
2568
2831
|
}
|
2569
2832
|
if ( (*p) < 45 ) {
|
@@ -2578,11 +2841,11 @@ case 90:
|
|
2578
2841
|
goto st0;
|
2579
2842
|
} else if ( (*p) > 90 ) {
|
2580
2843
|
if ( 97 <= (*p) && (*p) <= 122 )
|
2581
|
-
goto
|
2844
|
+
goto tr143;
|
2582
2845
|
} else
|
2583
|
-
goto
|
2846
|
+
goto tr143;
|
2584
2847
|
} else
|
2585
|
-
goto
|
2848
|
+
goto tr143;
|
2586
2849
|
goto st91;
|
2587
2850
|
st91:
|
2588
2851
|
if ( ++p == pe )
|
@@ -2630,7 +2893,7 @@ case 93:
|
|
2630
2893
|
} else
|
2631
2894
|
goto st91;
|
2632
2895
|
goto st0;
|
2633
|
-
|
2896
|
+
tr143:
|
2634
2897
|
#line 289 "unicorn_http.rl"
|
2635
2898
|
{MARK(mark, p); }
|
2636
2899
|
goto st94;
|
@@ -2638,10 +2901,10 @@ st94:
|
|
2638
2901
|
if ( ++p == pe )
|
2639
2902
|
goto _test_eof94;
|
2640
2903
|
case 94:
|
2641
|
-
#line
|
2904
|
+
#line 2905 "unicorn_http.c"
|
2642
2905
|
switch( (*p) ) {
|
2643
2906
|
case 37: goto st92;
|
2644
|
-
case 47: goto
|
2907
|
+
case 47: goto tr147;
|
2645
2908
|
case 58: goto st95;
|
2646
2909
|
case 60: goto st0;
|
2647
2910
|
case 64: goto st90;
|
@@ -2672,7 +2935,7 @@ st95:
|
|
2672
2935
|
case 95:
|
2673
2936
|
switch( (*p) ) {
|
2674
2937
|
case 37: goto st92;
|
2675
|
-
case 47: goto
|
2938
|
+
case 47: goto tr147;
|
2676
2939
|
case 60: goto st0;
|
2677
2940
|
case 64: goto st90;
|
2678
2941
|
case 127: goto st0;
|
@@ -2689,7 +2952,7 @@ case 95:
|
|
2689
2952
|
} else
|
2690
2953
|
goto st0;
|
2691
2954
|
goto st91;
|
2692
|
-
|
2955
|
+
tr144:
|
2693
2956
|
#line 289 "unicorn_http.rl"
|
2694
2957
|
{MARK(mark, p); }
|
2695
2958
|
goto st96;
|
@@ -2697,7 +2960,7 @@ st96:
|
|
2697
2960
|
if ( ++p == pe )
|
2698
2961
|
goto _test_eof96;
|
2699
2962
|
case 96:
|
2700
|
-
#line
|
2963
|
+
#line 2964 "unicorn_http.c"
|
2701
2964
|
switch( (*p) ) {
|
2702
2965
|
case 37: goto st92;
|
2703
2966
|
case 47: goto st0;
|
@@ -2759,7 +3022,7 @@ st98:
|
|
2759
3022
|
case 98:
|
2760
3023
|
switch( (*p) ) {
|
2761
3024
|
case 37: goto st92;
|
2762
|
-
case 47: goto
|
3025
|
+
case 47: goto tr147;
|
2763
3026
|
case 58: goto st95;
|
2764
3027
|
case 60: goto st0;
|
2765
3028
|
case 64: goto st90;
|
@@ -2774,7 +3037,7 @@ case 98:
|
|
2774
3037
|
} else
|
2775
3038
|
goto st0;
|
2776
3039
|
goto st91;
|
2777
|
-
|
3040
|
+
tr138:
|
2778
3041
|
#line 293 "unicorn_http.rl"
|
2779
3042
|
{ downcase_char(deconst(p)); }
|
2780
3043
|
goto st99;
|
@@ -2782,26 +3045,26 @@ st99:
|
|
2782
3045
|
if ( ++p == pe )
|
2783
3046
|
goto _test_eof99;
|
2784
3047
|
case 99:
|
2785
|
-
#line
|
3048
|
+
#line 3049 "unicorn_http.c"
|
2786
3049
|
if ( (*p) == 58 )
|
2787
|
-
goto
|
3050
|
+
goto tr137;
|
2788
3051
|
goto st0;
|
2789
3052
|
st100:
|
2790
3053
|
if ( ++p == pe )
|
2791
3054
|
goto _test_eof100;
|
2792
3055
|
case 100:
|
2793
3056
|
if ( (*p) == 48 )
|
2794
|
-
goto
|
3057
|
+
goto tr151;
|
2795
3058
|
if ( (*p) < 65 ) {
|
2796
3059
|
if ( 49 <= (*p) && (*p) <= 57 )
|
2797
|
-
goto
|
3060
|
+
goto tr152;
|
2798
3061
|
} else if ( (*p) > 70 ) {
|
2799
3062
|
if ( 97 <= (*p) && (*p) <= 102 )
|
2800
|
-
goto
|
3063
|
+
goto tr152;
|
2801
3064
|
} else
|
2802
|
-
goto
|
3065
|
+
goto tr152;
|
2803
3066
|
goto st0;
|
2804
|
-
|
3067
|
+
tr151:
|
2805
3068
|
#line 338 "unicorn_http.rl"
|
2806
3069
|
{
|
2807
3070
|
hp->len.chunk = step_incr(hp->len.chunk, (*p), 16);
|
@@ -2813,29 +3076,23 @@ st101:
|
|
2813
3076
|
if ( ++p == pe )
|
2814
3077
|
goto _test_eof101;
|
2815
3078
|
case 101:
|
2816
|
-
#line
|
3079
|
+
#line 3080 "unicorn_http.c"
|
2817
3080
|
switch( (*p) ) {
|
3081
|
+
case 10: goto tr153;
|
2818
3082
|
case 13: goto st102;
|
2819
|
-
case 48: goto
|
3083
|
+
case 48: goto tr151;
|
2820
3084
|
case 59: goto st111;
|
2821
3085
|
}
|
2822
3086
|
if ( (*p) < 65 ) {
|
2823
3087
|
if ( 49 <= (*p) && (*p) <= 57 )
|
2824
|
-
goto
|
3088
|
+
goto tr152;
|
2825
3089
|
} else if ( (*p) > 70 ) {
|
2826
3090
|
if ( 97 <= (*p) && (*p) <= 102 )
|
2827
|
-
goto
|
3091
|
+
goto tr152;
|
2828
3092
|
} else
|
2829
|
-
goto
|
2830
|
-
goto st0;
|
2831
|
-
st102:
|
2832
|
-
if ( ++p == pe )
|
2833
|
-
goto _test_eof102;
|
2834
|
-
case 102:
|
2835
|
-
if ( (*p) == 10 )
|
2836
|
-
goto tr144;
|
3093
|
+
goto tr152;
|
2837
3094
|
goto st0;
|
2838
|
-
|
3095
|
+
tr153:
|
2839
3096
|
#line 367 "unicorn_http.rl"
|
2840
3097
|
{
|
2841
3098
|
HP_FL_SET(hp, INTRAILER);
|
@@ -2849,9 +3106,16 @@ st123:
|
|
2849
3106
|
if ( ++p == pe )
|
2850
3107
|
goto _test_eof123;
|
2851
3108
|
case 123:
|
2852
|
-
#line
|
3109
|
+
#line 3110 "unicorn_http.c"
|
3110
|
+
goto st0;
|
3111
|
+
st102:
|
3112
|
+
if ( ++p == pe )
|
3113
|
+
goto _test_eof102;
|
3114
|
+
case 102:
|
3115
|
+
if ( (*p) == 10 )
|
3116
|
+
goto tr153;
|
2853
3117
|
goto st0;
|
2854
|
-
|
3118
|
+
tr152:
|
2855
3119
|
#line 338 "unicorn_http.rl"
|
2856
3120
|
{
|
2857
3121
|
hp->len.chunk = step_incr(hp->len.chunk, (*p), 16);
|
@@ -2863,33 +3127,27 @@ st103:
|
|
2863
3127
|
if ( ++p == pe )
|
2864
3128
|
goto _test_eof103;
|
2865
3129
|
case 103:
|
2866
|
-
#line
|
3130
|
+
#line 3131 "unicorn_http.c"
|
2867
3131
|
switch( (*p) ) {
|
2868
|
-
case
|
3132
|
+
case 10: goto st104;
|
3133
|
+
case 13: goto st107;
|
2869
3134
|
case 59: goto st108;
|
2870
3135
|
}
|
2871
3136
|
if ( (*p) < 65 ) {
|
2872
3137
|
if ( 48 <= (*p) && (*p) <= 57 )
|
2873
|
-
goto
|
3138
|
+
goto tr152;
|
2874
3139
|
} else if ( (*p) > 70 ) {
|
2875
3140
|
if ( 97 <= (*p) && (*p) <= 102 )
|
2876
|
-
goto
|
3141
|
+
goto tr152;
|
2877
3142
|
} else
|
2878
|
-
goto
|
3143
|
+
goto tr152;
|
2879
3144
|
goto st0;
|
2880
3145
|
st104:
|
2881
3146
|
if ( ++p == pe )
|
2882
3147
|
goto _test_eof104;
|
2883
3148
|
case 104:
|
2884
|
-
|
2885
|
-
|
2886
|
-
goto st0;
|
2887
|
-
st105:
|
2888
|
-
if ( ++p == pe )
|
2889
|
-
goto _test_eof105;
|
2890
|
-
case 105:
|
2891
|
-
goto tr148;
|
2892
|
-
tr148:
|
3149
|
+
goto tr159;
|
3150
|
+
tr159:
|
2893
3151
|
#line 375 "unicorn_http.rl"
|
2894
3152
|
{
|
2895
3153
|
skip_chunk_data_hack: {
|
@@ -2904,31 +3162,41 @@ tr148:
|
|
2904
3162
|
goto post_exec;
|
2905
3163
|
} else {
|
2906
3164
|
p--;
|
2907
|
-
{goto
|
3165
|
+
{goto st105;}
|
2908
3166
|
}
|
2909
3167
|
}}
|
2910
|
-
goto
|
3168
|
+
goto st105;
|
3169
|
+
st105:
|
3170
|
+
if ( ++p == pe )
|
3171
|
+
goto _test_eof105;
|
3172
|
+
case 105:
|
3173
|
+
#line 3174 "unicorn_http.c"
|
3174
|
+
switch( (*p) ) {
|
3175
|
+
case 10: goto st100;
|
3176
|
+
case 13: goto st106;
|
3177
|
+
}
|
3178
|
+
goto st0;
|
2911
3179
|
st106:
|
2912
3180
|
if ( ++p == pe )
|
2913
3181
|
goto _test_eof106;
|
2914
3182
|
case 106:
|
2915
|
-
|
2916
|
-
|
2917
|
-
goto st107;
|
3183
|
+
if ( (*p) == 10 )
|
3184
|
+
goto st100;
|
2918
3185
|
goto st0;
|
2919
3186
|
st107:
|
2920
3187
|
if ( ++p == pe )
|
2921
3188
|
goto _test_eof107;
|
2922
3189
|
case 107:
|
2923
3190
|
if ( (*p) == 10 )
|
2924
|
-
goto
|
3191
|
+
goto st104;
|
2925
3192
|
goto st0;
|
2926
3193
|
st108:
|
2927
3194
|
if ( ++p == pe )
|
2928
3195
|
goto _test_eof108;
|
2929
3196
|
case 108:
|
2930
3197
|
switch( (*p) ) {
|
2931
|
-
case
|
3198
|
+
case 10: goto st104;
|
3199
|
+
case 13: goto st107;
|
2932
3200
|
case 32: goto st108;
|
2933
3201
|
case 33: goto st109;
|
2934
3202
|
case 59: goto st108;
|
@@ -2959,7 +3227,8 @@ st109:
|
|
2959
3227
|
goto _test_eof109;
|
2960
3228
|
case 109:
|
2961
3229
|
switch( (*p) ) {
|
2962
|
-
case
|
3230
|
+
case 10: goto st104;
|
3231
|
+
case 13: goto st107;
|
2963
3232
|
case 33: goto st109;
|
2964
3233
|
case 59: goto st108;
|
2965
3234
|
case 61: goto st110;
|
@@ -2989,7 +3258,8 @@ st110:
|
|
2989
3258
|
goto _test_eof110;
|
2990
3259
|
case 110:
|
2991
3260
|
switch( (*p) ) {
|
2992
|
-
case
|
3261
|
+
case 10: goto st104;
|
3262
|
+
case 13: goto st107;
|
2993
3263
|
case 33: goto st110;
|
2994
3264
|
case 59: goto st108;
|
2995
3265
|
case 124: goto st110;
|
@@ -3018,6 +3288,7 @@ st111:
|
|
3018
3288
|
goto _test_eof111;
|
3019
3289
|
case 111:
|
3020
3290
|
switch( (*p) ) {
|
3291
|
+
case 10: goto tr153;
|
3021
3292
|
case 13: goto st102;
|
3022
3293
|
case 32: goto st111;
|
3023
3294
|
case 33: goto st112;
|
@@ -3049,6 +3320,7 @@ st112:
|
|
3049
3320
|
goto _test_eof112;
|
3050
3321
|
case 112:
|
3051
3322
|
switch( (*p) ) {
|
3323
|
+
case 10: goto tr153;
|
3052
3324
|
case 13: goto st102;
|
3053
3325
|
case 33: goto st112;
|
3054
3326
|
case 59: goto st111;
|
@@ -3079,6 +3351,7 @@ st113:
|
|
3079
3351
|
goto _test_eof113;
|
3080
3352
|
case 113:
|
3081
3353
|
switch( (*p) ) {
|
3354
|
+
case 10: goto tr153;
|
3082
3355
|
case 13: goto st102;
|
3083
3356
|
case 33: goto st113;
|
3084
3357
|
case 59: goto st111;
|
@@ -3103,37 +3376,59 @@ case 113:
|
|
3103
3376
|
} else
|
3104
3377
|
goto st113;
|
3105
3378
|
goto st0;
|
3379
|
+
tr172:
|
3380
|
+
#line 295 "unicorn_http.rl"
|
3381
|
+
{ MARK(mark, p); }
|
3382
|
+
#line 297 "unicorn_http.rl"
|
3383
|
+
{ write_cont_value(hp, buffer, p); }
|
3384
|
+
goto st114;
|
3385
|
+
tr175:
|
3386
|
+
#line 297 "unicorn_http.rl"
|
3387
|
+
{ write_cont_value(hp, buffer, p); }
|
3388
|
+
goto st114;
|
3389
|
+
tr182:
|
3390
|
+
#line 295 "unicorn_http.rl"
|
3391
|
+
{ MARK(mark, p); }
|
3392
|
+
#line 296 "unicorn_http.rl"
|
3393
|
+
{ write_value(hp, buffer, p); }
|
3394
|
+
goto st114;
|
3395
|
+
tr185:
|
3396
|
+
#line 296 "unicorn_http.rl"
|
3397
|
+
{ write_value(hp, buffer, p); }
|
3398
|
+
goto st114;
|
3106
3399
|
st114:
|
3107
3400
|
if ( ++p == pe )
|
3108
3401
|
goto _test_eof114;
|
3109
3402
|
case 114:
|
3403
|
+
#line 3404 "unicorn_http.c"
|
3110
3404
|
switch( (*p) ) {
|
3111
3405
|
case 9: goto st115;
|
3406
|
+
case 10: goto tr167;
|
3112
3407
|
case 13: goto st118;
|
3113
3408
|
case 32: goto st115;
|
3114
|
-
case 33: goto
|
3115
|
-
case 124: goto
|
3116
|
-
case 126: goto
|
3409
|
+
case 33: goto tr169;
|
3410
|
+
case 124: goto tr169;
|
3411
|
+
case 126: goto tr169;
|
3117
3412
|
}
|
3118
3413
|
if ( (*p) < 45 ) {
|
3119
3414
|
if ( (*p) > 39 ) {
|
3120
3415
|
if ( 42 <= (*p) && (*p) <= 43 )
|
3121
|
-
goto
|
3416
|
+
goto tr169;
|
3122
3417
|
} else if ( (*p) >= 35 )
|
3123
|
-
goto
|
3418
|
+
goto tr169;
|
3124
3419
|
} else if ( (*p) > 46 ) {
|
3125
3420
|
if ( (*p) < 65 ) {
|
3126
3421
|
if ( 48 <= (*p) && (*p) <= 57 )
|
3127
|
-
goto
|
3422
|
+
goto tr169;
|
3128
3423
|
} else if ( (*p) > 90 ) {
|
3129
3424
|
if ( 94 <= (*p) && (*p) <= 122 )
|
3130
|
-
goto
|
3425
|
+
goto tr169;
|
3131
3426
|
} else
|
3132
|
-
goto
|
3427
|
+
goto tr169;
|
3133
3428
|
} else
|
3134
|
-
goto
|
3429
|
+
goto tr169;
|
3135
3430
|
goto st0;
|
3136
|
-
|
3431
|
+
tr171:
|
3137
3432
|
#line 295 "unicorn_http.rl"
|
3138
3433
|
{ MARK(mark, p); }
|
3139
3434
|
goto st115;
|
@@ -3141,17 +3436,18 @@ st115:
|
|
3141
3436
|
if ( ++p == pe )
|
3142
3437
|
goto _test_eof115;
|
3143
3438
|
case 115:
|
3144
|
-
#line
|
3439
|
+
#line 3440 "unicorn_http.c"
|
3145
3440
|
switch( (*p) ) {
|
3146
|
-
case 9: goto
|
3147
|
-
case
|
3148
|
-
case
|
3441
|
+
case 9: goto tr171;
|
3442
|
+
case 10: goto tr172;
|
3443
|
+
case 13: goto tr173;
|
3444
|
+
case 32: goto tr171;
|
3149
3445
|
case 127: goto st0;
|
3150
3446
|
}
|
3151
3447
|
if ( 0 <= (*p) && (*p) <= 31 )
|
3152
3448
|
goto st0;
|
3153
|
-
goto
|
3154
|
-
|
3449
|
+
goto tr170;
|
3450
|
+
tr170:
|
3155
3451
|
#line 295 "unicorn_http.rl"
|
3156
3452
|
{ MARK(mark, p); }
|
3157
3453
|
goto st116;
|
@@ -3159,34 +3455,35 @@ st116:
|
|
3159
3455
|
if ( ++p == pe )
|
3160
3456
|
goto _test_eof116;
|
3161
3457
|
case 116:
|
3162
|
-
#line
|
3458
|
+
#line 3459 "unicorn_http.c"
|
3163
3459
|
switch( (*p) ) {
|
3164
|
-
case
|
3460
|
+
case 10: goto tr175;
|
3461
|
+
case 13: goto tr176;
|
3165
3462
|
case 127: goto st0;
|
3166
3463
|
}
|
3167
3464
|
if ( (*p) > 8 ) {
|
3168
|
-
if (
|
3465
|
+
if ( 11 <= (*p) && (*p) <= 31 )
|
3169
3466
|
goto st0;
|
3170
3467
|
} else if ( (*p) >= 0 )
|
3171
3468
|
goto st0;
|
3172
3469
|
goto st116;
|
3173
|
-
|
3470
|
+
tr173:
|
3174
3471
|
#line 295 "unicorn_http.rl"
|
3175
3472
|
{ MARK(mark, p); }
|
3176
3473
|
#line 297 "unicorn_http.rl"
|
3177
3474
|
{ write_cont_value(hp, buffer, p); }
|
3178
3475
|
goto st117;
|
3179
|
-
|
3476
|
+
tr176:
|
3180
3477
|
#line 297 "unicorn_http.rl"
|
3181
3478
|
{ write_cont_value(hp, buffer, p); }
|
3182
3479
|
goto st117;
|
3183
|
-
|
3480
|
+
tr183:
|
3184
3481
|
#line 295 "unicorn_http.rl"
|
3185
3482
|
{ MARK(mark, p); }
|
3186
3483
|
#line 296 "unicorn_http.rl"
|
3187
3484
|
{ write_value(hp, buffer, p); }
|
3188
3485
|
goto st117;
|
3189
|
-
|
3486
|
+
tr186:
|
3190
3487
|
#line 296 "unicorn_http.rl"
|
3191
3488
|
{ write_value(hp, buffer, p); }
|
3192
3489
|
goto st117;
|
@@ -3194,18 +3491,11 @@ st117:
|
|
3194
3491
|
if ( ++p == pe )
|
3195
3492
|
goto _test_eof117;
|
3196
3493
|
case 117:
|
3197
|
-
#line
|
3494
|
+
#line 3495 "unicorn_http.c"
|
3198
3495
|
if ( (*p) == 10 )
|
3199
3496
|
goto st114;
|
3200
3497
|
goto st0;
|
3201
|
-
|
3202
|
-
if ( ++p == pe )
|
3203
|
-
goto _test_eof118;
|
3204
|
-
case 118:
|
3205
|
-
if ( (*p) == 10 )
|
3206
|
-
goto tr164;
|
3207
|
-
goto st0;
|
3208
|
-
tr164:
|
3498
|
+
tr167:
|
3209
3499
|
#line 362 "unicorn_http.rl"
|
3210
3500
|
{
|
3211
3501
|
cs = http_parser_first_final;
|
@@ -3216,15 +3506,22 @@ st124:
|
|
3216
3506
|
if ( ++p == pe )
|
3217
3507
|
goto _test_eof124;
|
3218
3508
|
case 124:
|
3219
|
-
#line
|
3509
|
+
#line 3510 "unicorn_http.c"
|
3220
3510
|
goto st0;
|
3221
|
-
|
3511
|
+
st118:
|
3512
|
+
if ( ++p == pe )
|
3513
|
+
goto _test_eof118;
|
3514
|
+
case 118:
|
3515
|
+
if ( (*p) == 10 )
|
3516
|
+
goto tr167;
|
3517
|
+
goto st0;
|
3518
|
+
tr169:
|
3222
3519
|
#line 291 "unicorn_http.rl"
|
3223
3520
|
{ MARK(start.field, p); }
|
3224
3521
|
#line 292 "unicorn_http.rl"
|
3225
3522
|
{ snake_upcase_char(deconst(p)); }
|
3226
3523
|
goto st119;
|
3227
|
-
|
3524
|
+
tr178:
|
3228
3525
|
#line 292 "unicorn_http.rl"
|
3229
3526
|
{ snake_upcase_char(deconst(p)); }
|
3230
3527
|
goto st119;
|
@@ -3232,36 +3529,36 @@ st119:
|
|
3232
3529
|
if ( ++p == pe )
|
3233
3530
|
goto _test_eof119;
|
3234
3531
|
case 119:
|
3235
|
-
#line
|
3532
|
+
#line 3533 "unicorn_http.c"
|
3236
3533
|
switch( (*p) ) {
|
3237
|
-
case 33: goto
|
3238
|
-
case 58: goto
|
3239
|
-
case 124: goto
|
3240
|
-
case 126: goto
|
3534
|
+
case 33: goto tr178;
|
3535
|
+
case 58: goto tr179;
|
3536
|
+
case 124: goto tr178;
|
3537
|
+
case 126: goto tr178;
|
3241
3538
|
}
|
3242
3539
|
if ( (*p) < 45 ) {
|
3243
3540
|
if ( (*p) > 39 ) {
|
3244
3541
|
if ( 42 <= (*p) && (*p) <= 43 )
|
3245
|
-
goto
|
3542
|
+
goto tr178;
|
3246
3543
|
} else if ( (*p) >= 35 )
|
3247
|
-
goto
|
3544
|
+
goto tr178;
|
3248
3545
|
} else if ( (*p) > 46 ) {
|
3249
3546
|
if ( (*p) < 65 ) {
|
3250
3547
|
if ( 48 <= (*p) && (*p) <= 57 )
|
3251
|
-
goto
|
3548
|
+
goto tr178;
|
3252
3549
|
} else if ( (*p) > 90 ) {
|
3253
3550
|
if ( 94 <= (*p) && (*p) <= 122 )
|
3254
|
-
goto
|
3551
|
+
goto tr178;
|
3255
3552
|
} else
|
3256
|
-
goto
|
3553
|
+
goto tr178;
|
3257
3554
|
} else
|
3258
|
-
goto
|
3555
|
+
goto tr178;
|
3259
3556
|
goto st0;
|
3260
|
-
|
3557
|
+
tr181:
|
3261
3558
|
#line 295 "unicorn_http.rl"
|
3262
3559
|
{ MARK(mark, p); }
|
3263
3560
|
goto st120;
|
3264
|
-
|
3561
|
+
tr179:
|
3265
3562
|
#line 294 "unicorn_http.rl"
|
3266
3563
|
{ hp->s.field_len = LEN(start.field, p); }
|
3267
3564
|
goto st120;
|
@@ -3269,17 +3566,18 @@ st120:
|
|
3269
3566
|
if ( ++p == pe )
|
3270
3567
|
goto _test_eof120;
|
3271
3568
|
case 120:
|
3272
|
-
#line
|
3569
|
+
#line 3570 "unicorn_http.c"
|
3273
3570
|
switch( (*p) ) {
|
3274
|
-
case 9: goto
|
3275
|
-
case
|
3276
|
-
case
|
3571
|
+
case 9: goto tr181;
|
3572
|
+
case 10: goto tr182;
|
3573
|
+
case 13: goto tr183;
|
3574
|
+
case 32: goto tr181;
|
3277
3575
|
case 127: goto st0;
|
3278
3576
|
}
|
3279
3577
|
if ( 0 <= (*p) && (*p) <= 31 )
|
3280
3578
|
goto st0;
|
3281
|
-
goto
|
3282
|
-
|
3579
|
+
goto tr180;
|
3580
|
+
tr180:
|
3283
3581
|
#line 295 "unicorn_http.rl"
|
3284
3582
|
{ MARK(mark, p); }
|
3285
3583
|
goto st121;
|
@@ -3287,13 +3585,14 @@ st121:
|
|
3287
3585
|
if ( ++p == pe )
|
3288
3586
|
goto _test_eof121;
|
3289
3587
|
case 121:
|
3290
|
-
#line
|
3588
|
+
#line 3589 "unicorn_http.c"
|
3291
3589
|
switch( (*p) ) {
|
3292
|
-
case
|
3590
|
+
case 10: goto tr185;
|
3591
|
+
case 13: goto tr186;
|
3293
3592
|
case 127: goto st0;
|
3294
3593
|
}
|
3295
3594
|
if ( (*p) > 8 ) {
|
3296
|
-
if (
|
3595
|
+
if ( 11 <= (*p) && (*p) <= 31 )
|
3297
3596
|
goto st0;
|
3298
3597
|
} else if ( (*p) >= 0 )
|
3299
3598
|
goto st0;
|
@@ -3315,8 +3614,8 @@ case 121:
|
|
3315
3614
|
_test_eof15: cs = 15; goto _test_eof;
|
3316
3615
|
_test_eof16: cs = 16; goto _test_eof;
|
3317
3616
|
_test_eof17: cs = 17; goto _test_eof;
|
3318
|
-
_test_eof18: cs = 18; goto _test_eof;
|
3319
3617
|
_test_eof122: cs = 122; goto _test_eof;
|
3618
|
+
_test_eof18: cs = 18; goto _test_eof;
|
3320
3619
|
_test_eof19: cs = 19; goto _test_eof;
|
3321
3620
|
_test_eof20: cs = 20; goto _test_eof;
|
3322
3621
|
_test_eof21: cs = 21; goto _test_eof;
|
@@ -3400,8 +3699,8 @@ case 121:
|
|
3400
3699
|
_test_eof99: cs = 99; goto _test_eof;
|
3401
3700
|
_test_eof100: cs = 100; goto _test_eof;
|
3402
3701
|
_test_eof101: cs = 101; goto _test_eof;
|
3403
|
-
_test_eof102: cs = 102; goto _test_eof;
|
3404
3702
|
_test_eof123: cs = 123; goto _test_eof;
|
3703
|
+
_test_eof102: cs = 102; goto _test_eof;
|
3405
3704
|
_test_eof103: cs = 103; goto _test_eof;
|
3406
3705
|
_test_eof104: cs = 104; goto _test_eof;
|
3407
3706
|
_test_eof105: cs = 105; goto _test_eof;
|
@@ -3417,8 +3716,8 @@ case 121:
|
|
3417
3716
|
_test_eof115: cs = 115; goto _test_eof;
|
3418
3717
|
_test_eof116: cs = 116; goto _test_eof;
|
3419
3718
|
_test_eof117: cs = 117; goto _test_eof;
|
3420
|
-
_test_eof118: cs = 118; goto _test_eof;
|
3421
3719
|
_test_eof124: cs = 124; goto _test_eof;
|
3720
|
+
_test_eof118: cs = 118; goto _test_eof;
|
3422
3721
|
_test_eof119: cs = 119; goto _test_eof;
|
3423
3722
|
_test_eof120: cs = 120; goto _test_eof;
|
3424
3723
|
_test_eof121: cs = 121; goto _test_eof;
|