unicorn 5.1.0 → 5.2.0
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 +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;
|