mongrel 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +2 -0
- data/CHANGELOG +2 -0
- data/Manifest +68 -0
- data/bin/mongrel_rails +55 -22
- data/examples/camping/README +3 -0
- data/examples/httpd.conf +474 -0
- data/examples/mime.yaml +3 -0
- data/examples/mongrel.conf +9 -0
- data/examples/monitrc +57 -0
- data/ext/http11/http11.c +25 -12
- data/ext/http11/http11_parser.c +456 -331
- data/ext/http11/http11_parser.h +1 -0
- data/ext/http11/http11_parser.java.rl +170 -0
- data/ext/http11/http11_parser.rl +8 -48
- data/ext/http11/http11_parser_common.rl +54 -0
- data/ext/http11/tst.h +2 -2
- data/ext/http11/tst_cleanup.c +0 -1
- data/ext/http11/tst_insert.c +29 -3
- data/ext/http11/tst_search.c +60 -55
- data/lib/mongrel.rb +68 -53
- data/lib/mongrel/cgi.rb +3 -3
- data/lib/mongrel/command.rb +1 -1
- data/lib/mongrel/configurator.rb +41 -31
- data/lib/mongrel/debug.rb +2 -5
- data/lib/mongrel/handlers.rb +23 -9
- data/lib/mongrel/mime_types.yml +2 -1
- data/lib/mongrel/rails.rb +7 -15
- data/mongrel-public_cert.pem +20 -0
- data/mongrel.gemspec +211 -0
- data/test/jruby_socket.rb +39 -0
- data/test/test_cgi_wrapper.rb +26 -0
- data/test/test_command.rb +1 -4
- data/test/test_conditional.rb +6 -18
- data/test/test_configurator.rb +5 -8
- data/test/test_debug.rb +3 -11
- data/test/test_handlers.rb +8 -10
- data/test/test_http11.rb +24 -5
- data/test/test_redirect_handler.rb +2 -6
- data/test/test_request_progress.rb +5 -9
- data/test/test_response.rb +24 -3
- data/test/test_stats.rb +1 -3
- data/test/test_uriclassifier.rb +170 -81
- data/test/test_ws.rb +25 -24
- data/test/testhelp.rb +26 -3
- data/tools/trickletest.rb +2 -2
- metadata +138 -333
- metadata.gz.sig +0 -0
- data/Rakefile +0 -117
- data/doc/rdoc/classes/IO.html +0 -170
- data/doc/rdoc/classes/IO.src/M000003.html +0 -19
- data/doc/rdoc/classes/IO.src/M000004.html +0 -19
- data/doc/rdoc/classes/Kernel.html +0 -159
- data/doc/rdoc/classes/Kernel.src/M000012.html +0 -19
- data/doc/rdoc/classes/Kernel.src/M000013.html +0 -23
- data/doc/rdoc/classes/Mongrel.html +0 -204
- data/doc/rdoc/classes/Mongrel/CGIWrapper.html +0 -404
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000115.html +0 -25
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000116.html +0 -47
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000117.html +0 -34
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000118.html +0 -32
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000119.html +0 -25
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000120.html +0 -18
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000121.html +0 -18
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000122.html +0 -18
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000123.html +0 -19
- data/doc/rdoc/classes/Mongrel/Camping.html +0 -177
- data/doc/rdoc/classes/Mongrel/Camping.src/M000041.html +0 -22
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +0 -184
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000042.html +0 -20
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000043.html +0 -58
- data/doc/rdoc/classes/Mongrel/Command.html +0 -132
- data/doc/rdoc/classes/Mongrel/Command/Base.html +0 -384
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000018.html +0 -24
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000019.html +0 -42
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000020.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000021.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000022.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000023.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000024.html +0 -22
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000025.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000026.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000027.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000028.html +0 -24
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html +0 -24
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Registry.html +0 -192
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000031.html +0 -20
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000032.html +0 -29
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000033.html +0 -58
- data/doc/rdoc/classes/Mongrel/Configurator.html +0 -716
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000093.html +0 -27
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000094.html +0 -31
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000095.html +0 -18
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000096.html +0 -21
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000097.html +0 -20
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000098.html +0 -23
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +0 -18
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000100.html +0 -38
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000101.html +0 -19
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000102.html +0 -39
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000103.html +0 -33
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000104.html +0 -18
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000105.html +0 -24
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +0 -19
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000107.html +0 -18
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +0 -22
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +0 -22
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +0 -18
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +0 -34
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +0 -18
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +0 -36
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +0 -18
- data/doc/rdoc/classes/Mongrel/Const.html +0 -337
- data/doc/rdoc/classes/Mongrel/DeflateFilter.html +0 -188
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/M000124.html +0 -19
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/M000125.html +0 -23
- data/doc/rdoc/classes/Mongrel/DirHandler.html +0 -303
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000051.html +0 -21
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000052.html +0 -42
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000053.html +0 -38
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000054.html +0 -65
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000055.html +0 -39
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000056.html +0 -18
- data/doc/rdoc/classes/Mongrel/Error404Handler.html +0 -171
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000126.html +0 -18
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000127.html +0 -18
- data/doc/rdoc/classes/Mongrel/HeaderOut.html +0 -190
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000066.html +0 -21
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000067.html +0 -21
- data/doc/rdoc/classes/Mongrel/HttpHandler.html +0 -215
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000072.html +0 -17
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000073.html +0 -17
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000074.html +0 -17
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +0 -210
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000014.html +0 -17
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000015.html +0 -17
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000016.html +0 -19
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000017.html +0 -17
- data/doc/rdoc/classes/Mongrel/HttpParams.html +0 -131
- data/doc/rdoc/classes/Mongrel/HttpParser.html +0 -278
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000044.html +0 -28
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000045.html +0 -29
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000046.html +0 -29
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000047.html +0 -59
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000048.html +0 -27
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000049.html +0 -27
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000050.html +0 -28
- data/doc/rdoc/classes/Mongrel/HttpParserError.html +0 -111
- data/doc/rdoc/classes/Mongrel/HttpRequest.html +0 -284
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000133.html +0 -50
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000134.html +0 -41
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000135.html +0 -29
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000136.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000137.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000138.html +0 -32
- data/doc/rdoc/classes/Mongrel/HttpResponse.html +0 -443
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +0 -25
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000077.html +0 -26
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000078.html +0 -22
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +0 -22
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000080.html +0 -22
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +0 -31
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +0 -21
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000084.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000085.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000086.html +0 -18
- data/doc/rdoc/classes/Mongrel/HttpServer.html +0 -402
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000057.html +0 -25
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000058.html +0 -100
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000059.html +0 -32
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000060.html +0 -21
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000061.html +0 -29
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000062.html +0 -65
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000063.html +0 -34
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000064.html +0 -18
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html +0 -22
- data/doc/rdoc/classes/Mongrel/Rails.html +0 -112
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +0 -225
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000034.html +0 -37
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000035.html +0 -25
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000036.html +0 -26
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +0 -263
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000037.html +0 -23
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000038.html +0 -56
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000039.html +0 -20
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000040.html +0 -25
- data/doc/rdoc/classes/Mongrel/RedirectHandler.html +0 -187
- data/doc/rdoc/classes/Mongrel/RedirectHandler.src/M000131.html +0 -22
- data/doc/rdoc/classes/Mongrel/RedirectHandler.src/M000132.html +0 -27
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.html +0 -211
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000128.html +0 -24
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000129.html +0 -24
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000130.html +0 -18
- data/doc/rdoc/classes/Mongrel/Stats.html +0 -309
- data/doc/rdoc/classes/Mongrel/Stats.src/M000139.html +0 -19
- data/doc/rdoc/classes/Mongrel/Stats.src/M000140.html +0 -23
- data/doc/rdoc/classes/Mongrel/Stats.src/M000141.html +0 -26
- data/doc/rdoc/classes/Mongrel/Stats.src/M000142.html +0 -18
- data/doc/rdoc/classes/Mongrel/Stats.src/M000143.html +0 -18
- data/doc/rdoc/classes/Mongrel/Stats.src/M000144.html +0 -18
- data/doc/rdoc/classes/Mongrel/Stats.src/M000145.html +0 -23
- data/doc/rdoc/classes/Mongrel/Stats.src/M000146.html +0 -20
- data/doc/rdoc/classes/Mongrel/StatusHandler.html +0 -194
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000068.html +0 -18
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000069.html +0 -24
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000070.html +0 -42
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000071.html +0 -20
- data/doc/rdoc/classes/Mongrel/StopServer.html +0 -117
- data/doc/rdoc/classes/Mongrel/TimeoutError.html +0 -117
- data/doc/rdoc/classes/Mongrel/URIClassifier.html +0 -317
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html +0 -18
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000088.html +0 -18
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000089.html +0 -39
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000090.html +0 -51
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000091.html +0 -36
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000092.html +0 -83
- data/doc/rdoc/classes/MongrelDbg.html +0 -209
- data/doc/rdoc/classes/MongrelDbg.src/M000007.html +0 -24
- data/doc/rdoc/classes/MongrelDbg.src/M000008.html +0 -20
- data/doc/rdoc/classes/MongrelDbg.src/M000009.html +0 -22
- data/doc/rdoc/classes/MongrelDbg.src/M000010.html +0 -21
- data/doc/rdoc/classes/MongrelDbg.src/M000011.html +0 -18
- data/doc/rdoc/classes/Mutex.html +0 -158
- data/doc/rdoc/classes/Mutex.src/M000001.html +0 -24
- data/doc/rdoc/classes/Mutex.src/M000002.html +0 -32
- data/doc/rdoc/classes/RequestLog.html +0 -115
- data/doc/rdoc/classes/RequestLog/Access.html +0 -151
- data/doc/rdoc/classes/RequestLog/Access.src/M000147.html +0 -19
- data/doc/rdoc/classes/RequestLog/Files.html +0 -144
- data/doc/rdoc/classes/RequestLog/Files.src/M000148.html +0 -19
- data/doc/rdoc/classes/RequestLog/Objects.html +0 -150
- data/doc/rdoc/classes/RequestLog/Objects.src/M000150.html +0 -51
- data/doc/rdoc/classes/RequestLog/Params.html +0 -144
- data/doc/rdoc/classes/RequestLog/Params.src/M000151.html +0 -19
- data/doc/rdoc/classes/RequestLog/Threads.html +0 -144
- data/doc/rdoc/classes/RequestLog/Threads.src/M000149.html +0 -34
- data/doc/rdoc/classes/TCPServer.html +0 -173
- data/doc/rdoc/classes/TCPServer.src/M000005.html +0 -19
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/COPYING.html +0 -168
- data/doc/rdoc/files/LICENSE.html +0 -168
- data/doc/rdoc/files/README.html +0 -213
- data/doc/rdoc/files/ext/http11/http11_c.html +0 -101
- data/doc/rdoc/files/lib/mongrel/camping_rb.html +0 -120
- data/doc/rdoc/files/lib/mongrel/cgi_rb.html +0 -120
- data/doc/rdoc/files/lib/mongrel/command_rb.html +0 -123
- data/doc/rdoc/files/lib/mongrel/configurator_rb.html +0 -111
- data/doc/rdoc/files/lib/mongrel/debug_rb.html +0 -122
- data/doc/rdoc/files/lib/mongrel/handlers_rb.html +0 -122
- data/doc/rdoc/files/lib/mongrel/init_rb.html +0 -121
- data/doc/rdoc/files/lib/mongrel/rails_rb.html +0 -123
- data/doc/rdoc/files/lib/mongrel/stats_rb.html +0 -113
- data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +0 -113
- data/doc/rdoc/files/lib/mongrel_rb.html +0 -135
- data/doc/rdoc/files/lib/mutex_fix_rb.html +0 -108
- data/doc/rdoc/fr_class_index.html +0 -68
- data/doc/rdoc/fr_file_index.html +0 -42
- data/doc/rdoc/fr_method_index.html +0 -177
- data/doc/rdoc/index.html +0 -24
- data/doc/rdoc/rdoc-style.css +0 -208
- data/tools/rakehelp.rb +0 -117
data/examples/mime.yaml
ADDED
data/examples/monitrc
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
set daemon 60
|
2
|
+
set logfile syslog facility log_daemon
|
3
|
+
set mailserver localhost
|
4
|
+
set mail-format { from: monit@localhost }
|
5
|
+
set alert root@localhost
|
6
|
+
|
7
|
+
check process sshd with pidfile /var/run/sshd.pid
|
8
|
+
start program "/etc/init.d/ssh start"
|
9
|
+
stop program "/etc/init.d/ssh stop"
|
10
|
+
if failed port 22 protocol ssh then restart
|
11
|
+
if 5 restarts within 5 cycles then timeout
|
12
|
+
|
13
|
+
check process mysql with pidfile /var/run/mysqld/mysqld.pid
|
14
|
+
group database
|
15
|
+
start program = "/etc/init.d/mysql start"
|
16
|
+
stop program = "/etc/init.d/mysql stop"
|
17
|
+
if failed host 127.0.0.1 port 3306 then restart
|
18
|
+
if 5 restarts within 5 cycles then timeout
|
19
|
+
|
20
|
+
check process httpd with pidfile /usr/local/apache2/logs/httpd.pid
|
21
|
+
group www-data
|
22
|
+
start program "/usr/local/apache2/bin/apachectl start"
|
23
|
+
stop program "/usr/local/apache2/bin/apachectl stop"
|
24
|
+
if failed host localhost port 80 protocol http
|
25
|
+
and request "/" then alert
|
26
|
+
if cpu is greater than 60% for 2 cycles then alert
|
27
|
+
if cpu > 80% for 5 cycles then restart
|
28
|
+
if children > 250 then restart
|
29
|
+
if loadavg(5min) greater than 10 for 8 cycles then alert
|
30
|
+
if 3 restarts within 5 cycles then timeout
|
31
|
+
|
32
|
+
check process mongrel_8000 with pidfile /var/rails/MYAPP/log/mongrel.8000.pid
|
33
|
+
group root
|
34
|
+
if failed host 127.0.0.1 port 8000 protocol http
|
35
|
+
and request "/" then alert
|
36
|
+
if cpu is greater than 60% for 2 cycles then alert
|
37
|
+
if cpu > 80% for 5 cycles then restart
|
38
|
+
if loadavg(5min) greater than 10 for 8 cycles then restart
|
39
|
+
if 3 restarts within 5 cycles then timeout
|
40
|
+
|
41
|
+
check process mongrel_8001 with pidfile /var/rails/MYAPP/log/mongrel.8001.pid
|
42
|
+
group root
|
43
|
+
if failed host 127.0.0.1 port 8001 protocol http
|
44
|
+
and request "/" then alert
|
45
|
+
if cpu is greater than 60% for 2 cycles then alert
|
46
|
+
if cpu > 80% for 5 cycles then alert
|
47
|
+
if loadavg(5min) greater than 10 for 8 cycles then alert
|
48
|
+
if 3 restarts within 5 cycles then timeout
|
49
|
+
|
50
|
+
check process postfix with pidfile /var/spool/postfix/pid/master.pid
|
51
|
+
group mail
|
52
|
+
start program = "/etc/init.d/postfix start"
|
53
|
+
stop program = "/etc/init.d/postfix stop"
|
54
|
+
if failed port 25 protocol smtp then restart
|
55
|
+
if 5 restarts within 5 cycles then timeout
|
56
|
+
|
57
|
+
|
data/ext/http11/http11.c
CHANGED
@@ -21,6 +21,7 @@ static VALUE eHttpParserError;
|
|
21
21
|
static VALUE global_http_prefix;
|
22
22
|
static VALUE global_request_method;
|
23
23
|
static VALUE global_request_uri;
|
24
|
+
static VALUE global_fragment;
|
24
25
|
static VALUE global_query_string;
|
25
26
|
static VALUE global_http_version;
|
26
27
|
static VALUE global_content_length;
|
@@ -55,6 +56,7 @@ static VALUE global_port_80;
|
|
55
56
|
DEF_MAX_LENGTH(FIELD_NAME, 256);
|
56
57
|
DEF_MAX_LENGTH(FIELD_VALUE, 80 * 1024);
|
57
58
|
DEF_MAX_LENGTH(REQUEST_URI, 1024 * 12);
|
59
|
+
DEF_MAX_LENGTH(FRAGMENT, 1024); /* Don't know if this length is specified somewhere or not */
|
58
60
|
DEF_MAX_LENGTH(REQUEST_PATH, 1024);
|
59
61
|
DEF_MAX_LENGTH(QUERY_STRING, (1024 * 10));
|
60
62
|
DEF_MAX_LENGTH(HEADER, (1024 * (80 + 32)));
|
@@ -105,6 +107,17 @@ void request_uri(void *data, const char *at, size_t length)
|
|
105
107
|
rb_hash_aset(req, global_request_uri, val);
|
106
108
|
}
|
107
109
|
|
110
|
+
void fragment(void *data, const char *at, size_t length)
|
111
|
+
{
|
112
|
+
VALUE req = (VALUE)data;
|
113
|
+
VALUE val = Qnil;
|
114
|
+
|
115
|
+
VALIDATE_MAX_LENGTH(length, FRAGMENT);
|
116
|
+
|
117
|
+
val = rb_str_new(at, length);
|
118
|
+
rb_hash_aset(req, global_fragment, val);
|
119
|
+
}
|
120
|
+
|
108
121
|
void request_path(void *data, const char *at, size_t length)
|
109
122
|
{
|
110
123
|
VALUE req = (VALUE)data;
|
@@ -157,7 +170,7 @@ void header_done(void *data, const char *at, size_t length)
|
|
157
170
|
|
158
171
|
rb_hash_aset(req, global_gateway_interface, global_gateway_interface_value);
|
159
172
|
if((temp = rb_hash_aref(req, global_http_host)) != Qnil) {
|
160
|
-
|
173
|
+
/* ruby better close strings off with a '\0' dammit */
|
161
174
|
colon = strchr(RSTRING(temp)->ptr, ':');
|
162
175
|
if(colon != NULL) {
|
163
176
|
rb_hash_aset(req, global_server_name, rb_str_substr(temp, 0, colon - RSTRING(temp)->ptr));
|
@@ -170,7 +183,7 @@ void header_done(void *data, const char *at, size_t length)
|
|
170
183
|
}
|
171
184
|
}
|
172
185
|
|
173
|
-
|
186
|
+
/* grab the initial body and stuff it into an ivar */
|
174
187
|
rb_ivar_set(req, id_http_body, rb_str_new(at, length));
|
175
188
|
rb_hash_aset(req, global_server_protocol, global_server_protocol_value);
|
176
189
|
rb_hash_aset(req, global_server_software, global_mongrel_version);
|
@@ -194,6 +207,7 @@ VALUE HttpParser_alloc(VALUE klass)
|
|
194
207
|
hp->http_field = http_field;
|
195
208
|
hp->request_method = request_method;
|
196
209
|
hp->request_uri = request_uri;
|
210
|
+
hp->fragment = fragment;
|
197
211
|
hp->request_path = request_path;
|
198
212
|
hp->query_string = query_string;
|
199
213
|
hp->http_version = http_version;
|
@@ -392,7 +406,7 @@ VALUE URIClassifier_init(VALUE self)
|
|
392
406
|
{
|
393
407
|
VALUE hash;
|
394
408
|
|
395
|
-
|
409
|
+
/* we create an internal hash to protect stuff from the GC */
|
396
410
|
hash = rb_hash_new();
|
397
411
|
rb_ivar_set(self, id_handler_map, hash);
|
398
412
|
|
@@ -506,25 +520,25 @@ VALUE URIClassifier_resolve(VALUE self, VALUE uri)
|
|
506
520
|
DATA_GET(self, struct tst, tst);
|
507
521
|
uri_str = (unsigned char *)StringValueCStr(uri);
|
508
522
|
|
509
|
-
handler = tst_search(uri_str, tst, &pref_len);
|
523
|
+
handler = tst_search(uri_str, tst, TST_LONGEST_MATCH, &pref_len);
|
510
524
|
|
511
|
-
|
525
|
+
/* setup for multiple return values */
|
512
526
|
result = rb_ary_new();
|
513
527
|
|
514
528
|
if(handler) {
|
515
529
|
rb_ary_push(result, rb_str_substr (uri, 0, pref_len));
|
516
|
-
|
530
|
+
/* compensate for a script_name="/" where we need to add the "/" to path_info to keep it consistent */
|
517
531
|
if(pref_len == 1 && uri_str[0] == '/') {
|
518
|
-
|
532
|
+
/* matches the root URI so we have to use the whole URI as the path_info */
|
519
533
|
rb_ary_push(result, uri);
|
520
534
|
} else {
|
521
|
-
|
535
|
+
/* matches a script so process like normal */
|
522
536
|
rb_ary_push(result, rb_str_substr(uri, pref_len, RSTRING(uri)->len));
|
523
537
|
}
|
524
538
|
|
525
539
|
rb_ary_push(result, (VALUE)handler);
|
526
540
|
} else {
|
527
|
-
|
541
|
+
/* not found so push back nothing */
|
528
542
|
rb_ary_push(result, Qnil);
|
529
543
|
rb_ary_push(result, Qnil);
|
530
544
|
rb_ary_push(result, Qnil);
|
@@ -542,6 +556,7 @@ void Init_http11()
|
|
542
556
|
DEF_GLOBAL(http_prefix, "HTTP_");
|
543
557
|
DEF_GLOBAL(request_method, "REQUEST_METHOD");
|
544
558
|
DEF_GLOBAL(request_uri, "REQUEST_URI");
|
559
|
+
DEF_GLOBAL(fragment, "FRAGMENT");
|
545
560
|
DEF_GLOBAL(query_string, "QUERY_STRING");
|
546
561
|
DEF_GLOBAL(http_version, "HTTP_VERSION");
|
547
562
|
DEF_GLOBAL(request_path, "REQUEST_PATH");
|
@@ -556,7 +571,7 @@ void Init_http11()
|
|
556
571
|
DEF_GLOBAL(server_protocol, "SERVER_PROTOCOL");
|
557
572
|
DEF_GLOBAL(server_protocol_value, "HTTP/1.1");
|
558
573
|
DEF_GLOBAL(http_host, "HTTP_HOST");
|
559
|
-
DEF_GLOBAL(mongrel_version, "Mongrel 1.0.
|
574
|
+
DEF_GLOBAL(mongrel_version, "Mongrel 1.0.2");
|
560
575
|
DEF_GLOBAL(server_software, "SERVER_SOFTWARE");
|
561
576
|
DEF_GLOBAL(port_80, "80");
|
562
577
|
|
@@ -579,5 +594,3 @@ void Init_http11()
|
|
579
594
|
rb_define_method(cURIClassifier, "unregister", URIClassifier_unregister, 1);
|
580
595
|
rb_define_method(cURIClassifier, "resolve", URIClassifier_resolve, 1);
|
581
596
|
}
|
582
|
-
|
583
|
-
|
data/ext/http11/http11_parser.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#line 1 "
|
1
|
+
#line 1 "http11_parser.rl"
|
2
2
|
/**
|
3
3
|
* Copyright (c) 2005 Zed A. Shaw
|
4
4
|
* You can redistribute it and/or modify it under the same terms as Ruby.
|
@@ -14,29 +14,30 @@
|
|
14
14
|
#define MARK(M,FPC) (parser->M = (FPC) - buffer)
|
15
15
|
#define PTR_TO(F) (buffer + parser->F)
|
16
16
|
|
17
|
-
/**
|
18
|
-
#line 114 "ext/http11/http11_parser.rl"
|
17
|
+
/** Machine **/
|
19
18
|
|
19
|
+
#line 74 "http11_parser.rl"
|
20
20
|
|
21
|
-
/** Data **/
|
22
21
|
|
23
|
-
|
24
|
-
static const int http_parser_start = 0;
|
22
|
+
/** Data **/
|
25
23
|
|
26
|
-
|
24
|
+
#line 25 "http11_parser.c"
|
25
|
+
static const int http_parser_start = 1;
|
26
|
+
static const int http_parser_first_final = 57;
|
27
|
+
static const int http_parser_error = 0;
|
27
28
|
|
28
|
-
static const int
|
29
|
+
static const int http_parser_en_main = 1;
|
29
30
|
|
30
|
-
#line
|
31
|
+
#line 78 "http11_parser.rl"
|
31
32
|
|
32
33
|
int http_parser_init(http_parser *parser) {
|
33
34
|
int cs = 0;
|
34
35
|
|
35
|
-
#line
|
36
|
+
#line 37 "http11_parser.c"
|
36
37
|
{
|
37
38
|
cs = http_parser_start;
|
38
39
|
}
|
39
|
-
#line
|
40
|
+
#line 82 "http11_parser.rl"
|
40
41
|
parser->cs = cs;
|
41
42
|
parser->body_start = 0;
|
42
43
|
parser->content_len = 0;
|
@@ -64,53 +65,53 @@ size_t http_parser_execute(http_parser *parser, const char *buffer, size_t len,
|
|
64
65
|
|
65
66
|
|
66
67
|
|
67
|
-
#line
|
68
|
+
#line 69 "http11_parser.c"
|
68
69
|
{
|
69
70
|
if ( p == pe )
|
70
71
|
goto _out;
|
71
72
|
switch ( cs )
|
72
73
|
{
|
73
|
-
case
|
74
|
+
case 1:
|
74
75
|
switch( (*p) ) {
|
75
|
-
case 36: goto
|
76
|
-
case 95: goto
|
76
|
+
case 36: goto tr0;
|
77
|
+
case 95: goto tr0;
|
77
78
|
}
|
78
79
|
if ( (*p) < 48 ) {
|
79
80
|
if ( 45 <= (*p) && (*p) <= 46 )
|
80
|
-
goto
|
81
|
+
goto tr0;
|
81
82
|
} else if ( (*p) > 57 ) {
|
82
83
|
if ( 65 <= (*p) && (*p) <= 90 )
|
83
|
-
goto
|
84
|
+
goto tr0;
|
84
85
|
} else
|
85
|
-
goto
|
86
|
-
goto
|
87
|
-
|
88
|
-
goto
|
89
|
-
|
90
|
-
#line
|
86
|
+
goto tr0;
|
87
|
+
goto st0;
|
88
|
+
st0:
|
89
|
+
goto _out0;
|
90
|
+
tr0:
|
91
|
+
#line 22 "http11_parser.rl"
|
91
92
|
{MARK(mark, p); }
|
92
93
|
goto st2;
|
93
94
|
st2:
|
94
95
|
if ( ++p == pe )
|
95
96
|
goto _out2;
|
96
97
|
case 2:
|
97
|
-
#line
|
98
|
+
#line 99 "http11_parser.c"
|
98
99
|
switch( (*p) ) {
|
99
|
-
case 32: goto
|
100
|
-
case 36: goto
|
101
|
-
case 95: goto
|
100
|
+
case 32: goto tr2;
|
101
|
+
case 36: goto st38;
|
102
|
+
case 95: goto st38;
|
102
103
|
}
|
103
104
|
if ( (*p) < 48 ) {
|
104
105
|
if ( 45 <= (*p) && (*p) <= 46 )
|
105
|
-
goto
|
106
|
+
goto st38;
|
106
107
|
} else if ( (*p) > 57 ) {
|
107
108
|
if ( 65 <= (*p) && (*p) <= 90 )
|
108
|
-
goto
|
109
|
+
goto st38;
|
109
110
|
} else
|
110
|
-
goto
|
111
|
-
goto
|
112
|
-
|
113
|
-
#line
|
111
|
+
goto st38;
|
112
|
+
goto st0;
|
113
|
+
tr2:
|
114
|
+
#line 36 "http11_parser.rl"
|
114
115
|
{
|
115
116
|
if(parser->request_method != NULL)
|
116
117
|
parser->request_method(parser->data, PTR_TO(mark), LEN(mark, p));
|
@@ -120,74 +121,83 @@ st3:
|
|
120
121
|
if ( ++p == pe )
|
121
122
|
goto _out3;
|
122
123
|
case 3:
|
123
|
-
#line
|
124
|
+
#line 125 "http11_parser.c"
|
124
125
|
switch( (*p) ) {
|
125
|
-
case 42: goto
|
126
|
-
case 43: goto
|
127
|
-
case 47: goto
|
128
|
-
case 58: goto
|
126
|
+
case 42: goto tr4;
|
127
|
+
case 43: goto tr5;
|
128
|
+
case 47: goto tr6;
|
129
|
+
case 58: goto tr7;
|
129
130
|
}
|
130
131
|
if ( (*p) < 65 ) {
|
131
132
|
if ( 45 <= (*p) && (*p) <= 57 )
|
132
|
-
goto
|
133
|
+
goto tr5;
|
133
134
|
} else if ( (*p) > 90 ) {
|
134
135
|
if ( 97 <= (*p) && (*p) <= 122 )
|
135
|
-
goto
|
136
|
+
goto tr5;
|
136
137
|
} else
|
137
|
-
goto
|
138
|
-
goto
|
139
|
-
|
140
|
-
#line
|
138
|
+
goto tr5;
|
139
|
+
goto st0;
|
140
|
+
tr4:
|
141
|
+
#line 22 "http11_parser.rl"
|
141
142
|
{MARK(mark, p); }
|
142
143
|
goto st4;
|
143
144
|
st4:
|
144
145
|
if ( ++p == pe )
|
145
146
|
goto _out4;
|
146
147
|
case 4:
|
147
|
-
#line
|
148
|
-
|
149
|
-
goto
|
150
|
-
|
151
|
-
|
152
|
-
|
148
|
+
#line 149 "http11_parser.c"
|
149
|
+
switch( (*p) ) {
|
150
|
+
case 32: goto tr8;
|
151
|
+
case 35: goto tr9;
|
152
|
+
}
|
153
|
+
goto st0;
|
154
|
+
tr8:
|
155
|
+
#line 40 "http11_parser.rl"
|
153
156
|
{
|
154
157
|
if(parser->request_uri != NULL)
|
155
158
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
156
159
|
}
|
157
160
|
goto st5;
|
158
|
-
|
159
|
-
#line 44 "
|
161
|
+
tr30:
|
162
|
+
#line 44 "http11_parser.rl"
|
160
163
|
{
|
161
|
-
if(parser->
|
162
|
-
parser->
|
163
|
-
}
|
164
|
-
#line 38 "ext/http11/http11_parser.rl"
|
165
|
-
{
|
166
|
-
if(parser->request_uri != NULL)
|
167
|
-
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
164
|
+
if(parser->fragment != NULL)
|
165
|
+
parser->fragment(parser->data, PTR_TO(mark), LEN(mark, p));
|
168
166
|
}
|
169
167
|
goto st5;
|
170
|
-
|
171
|
-
#line
|
168
|
+
tr40:
|
169
|
+
#line 60 "http11_parser.rl"
|
172
170
|
{
|
173
171
|
if(parser->request_path != NULL)
|
174
172
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
175
173
|
}
|
176
|
-
#line
|
174
|
+
#line 40 "http11_parser.rl"
|
177
175
|
{
|
178
176
|
if(parser->request_uri != NULL)
|
179
177
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
180
178
|
}
|
181
179
|
goto st5;
|
182
|
-
|
183
|
-
#line
|
180
|
+
tr51:
|
181
|
+
#line 49 "http11_parser.rl"
|
184
182
|
{MARK(query_start, p); }
|
185
|
-
#line
|
183
|
+
#line 50 "http11_parser.rl"
|
186
184
|
{
|
187
185
|
if(parser->query_string != NULL)
|
188
186
|
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
189
187
|
}
|
190
|
-
#line
|
188
|
+
#line 40 "http11_parser.rl"
|
189
|
+
{
|
190
|
+
if(parser->request_uri != NULL)
|
191
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
192
|
+
}
|
193
|
+
goto st5;
|
194
|
+
tr55:
|
195
|
+
#line 50 "http11_parser.rl"
|
196
|
+
{
|
197
|
+
if(parser->query_string != NULL)
|
198
|
+
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
199
|
+
}
|
200
|
+
#line 40 "http11_parser.rl"
|
191
201
|
{
|
192
202
|
if(parser->request_uri != NULL)
|
193
203
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
@@ -197,50 +207,50 @@ st5:
|
|
197
207
|
if ( ++p == pe )
|
198
208
|
goto _out5;
|
199
209
|
case 5:
|
200
|
-
#line
|
210
|
+
#line 211 "http11_parser.c"
|
201
211
|
if ( (*p) == 72 )
|
202
|
-
goto
|
203
|
-
goto
|
204
|
-
|
205
|
-
#line
|
212
|
+
goto tr10;
|
213
|
+
goto st0;
|
214
|
+
tr10:
|
215
|
+
#line 22 "http11_parser.rl"
|
206
216
|
{MARK(mark, p); }
|
207
217
|
goto st6;
|
208
218
|
st6:
|
209
219
|
if ( ++p == pe )
|
210
220
|
goto _out6;
|
211
221
|
case 6:
|
212
|
-
#line
|
222
|
+
#line 223 "http11_parser.c"
|
213
223
|
if ( (*p) == 84 )
|
214
224
|
goto st7;
|
215
|
-
goto
|
225
|
+
goto st0;
|
216
226
|
st7:
|
217
227
|
if ( ++p == pe )
|
218
228
|
goto _out7;
|
219
229
|
case 7:
|
220
230
|
if ( (*p) == 84 )
|
221
231
|
goto st8;
|
222
|
-
goto
|
232
|
+
goto st0;
|
223
233
|
st8:
|
224
234
|
if ( ++p == pe )
|
225
235
|
goto _out8;
|
226
236
|
case 8:
|
227
237
|
if ( (*p) == 80 )
|
228
238
|
goto st9;
|
229
|
-
goto
|
239
|
+
goto st0;
|
230
240
|
st9:
|
231
241
|
if ( ++p == pe )
|
232
242
|
goto _out9;
|
233
243
|
case 9:
|
234
244
|
if ( (*p) == 47 )
|
235
245
|
goto st10;
|
236
|
-
goto
|
246
|
+
goto st0;
|
237
247
|
st10:
|
238
248
|
if ( ++p == pe )
|
239
249
|
goto _out10;
|
240
250
|
case 10:
|
241
251
|
if ( 48 <= (*p) && (*p) <= 57 )
|
242
252
|
goto st11;
|
243
|
-
goto
|
253
|
+
goto st0;
|
244
254
|
st11:
|
245
255
|
if ( ++p == pe )
|
246
256
|
goto _out11;
|
@@ -249,32 +259,32 @@ case 11:
|
|
249
259
|
goto st12;
|
250
260
|
if ( 48 <= (*p) && (*p) <= 57 )
|
251
261
|
goto st11;
|
252
|
-
goto
|
262
|
+
goto st0;
|
253
263
|
st12:
|
254
264
|
if ( ++p == pe )
|
255
265
|
goto _out12;
|
256
266
|
case 12:
|
257
267
|
if ( 48 <= (*p) && (*p) <= 57 )
|
258
268
|
goto st13;
|
259
|
-
goto
|
269
|
+
goto st0;
|
260
270
|
st13:
|
261
271
|
if ( ++p == pe )
|
262
272
|
goto _out13;
|
263
273
|
case 13:
|
264
274
|
if ( (*p) == 13 )
|
265
|
-
goto
|
275
|
+
goto tr18;
|
266
276
|
if ( 48 <= (*p) && (*p) <= 57 )
|
267
277
|
goto st13;
|
268
|
-
goto
|
269
|
-
|
270
|
-
#line
|
278
|
+
goto st0;
|
279
|
+
tr18:
|
280
|
+
#line 55 "http11_parser.rl"
|
271
281
|
{
|
272
282
|
if(parser->http_version != NULL)
|
273
283
|
parser->http_version(parser->data, PTR_TO(mark), LEN(mark, p));
|
274
284
|
}
|
275
285
|
goto st14;
|
276
|
-
|
277
|
-
#line
|
286
|
+
tr26:
|
287
|
+
#line 31 "http11_parser.rl"
|
278
288
|
{
|
279
289
|
if(parser->http_field != NULL) {
|
280
290
|
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
@@ -285,10 +295,10 @@ st14:
|
|
285
295
|
if ( ++p == pe )
|
286
296
|
goto _out14;
|
287
297
|
case 14:
|
288
|
-
#line
|
298
|
+
#line 299 "http11_parser.c"
|
289
299
|
if ( (*p) == 10 )
|
290
300
|
goto st15;
|
291
|
-
goto
|
301
|
+
goto st0;
|
292
302
|
st15:
|
293
303
|
if ( ++p == pe )
|
294
304
|
goto _out15;
|
@@ -316,41 +326,41 @@ case 15:
|
|
316
326
|
goto tr21;
|
317
327
|
} else
|
318
328
|
goto tr21;
|
319
|
-
goto
|
329
|
+
goto st0;
|
320
330
|
st16:
|
321
331
|
if ( ++p == pe )
|
322
332
|
goto _out16;
|
323
333
|
case 16:
|
324
334
|
if ( (*p) == 10 )
|
325
|
-
goto
|
326
|
-
goto
|
327
|
-
|
328
|
-
#line
|
335
|
+
goto tr22;
|
336
|
+
goto st0;
|
337
|
+
tr22:
|
338
|
+
#line 65 "http11_parser.rl"
|
329
339
|
{
|
330
340
|
parser->body_start = p - buffer + 1;
|
331
341
|
if(parser->header_done != NULL)
|
332
342
|
parser->header_done(parser->data, p + 1, pe - p - 1);
|
333
|
-
goto
|
343
|
+
goto _out57;
|
334
344
|
}
|
335
|
-
goto
|
336
|
-
|
345
|
+
goto st57;
|
346
|
+
st57:
|
337
347
|
if ( ++p == pe )
|
338
|
-
goto
|
339
|
-
case
|
340
|
-
#line
|
341
|
-
goto
|
348
|
+
goto _out57;
|
349
|
+
case 57:
|
350
|
+
#line 351 "http11_parser.c"
|
351
|
+
goto st0;
|
342
352
|
tr21:
|
343
|
-
#line
|
353
|
+
#line 25 "http11_parser.rl"
|
344
354
|
{ MARK(field_start, p); }
|
345
355
|
goto st17;
|
346
356
|
st17:
|
347
357
|
if ( ++p == pe )
|
348
358
|
goto _out17;
|
349
359
|
case 17:
|
350
|
-
#line
|
360
|
+
#line 361 "http11_parser.c"
|
351
361
|
switch( (*p) ) {
|
352
362
|
case 33: goto st17;
|
353
|
-
case 58: goto
|
363
|
+
case 58: goto tr24;
|
354
364
|
case 124: goto st17;
|
355
365
|
case 126: goto st17;
|
356
366
|
}
|
@@ -371,90 +381,133 @@ case 17:
|
|
371
381
|
goto st17;
|
372
382
|
} else
|
373
383
|
goto st17;
|
374
|
-
goto
|
375
|
-
|
376
|
-
#line
|
384
|
+
goto st0;
|
385
|
+
tr24:
|
386
|
+
#line 26 "http11_parser.rl"
|
377
387
|
{
|
378
388
|
parser->field_len = LEN(field_start, p);
|
379
389
|
}
|
380
390
|
goto st18;
|
381
|
-
|
382
|
-
#line
|
391
|
+
tr27:
|
392
|
+
#line 30 "http11_parser.rl"
|
383
393
|
{ MARK(mark, p); }
|
384
394
|
goto st18;
|
385
395
|
st18:
|
386
396
|
if ( ++p == pe )
|
387
397
|
goto _out18;
|
388
398
|
case 18:
|
389
|
-
#line
|
399
|
+
#line 400 "http11_parser.c"
|
390
400
|
switch( (*p) ) {
|
391
|
-
case 13: goto
|
392
|
-
case 32: goto
|
401
|
+
case 13: goto tr26;
|
402
|
+
case 32: goto tr27;
|
393
403
|
}
|
394
|
-
goto
|
395
|
-
|
396
|
-
#line
|
404
|
+
goto tr25;
|
405
|
+
tr25:
|
406
|
+
#line 30 "http11_parser.rl"
|
397
407
|
{ MARK(mark, p); }
|
398
408
|
goto st19;
|
399
409
|
st19:
|
400
410
|
if ( ++p == pe )
|
401
411
|
goto _out19;
|
402
412
|
case 19:
|
403
|
-
#line
|
413
|
+
#line 414 "http11_parser.c"
|
404
414
|
if ( (*p) == 13 )
|
405
|
-
goto
|
415
|
+
goto tr26;
|
406
416
|
goto st19;
|
407
|
-
|
408
|
-
#line
|
409
|
-
{
|
417
|
+
tr9:
|
418
|
+
#line 40 "http11_parser.rl"
|
419
|
+
{
|
420
|
+
if(parser->request_uri != NULL)
|
421
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
422
|
+
}
|
423
|
+
goto st20;
|
424
|
+
tr41:
|
425
|
+
#line 60 "http11_parser.rl"
|
426
|
+
{
|
427
|
+
if(parser->request_path != NULL)
|
428
|
+
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
429
|
+
}
|
430
|
+
#line 40 "http11_parser.rl"
|
431
|
+
{
|
432
|
+
if(parser->request_uri != NULL)
|
433
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
434
|
+
}
|
435
|
+
goto st20;
|
436
|
+
tr52:
|
437
|
+
#line 49 "http11_parser.rl"
|
438
|
+
{MARK(query_start, p); }
|
439
|
+
#line 50 "http11_parser.rl"
|
440
|
+
{
|
441
|
+
if(parser->query_string != NULL)
|
442
|
+
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
443
|
+
}
|
444
|
+
#line 40 "http11_parser.rl"
|
445
|
+
{
|
446
|
+
if(parser->request_uri != NULL)
|
447
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
448
|
+
}
|
449
|
+
goto st20;
|
450
|
+
tr56:
|
451
|
+
#line 50 "http11_parser.rl"
|
452
|
+
{
|
453
|
+
if(parser->query_string != NULL)
|
454
|
+
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
455
|
+
}
|
456
|
+
#line 40 "http11_parser.rl"
|
457
|
+
{
|
458
|
+
if(parser->request_uri != NULL)
|
459
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
460
|
+
}
|
410
461
|
goto st20;
|
411
462
|
st20:
|
412
463
|
if ( ++p == pe )
|
413
464
|
goto _out20;
|
414
465
|
case 20:
|
415
|
-
#line
|
466
|
+
#line 467 "http11_parser.c"
|
416
467
|
switch( (*p) ) {
|
417
|
-
case
|
418
|
-
case
|
468
|
+
case 32: goto tr30;
|
469
|
+
case 37: goto tr31;
|
470
|
+
case 60: goto st0;
|
471
|
+
case 62: goto st0;
|
472
|
+
case 127: goto st0;
|
419
473
|
}
|
420
|
-
if ( (*p)
|
421
|
-
if (
|
422
|
-
goto
|
423
|
-
} else if ( (*p)
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
goto st20;
|
429
|
-
} else
|
430
|
-
goto st20;
|
431
|
-
goto st1;
|
432
|
-
tr13:
|
433
|
-
#line 20 "ext/http11/http11_parser.rl"
|
474
|
+
if ( (*p) > 31 ) {
|
475
|
+
if ( 34 <= (*p) && (*p) <= 35 )
|
476
|
+
goto st0;
|
477
|
+
} else if ( (*p) >= 0 )
|
478
|
+
goto st0;
|
479
|
+
goto tr29;
|
480
|
+
tr29:
|
481
|
+
#line 22 "http11_parser.rl"
|
434
482
|
{MARK(mark, p); }
|
435
483
|
goto st21;
|
436
484
|
st21:
|
437
485
|
if ( ++p == pe )
|
438
486
|
goto _out21;
|
439
487
|
case 21:
|
440
|
-
#line
|
488
|
+
#line 489 "http11_parser.c"
|
441
489
|
switch( (*p) ) {
|
442
|
-
case 32: goto
|
490
|
+
case 32: goto tr30;
|
443
491
|
case 37: goto st22;
|
444
|
-
case 60: goto
|
445
|
-
case 62: goto
|
446
|
-
case 127: goto
|
492
|
+
case 60: goto st0;
|
493
|
+
case 62: goto st0;
|
494
|
+
case 127: goto st0;
|
447
495
|
}
|
448
496
|
if ( (*p) > 31 ) {
|
449
497
|
if ( 34 <= (*p) && (*p) <= 35 )
|
450
|
-
goto
|
498
|
+
goto st0;
|
451
499
|
} else if ( (*p) >= 0 )
|
452
|
-
goto
|
500
|
+
goto st0;
|
453
501
|
goto st21;
|
502
|
+
tr31:
|
503
|
+
#line 22 "http11_parser.rl"
|
504
|
+
{MARK(mark, p); }
|
505
|
+
goto st22;
|
454
506
|
st22:
|
455
507
|
if ( ++p == pe )
|
456
508
|
goto _out22;
|
457
509
|
case 22:
|
510
|
+
#line 511 "http11_parser.c"
|
458
511
|
if ( (*p) < 65 ) {
|
459
512
|
if ( 48 <= (*p) && (*p) <= 57 )
|
460
513
|
goto st23;
|
@@ -463,7 +516,7 @@ case 22:
|
|
463
516
|
goto st23;
|
464
517
|
} else
|
465
518
|
goto st23;
|
466
|
-
goto
|
519
|
+
goto st0;
|
467
520
|
st23:
|
468
521
|
if ( ++p == pe )
|
469
522
|
goto _out23;
|
@@ -476,165 +529,157 @@ case 23:
|
|
476
529
|
goto st21;
|
477
530
|
} else
|
478
531
|
goto st21;
|
479
|
-
goto
|
480
|
-
|
481
|
-
#line
|
532
|
+
goto st0;
|
533
|
+
tr5:
|
534
|
+
#line 22 "http11_parser.rl"
|
482
535
|
{MARK(mark, p); }
|
483
536
|
goto st24;
|
484
537
|
st24:
|
485
538
|
if ( ++p == pe )
|
486
539
|
goto _out24;
|
487
540
|
case 24:
|
488
|
-
#line
|
541
|
+
#line 542 "http11_parser.c"
|
489
542
|
switch( (*p) ) {
|
490
|
-
case
|
491
|
-
case
|
492
|
-
case 59: goto tr33;
|
493
|
-
case 60: goto st1;
|
494
|
-
case 62: goto st1;
|
495
|
-
case 63: goto tr34;
|
496
|
-
case 127: goto st1;
|
543
|
+
case 43: goto st24;
|
544
|
+
case 58: goto st25;
|
497
545
|
}
|
498
|
-
if ( (*p)
|
499
|
-
if (
|
500
|
-
goto
|
501
|
-
} else if ( (*p)
|
502
|
-
|
503
|
-
|
546
|
+
if ( (*p) < 48 ) {
|
547
|
+
if ( 45 <= (*p) && (*p) <= 46 )
|
548
|
+
goto st24;
|
549
|
+
} else if ( (*p) > 57 ) {
|
550
|
+
if ( (*p) > 90 ) {
|
551
|
+
if ( 97 <= (*p) && (*p) <= 122 )
|
552
|
+
goto st24;
|
553
|
+
} else if ( (*p) >= 65 )
|
554
|
+
goto st24;
|
555
|
+
} else
|
556
|
+
goto st24;
|
557
|
+
goto st0;
|
558
|
+
tr7:
|
559
|
+
#line 22 "http11_parser.rl"
|
560
|
+
{MARK(mark, p); }
|
561
|
+
goto st25;
|
504
562
|
st25:
|
505
563
|
if ( ++p == pe )
|
506
564
|
goto _out25;
|
507
565
|
case 25:
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
goto
|
516
|
-
|
566
|
+
#line 567 "http11_parser.c"
|
567
|
+
switch( (*p) ) {
|
568
|
+
case 32: goto tr8;
|
569
|
+
case 34: goto st0;
|
570
|
+
case 35: goto tr9;
|
571
|
+
case 37: goto st26;
|
572
|
+
case 60: goto st0;
|
573
|
+
case 62: goto st0;
|
574
|
+
case 127: goto st0;
|
575
|
+
}
|
576
|
+
if ( 0 <= (*p) && (*p) <= 31 )
|
577
|
+
goto st0;
|
578
|
+
goto st25;
|
517
579
|
st26:
|
518
580
|
if ( ++p == pe )
|
519
581
|
goto _out26;
|
520
582
|
case 26:
|
521
583
|
if ( (*p) < 65 ) {
|
522
584
|
if ( 48 <= (*p) && (*p) <= 57 )
|
523
|
-
goto
|
585
|
+
goto st27;
|
524
586
|
} else if ( (*p) > 70 ) {
|
525
587
|
if ( 97 <= (*p) && (*p) <= 102 )
|
526
|
-
goto
|
588
|
+
goto st27;
|
527
589
|
} else
|
528
|
-
goto
|
529
|
-
goto
|
530
|
-
tr33:
|
531
|
-
#line 54 "ext/http11/http11_parser.rl"
|
532
|
-
{
|
533
|
-
if(parser->request_path != NULL)
|
534
|
-
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
535
|
-
}
|
536
|
-
goto st27;
|
590
|
+
goto st27;
|
591
|
+
goto st0;
|
537
592
|
st27:
|
538
593
|
if ( ++p == pe )
|
539
594
|
goto _out27;
|
540
595
|
case 27:
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
goto st1;
|
555
|
-
goto st27;
|
596
|
+
if ( (*p) < 65 ) {
|
597
|
+
if ( 48 <= (*p) && (*p) <= 57 )
|
598
|
+
goto st25;
|
599
|
+
} else if ( (*p) > 70 ) {
|
600
|
+
if ( 97 <= (*p) && (*p) <= 102 )
|
601
|
+
goto st25;
|
602
|
+
} else
|
603
|
+
goto st25;
|
604
|
+
goto st0;
|
605
|
+
tr6:
|
606
|
+
#line 22 "http11_parser.rl"
|
607
|
+
{MARK(mark, p); }
|
608
|
+
goto st28;
|
556
609
|
st28:
|
557
610
|
if ( ++p == pe )
|
558
611
|
goto _out28;
|
559
612
|
case 28:
|
613
|
+
#line 614 "http11_parser.c"
|
614
|
+
switch( (*p) ) {
|
615
|
+
case 32: goto tr40;
|
616
|
+
case 34: goto st0;
|
617
|
+
case 35: goto tr41;
|
618
|
+
case 37: goto st29;
|
619
|
+
case 59: goto tr43;
|
620
|
+
case 60: goto st0;
|
621
|
+
case 62: goto st0;
|
622
|
+
case 63: goto tr44;
|
623
|
+
case 127: goto st0;
|
624
|
+
}
|
625
|
+
if ( 0 <= (*p) && (*p) <= 31 )
|
626
|
+
goto st0;
|
627
|
+
goto st28;
|
628
|
+
st29:
|
629
|
+
if ( ++p == pe )
|
630
|
+
goto _out29;
|
631
|
+
case 29:
|
560
632
|
if ( (*p) < 65 ) {
|
561
633
|
if ( 48 <= (*p) && (*p) <= 57 )
|
562
|
-
goto
|
634
|
+
goto st30;
|
563
635
|
} else if ( (*p) > 70 ) {
|
564
636
|
if ( 97 <= (*p) && (*p) <= 102 )
|
565
|
-
goto
|
637
|
+
goto st30;
|
566
638
|
} else
|
567
|
-
goto
|
568
|
-
goto
|
569
|
-
|
639
|
+
goto st30;
|
640
|
+
goto st0;
|
641
|
+
st30:
|
570
642
|
if ( ++p == pe )
|
571
|
-
goto
|
572
|
-
case
|
643
|
+
goto _out30;
|
644
|
+
case 30:
|
573
645
|
if ( (*p) < 65 ) {
|
574
646
|
if ( 48 <= (*p) && (*p) <= 57 )
|
575
|
-
goto
|
647
|
+
goto st28;
|
576
648
|
} else if ( (*p) > 70 ) {
|
577
649
|
if ( 97 <= (*p) && (*p) <= 102 )
|
578
|
-
goto
|
650
|
+
goto st28;
|
579
651
|
} else
|
580
|
-
goto
|
581
|
-
goto
|
582
|
-
|
583
|
-
#line
|
652
|
+
goto st28;
|
653
|
+
goto st0;
|
654
|
+
tr43:
|
655
|
+
#line 60 "http11_parser.rl"
|
584
656
|
{
|
585
657
|
if(parser->request_path != NULL)
|
586
658
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
587
659
|
}
|
588
|
-
goto st30;
|
589
|
-
st30:
|
590
|
-
if ( ++p == pe )
|
591
|
-
goto _out30;
|
592
|
-
case 30:
|
593
|
-
#line 594 "ext/http11/http11_parser.c"
|
594
|
-
switch( (*p) ) {
|
595
|
-
case 32: goto tr40;
|
596
|
-
case 37: goto tr41;
|
597
|
-
case 60: goto st1;
|
598
|
-
case 62: goto st1;
|
599
|
-
case 127: goto st1;
|
600
|
-
}
|
601
|
-
if ( (*p) > 31 ) {
|
602
|
-
if ( 34 <= (*p) && (*p) <= 35 )
|
603
|
-
goto st1;
|
604
|
-
} else if ( (*p) >= 0 )
|
605
|
-
goto st1;
|
606
|
-
goto tr39;
|
607
|
-
tr39:
|
608
|
-
#line 43 "ext/http11/http11_parser.rl"
|
609
|
-
{MARK(query_start, p); }
|
610
660
|
goto st31;
|
611
661
|
st31:
|
612
662
|
if ( ++p == pe )
|
613
663
|
goto _out31;
|
614
664
|
case 31:
|
615
|
-
#line
|
665
|
+
#line 666 "http11_parser.c"
|
616
666
|
switch( (*p) ) {
|
617
|
-
case 32: goto
|
667
|
+
case 32: goto tr8;
|
668
|
+
case 34: goto st0;
|
669
|
+
case 35: goto tr9;
|
618
670
|
case 37: goto st32;
|
619
|
-
case 60: goto
|
620
|
-
case 62: goto
|
621
|
-
case
|
671
|
+
case 60: goto st0;
|
672
|
+
case 62: goto st0;
|
673
|
+
case 63: goto st34;
|
674
|
+
case 127: goto st0;
|
622
675
|
}
|
623
|
-
if ( (*p)
|
624
|
-
|
625
|
-
goto st1;
|
626
|
-
} else if ( (*p) >= 0 )
|
627
|
-
goto st1;
|
676
|
+
if ( 0 <= (*p) && (*p) <= 31 )
|
677
|
+
goto st0;
|
628
678
|
goto st31;
|
629
|
-
tr41:
|
630
|
-
#line 43 "ext/http11/http11_parser.rl"
|
631
|
-
{MARK(query_start, p); }
|
632
|
-
goto st32;
|
633
679
|
st32:
|
634
680
|
if ( ++p == pe )
|
635
681
|
goto _out32;
|
636
682
|
case 32:
|
637
|
-
#line 638 "ext/http11/http11_parser.c"
|
638
683
|
if ( (*p) < 65 ) {
|
639
684
|
if ( 48 <= (*p) && (*p) <= 57 )
|
640
685
|
goto st33;
|
@@ -643,7 +688,7 @@ case 32:
|
|
643
688
|
goto st33;
|
644
689
|
} else
|
645
690
|
goto st33;
|
646
|
-
goto
|
691
|
+
goto st0;
|
647
692
|
st33:
|
648
693
|
if ( ++p == pe )
|
649
694
|
goto _out33;
|
@@ -656,85 +701,89 @@ case 33:
|
|
656
701
|
goto st31;
|
657
702
|
} else
|
658
703
|
goto st31;
|
659
|
-
goto
|
704
|
+
goto st0;
|
705
|
+
tr44:
|
706
|
+
#line 60 "http11_parser.rl"
|
707
|
+
{
|
708
|
+
if(parser->request_path != NULL)
|
709
|
+
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
710
|
+
}
|
711
|
+
goto st34;
|
660
712
|
st34:
|
661
713
|
if ( ++p == pe )
|
662
714
|
goto _out34;
|
663
715
|
case 34:
|
716
|
+
#line 717 "http11_parser.c"
|
664
717
|
switch( (*p) ) {
|
665
|
-
case 32: goto
|
666
|
-
case
|
667
|
-
case
|
718
|
+
case 32: goto tr51;
|
719
|
+
case 34: goto st0;
|
720
|
+
case 35: goto tr52;
|
721
|
+
case 37: goto tr53;
|
722
|
+
case 60: goto st0;
|
723
|
+
case 62: goto st0;
|
724
|
+
case 127: goto st0;
|
668
725
|
}
|
669
|
-
if ( (*p)
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
goto st35;
|
677
|
-
goto st1;
|
726
|
+
if ( 0 <= (*p) && (*p) <= 31 )
|
727
|
+
goto st0;
|
728
|
+
goto tr50;
|
729
|
+
tr50:
|
730
|
+
#line 49 "http11_parser.rl"
|
731
|
+
{MARK(query_start, p); }
|
732
|
+
goto st35;
|
678
733
|
st35:
|
679
734
|
if ( ++p == pe )
|
680
735
|
goto _out35;
|
681
736
|
case 35:
|
737
|
+
#line 738 "http11_parser.c"
|
682
738
|
switch( (*p) ) {
|
683
|
-
case 32: goto
|
684
|
-
case
|
685
|
-
case
|
739
|
+
case 32: goto tr55;
|
740
|
+
case 34: goto st0;
|
741
|
+
case 35: goto tr56;
|
742
|
+
case 37: goto st36;
|
743
|
+
case 60: goto st0;
|
744
|
+
case 62: goto st0;
|
745
|
+
case 127: goto st0;
|
686
746
|
}
|
687
|
-
if ( (*p)
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
goto st36;
|
695
|
-
goto st1;
|
747
|
+
if ( 0 <= (*p) && (*p) <= 31 )
|
748
|
+
goto st0;
|
749
|
+
goto st35;
|
750
|
+
tr53:
|
751
|
+
#line 49 "http11_parser.rl"
|
752
|
+
{MARK(query_start, p); }
|
753
|
+
goto st36;
|
696
754
|
st36:
|
697
755
|
if ( ++p == pe )
|
698
756
|
goto _out36;
|
699
757
|
case 36:
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
case 95: goto st37;
|
704
|
-
}
|
705
|
-
if ( (*p) < 48 ) {
|
706
|
-
if ( 45 <= (*p) && (*p) <= 46 )
|
758
|
+
#line 759 "http11_parser.c"
|
759
|
+
if ( (*p) < 65 ) {
|
760
|
+
if ( 48 <= (*p) && (*p) <= 57 )
|
707
761
|
goto st37;
|
708
|
-
} else if ( (*p) >
|
709
|
-
if (
|
762
|
+
} else if ( (*p) > 70 ) {
|
763
|
+
if ( 97 <= (*p) && (*p) <= 102 )
|
710
764
|
goto st37;
|
711
765
|
} else
|
712
766
|
goto st37;
|
713
|
-
goto
|
767
|
+
goto st0;
|
714
768
|
st37:
|
715
769
|
if ( ++p == pe )
|
716
770
|
goto _out37;
|
717
771
|
case 37:
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
if ( 45 <= (*p) && (*p) <= 46 )
|
725
|
-
goto st38;
|
726
|
-
} else if ( (*p) > 57 ) {
|
727
|
-
if ( 65 <= (*p) && (*p) <= 90 )
|
728
|
-
goto st38;
|
772
|
+
if ( (*p) < 65 ) {
|
773
|
+
if ( 48 <= (*p) && (*p) <= 57 )
|
774
|
+
goto st35;
|
775
|
+
} else if ( (*p) > 70 ) {
|
776
|
+
if ( 97 <= (*p) && (*p) <= 102 )
|
777
|
+
goto st35;
|
729
778
|
} else
|
730
|
-
goto
|
731
|
-
goto
|
779
|
+
goto st35;
|
780
|
+
goto st0;
|
732
781
|
st38:
|
733
782
|
if ( ++p == pe )
|
734
783
|
goto _out38;
|
735
784
|
case 38:
|
736
785
|
switch( (*p) ) {
|
737
|
-
case 32: goto
|
786
|
+
case 32: goto tr2;
|
738
787
|
case 36: goto st39;
|
739
788
|
case 95: goto st39;
|
740
789
|
}
|
@@ -746,13 +795,13 @@ case 38:
|
|
746
795
|
goto st39;
|
747
796
|
} else
|
748
797
|
goto st39;
|
749
|
-
goto
|
798
|
+
goto st0;
|
750
799
|
st39:
|
751
800
|
if ( ++p == pe )
|
752
801
|
goto _out39;
|
753
802
|
case 39:
|
754
803
|
switch( (*p) ) {
|
755
|
-
case 32: goto
|
804
|
+
case 32: goto tr2;
|
756
805
|
case 36: goto st40;
|
757
806
|
case 95: goto st40;
|
758
807
|
}
|
@@ -764,13 +813,13 @@ case 39:
|
|
764
813
|
goto st40;
|
765
814
|
} else
|
766
815
|
goto st40;
|
767
|
-
goto
|
816
|
+
goto st0;
|
768
817
|
st40:
|
769
818
|
if ( ++p == pe )
|
770
819
|
goto _out40;
|
771
820
|
case 40:
|
772
821
|
switch( (*p) ) {
|
773
|
-
case 32: goto
|
822
|
+
case 32: goto tr2;
|
774
823
|
case 36: goto st41;
|
775
824
|
case 95: goto st41;
|
776
825
|
}
|
@@ -782,13 +831,13 @@ case 40:
|
|
782
831
|
goto st41;
|
783
832
|
} else
|
784
833
|
goto st41;
|
785
|
-
goto
|
834
|
+
goto st0;
|
786
835
|
st41:
|
787
836
|
if ( ++p == pe )
|
788
837
|
goto _out41;
|
789
838
|
case 41:
|
790
839
|
switch( (*p) ) {
|
791
|
-
case 32: goto
|
840
|
+
case 32: goto tr2;
|
792
841
|
case 36: goto st42;
|
793
842
|
case 95: goto st42;
|
794
843
|
}
|
@@ -800,13 +849,13 @@ case 41:
|
|
800
849
|
goto st42;
|
801
850
|
} else
|
802
851
|
goto st42;
|
803
|
-
goto
|
852
|
+
goto st0;
|
804
853
|
st42:
|
805
854
|
if ( ++p == pe )
|
806
855
|
goto _out42;
|
807
856
|
case 42:
|
808
857
|
switch( (*p) ) {
|
809
|
-
case 32: goto
|
858
|
+
case 32: goto tr2;
|
810
859
|
case 36: goto st43;
|
811
860
|
case 95: goto st43;
|
812
861
|
}
|
@@ -818,13 +867,13 @@ case 42:
|
|
818
867
|
goto st43;
|
819
868
|
} else
|
820
869
|
goto st43;
|
821
|
-
goto
|
870
|
+
goto st0;
|
822
871
|
st43:
|
823
872
|
if ( ++p == pe )
|
824
873
|
goto _out43;
|
825
874
|
case 43:
|
826
875
|
switch( (*p) ) {
|
827
|
-
case 32: goto
|
876
|
+
case 32: goto tr2;
|
828
877
|
case 36: goto st44;
|
829
878
|
case 95: goto st44;
|
830
879
|
}
|
@@ -836,13 +885,13 @@ case 43:
|
|
836
885
|
goto st44;
|
837
886
|
} else
|
838
887
|
goto st44;
|
839
|
-
goto
|
888
|
+
goto st0;
|
840
889
|
st44:
|
841
890
|
if ( ++p == pe )
|
842
891
|
goto _out44;
|
843
892
|
case 44:
|
844
893
|
switch( (*p) ) {
|
845
|
-
case 32: goto
|
894
|
+
case 32: goto tr2;
|
846
895
|
case 36: goto st45;
|
847
896
|
case 95: goto st45;
|
848
897
|
}
|
@@ -854,13 +903,13 @@ case 44:
|
|
854
903
|
goto st45;
|
855
904
|
} else
|
856
905
|
goto st45;
|
857
|
-
goto
|
906
|
+
goto st0;
|
858
907
|
st45:
|
859
908
|
if ( ++p == pe )
|
860
909
|
goto _out45;
|
861
910
|
case 45:
|
862
911
|
switch( (*p) ) {
|
863
|
-
case 32: goto
|
912
|
+
case 32: goto tr2;
|
864
913
|
case 36: goto st46;
|
865
914
|
case 95: goto st46;
|
866
915
|
}
|
@@ -872,13 +921,13 @@ case 45:
|
|
872
921
|
goto st46;
|
873
922
|
} else
|
874
923
|
goto st46;
|
875
|
-
goto
|
924
|
+
goto st0;
|
876
925
|
st46:
|
877
926
|
if ( ++p == pe )
|
878
927
|
goto _out46;
|
879
928
|
case 46:
|
880
929
|
switch( (*p) ) {
|
881
|
-
case 32: goto
|
930
|
+
case 32: goto tr2;
|
882
931
|
case 36: goto st47;
|
883
932
|
case 95: goto st47;
|
884
933
|
}
|
@@ -890,13 +939,13 @@ case 46:
|
|
890
939
|
goto st47;
|
891
940
|
} else
|
892
941
|
goto st47;
|
893
|
-
goto
|
942
|
+
goto st0;
|
894
943
|
st47:
|
895
944
|
if ( ++p == pe )
|
896
945
|
goto _out47;
|
897
946
|
case 47:
|
898
947
|
switch( (*p) ) {
|
899
|
-
case 32: goto
|
948
|
+
case 32: goto tr2;
|
900
949
|
case 36: goto st48;
|
901
950
|
case 95: goto st48;
|
902
951
|
}
|
@@ -908,13 +957,13 @@ case 47:
|
|
908
957
|
goto st48;
|
909
958
|
} else
|
910
959
|
goto st48;
|
911
|
-
goto
|
960
|
+
goto st0;
|
912
961
|
st48:
|
913
962
|
if ( ++p == pe )
|
914
963
|
goto _out48;
|
915
964
|
case 48:
|
916
965
|
switch( (*p) ) {
|
917
|
-
case 32: goto
|
966
|
+
case 32: goto tr2;
|
918
967
|
case 36: goto st49;
|
919
968
|
case 95: goto st49;
|
920
969
|
}
|
@@ -926,13 +975,13 @@ case 48:
|
|
926
975
|
goto st49;
|
927
976
|
} else
|
928
977
|
goto st49;
|
929
|
-
goto
|
978
|
+
goto st0;
|
930
979
|
st49:
|
931
980
|
if ( ++p == pe )
|
932
981
|
goto _out49;
|
933
982
|
case 49:
|
934
983
|
switch( (*p) ) {
|
935
|
-
case 32: goto
|
984
|
+
case 32: goto tr2;
|
936
985
|
case 36: goto st50;
|
937
986
|
case 95: goto st50;
|
938
987
|
}
|
@@ -944,13 +993,13 @@ case 49:
|
|
944
993
|
goto st50;
|
945
994
|
} else
|
946
995
|
goto st50;
|
947
|
-
goto
|
996
|
+
goto st0;
|
948
997
|
st50:
|
949
998
|
if ( ++p == pe )
|
950
999
|
goto _out50;
|
951
1000
|
case 50:
|
952
1001
|
switch( (*p) ) {
|
953
|
-
case 32: goto
|
1002
|
+
case 32: goto tr2;
|
954
1003
|
case 36: goto st51;
|
955
1004
|
case 95: goto st51;
|
956
1005
|
}
|
@@ -962,13 +1011,13 @@ case 50:
|
|
962
1011
|
goto st51;
|
963
1012
|
} else
|
964
1013
|
goto st51;
|
965
|
-
goto
|
1014
|
+
goto st0;
|
966
1015
|
st51:
|
967
1016
|
if ( ++p == pe )
|
968
1017
|
goto _out51;
|
969
1018
|
case 51:
|
970
1019
|
switch( (*p) ) {
|
971
|
-
case 32: goto
|
1020
|
+
case 32: goto tr2;
|
972
1021
|
case 36: goto st52;
|
973
1022
|
case 95: goto st52;
|
974
1023
|
}
|
@@ -980,16 +1029,88 @@ case 51:
|
|
980
1029
|
goto st52;
|
981
1030
|
} else
|
982
1031
|
goto st52;
|
983
|
-
goto
|
1032
|
+
goto st0;
|
984
1033
|
st52:
|
985
1034
|
if ( ++p == pe )
|
986
1035
|
goto _out52;
|
987
1036
|
case 52:
|
1037
|
+
switch( (*p) ) {
|
1038
|
+
case 32: goto tr2;
|
1039
|
+
case 36: goto st53;
|
1040
|
+
case 95: goto st53;
|
1041
|
+
}
|
1042
|
+
if ( (*p) < 48 ) {
|
1043
|
+
if ( 45 <= (*p) && (*p) <= 46 )
|
1044
|
+
goto st53;
|
1045
|
+
} else if ( (*p) > 57 ) {
|
1046
|
+
if ( 65 <= (*p) && (*p) <= 90 )
|
1047
|
+
goto st53;
|
1048
|
+
} else
|
1049
|
+
goto st53;
|
1050
|
+
goto st0;
|
1051
|
+
st53:
|
1052
|
+
if ( ++p == pe )
|
1053
|
+
goto _out53;
|
1054
|
+
case 53:
|
1055
|
+
switch( (*p) ) {
|
1056
|
+
case 32: goto tr2;
|
1057
|
+
case 36: goto st54;
|
1058
|
+
case 95: goto st54;
|
1059
|
+
}
|
1060
|
+
if ( (*p) < 48 ) {
|
1061
|
+
if ( 45 <= (*p) && (*p) <= 46 )
|
1062
|
+
goto st54;
|
1063
|
+
} else if ( (*p) > 57 ) {
|
1064
|
+
if ( 65 <= (*p) && (*p) <= 90 )
|
1065
|
+
goto st54;
|
1066
|
+
} else
|
1067
|
+
goto st54;
|
1068
|
+
goto st0;
|
1069
|
+
st54:
|
1070
|
+
if ( ++p == pe )
|
1071
|
+
goto _out54;
|
1072
|
+
case 54:
|
1073
|
+
switch( (*p) ) {
|
1074
|
+
case 32: goto tr2;
|
1075
|
+
case 36: goto st55;
|
1076
|
+
case 95: goto st55;
|
1077
|
+
}
|
1078
|
+
if ( (*p) < 48 ) {
|
1079
|
+
if ( 45 <= (*p) && (*p) <= 46 )
|
1080
|
+
goto st55;
|
1081
|
+
} else if ( (*p) > 57 ) {
|
1082
|
+
if ( 65 <= (*p) && (*p) <= 90 )
|
1083
|
+
goto st55;
|
1084
|
+
} else
|
1085
|
+
goto st55;
|
1086
|
+
goto st0;
|
1087
|
+
st55:
|
1088
|
+
if ( ++p == pe )
|
1089
|
+
goto _out55;
|
1090
|
+
case 55:
|
1091
|
+
switch( (*p) ) {
|
1092
|
+
case 32: goto tr2;
|
1093
|
+
case 36: goto st56;
|
1094
|
+
case 95: goto st56;
|
1095
|
+
}
|
1096
|
+
if ( (*p) < 48 ) {
|
1097
|
+
if ( 45 <= (*p) && (*p) <= 46 )
|
1098
|
+
goto st56;
|
1099
|
+
} else if ( (*p) > 57 ) {
|
1100
|
+
if ( 65 <= (*p) && (*p) <= 90 )
|
1101
|
+
goto st56;
|
1102
|
+
} else
|
1103
|
+
goto st56;
|
1104
|
+
goto st0;
|
1105
|
+
st56:
|
1106
|
+
if ( ++p == pe )
|
1107
|
+
goto _out56;
|
1108
|
+
case 56:
|
988
1109
|
if ( (*p) == 32 )
|
989
|
-
goto
|
990
|
-
goto
|
1110
|
+
goto tr2;
|
1111
|
+
goto st0;
|
991
1112
|
}
|
992
|
-
|
1113
|
+
_out0: cs = 0; goto _out;
|
993
1114
|
_out2: cs = 2; goto _out;
|
994
1115
|
_out3: cs = 3; goto _out;
|
995
1116
|
_out4: cs = 4; goto _out;
|
@@ -1005,7 +1126,7 @@ case 52:
|
|
1005
1126
|
_out14: cs = 14; goto _out;
|
1006
1127
|
_out15: cs = 15; goto _out;
|
1007
1128
|
_out16: cs = 16; goto _out;
|
1008
|
-
|
1129
|
+
_out57: cs = 57; goto _out;
|
1009
1130
|
_out17: cs = 17; goto _out;
|
1010
1131
|
_out18: cs = 18; goto _out;
|
1011
1132
|
_out19: cs = 19; goto _out;
|
@@ -1042,10 +1163,14 @@ case 52:
|
|
1042
1163
|
_out50: cs = 50; goto _out;
|
1043
1164
|
_out51: cs = 51; goto _out;
|
1044
1165
|
_out52: cs = 52; goto _out;
|
1166
|
+
_out53: cs = 53; goto _out;
|
1167
|
+
_out54: cs = 54; goto _out;
|
1168
|
+
_out55: cs = 55; goto _out;
|
1169
|
+
_out56: cs = 56; goto _out;
|
1045
1170
|
|
1046
1171
|
_out: {}
|
1047
1172
|
}
|
1048
|
-
#line
|
1173
|
+
#line 109 "http11_parser.rl"
|
1049
1174
|
|
1050
1175
|
parser->cs = cs;
|
1051
1176
|
parser->nread += p - (buffer + off);
|
@@ -1060,8 +1185,8 @@ case 52:
|
|
1060
1185
|
if(parser->body_start) {
|
1061
1186
|
/* final \r\n combo encountered so stop right here */
|
1062
1187
|
|
1063
|
-
#line
|
1064
|
-
#line
|
1188
|
+
#line 1189 "http11_parser.c"
|
1189
|
+
#line 123 "http11_parser.rl"
|
1065
1190
|
parser->nread++;
|
1066
1191
|
}
|
1067
1192
|
|
@@ -1073,8 +1198,8 @@ int http_parser_finish(http_parser *parser)
|
|
1073
1198
|
int cs = parser->cs;
|
1074
1199
|
|
1075
1200
|
|
1076
|
-
#line
|
1077
|
-
#line
|
1201
|
+
#line 1202 "http11_parser.c"
|
1202
|
+
#line 134 "http11_parser.rl"
|
1078
1203
|
|
1079
1204
|
parser->cs = cs;
|
1080
1205
|
|