mongrel 0.3.13.3 → 0.3.13.4
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.
- data/Rakefile +5 -4
- data/bin/mongrel_rails +162 -169
- data/doc/rdoc/classes/IO.src/M000001.html +5 -5
- data/doc/rdoc/classes/IO.src/M000002.html +5 -5
- data/doc/rdoc/classes/Kernel.html +10 -10
- data/doc/rdoc/classes/Kernel.src/M000010.html +19 -0
- data/doc/rdoc/classes/Kernel.src/M000011.html +23 -0
- data/doc/rdoc/classes/Mongrel.html +27 -10
- data/doc/rdoc/classes/Mongrel/CGIWrapper.html +67 -54
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000101.html → M000112.html} +11 -10
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000102.html → M000113.html} +31 -31
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000103.html → M000114.html} +20 -20
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000115.html +32 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000105.html → M000116.html} +11 -11
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000106.html → M000117.html} +4 -4
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000107.html → M000118.html} +4 -4
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000108.html → M000119.html} +4 -4
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000109.html → M000120.html} +5 -5
- data/doc/rdoc/classes/Mongrel/Camping.html +5 -5
- data/doc/rdoc/classes/Mongrel/Camping.src/{M000048.html → M000039.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +10 -10
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/{M000049.html → M000040.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/{M000050.html → M000041.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.html +65 -65
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000016.html +24 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000017.html +42 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000018.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000029.html → M000019.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000030.html → M000020.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000031.html → M000021.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000032.html → M000022.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000033.html → M000023.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000034.html → M000024.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000035.html → M000025.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000026.html +11 -11
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000027.html +11 -29
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000028.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Registry.html +15 -15
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000039.html → M000029.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000040.html → M000030.html} +10 -6
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000031.html +58 -0
- data/doc/rdoc/classes/Mongrel/Configurator.html +115 -115
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000091.html +27 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000092.html +31 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000093.html +21 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000094.html +20 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000095.html +23 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000115.html → M000096.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000116.html → M000097.html} +24 -24
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000117.html → M000098.html} +5 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +39 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000119.html → M000100.html} +19 -19
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000120.html → M000101.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000121.html → M000102.html} +10 -10
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000122.html → M000103.html} +5 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000123.html → M000104.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000124.html → M000105.html} +8 -8
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +22 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/{M000126.html → M000107.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +34 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +18 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +23 -14
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +5 -18
- data/doc/rdoc/classes/Mongrel/Const.html +11 -6
- data/doc/rdoc/classes/Mongrel/DeflateFilter.html +10 -10
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000099.html → M000121.html} +5 -5
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000100.html → M000122.html} +14 -14
- data/doc/rdoc/classes/Mongrel/DirHandler.html +31 -31
- data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000058.html → M000049.html} +0 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000059.html → M000050.html} +0 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000060.html → M000051.html} +12 -16
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000052.html +63 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000062.html → M000053.html} +25 -25
- data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000063.html → M000054.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Error404Handler.html +10 -10
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000131.html → M000123.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000132.html → M000124.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.html +10 -10
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000072.html → M000064.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000073.html → M000065.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HttpHandler.html +15 -15
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000078.html → M000070.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000079.html → M000071.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000080.html → M000072.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +20 -20
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000022.html → M000012.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000023.html → M000013.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000024.html → M000014.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000025.html → M000015.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpParams.html +131 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.html +35 -35
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000051.html → M000042.html} +1 -1
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000052.html → M000043.html} +1 -1
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000053.html → M000044.html} +1 -1
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000054.html → M000045.html} +3 -3
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000055.html → M000046.html} +1 -1
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000056.html → M000047.html} +1 -1
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000057.html → M000048.html} +1 -1
- data/doc/rdoc/classes/Mongrel/HttpRequest.html +63 -24
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000130.html +47 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000131.html +37 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000132.html +29 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000139.html → M000133.html} +6 -6
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000140.html → M000134.html} +6 -6
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000141.html → M000135.html} +18 -18
- data/doc/rdoc/classes/Mongrel/HttpResponse.html +66 -72
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000073.html +25 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000074.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +26 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +22 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000085.html → M000077.html} +8 -8
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000086.html → M000078.html} +8 -8
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +31 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000088.html → M000080.html} +7 -7
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +7 -12
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +7 -7
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +7 -12
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000084.html +5 -9
- data/doc/rdoc/classes/Mongrel/HttpServer.html +58 -43
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000064.html → M000055.html} +11 -11
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000065.html → M000056.html} +76 -72
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000066.html → M000057.html} +18 -17
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000067.html → M000058.html} +7 -7
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000059.html +22 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000060.html +62 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000069.html → M000061.html} +20 -20
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000070.html → M000062.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000071.html → M000063.html} +8 -8
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +15 -15
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000042.html → M000032.html} +23 -25
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000043.html → M000033.html} +11 -11
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000044.html → M000034.html} +12 -12
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +30 -15
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/{M000045.html → M000035.html} +9 -8
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000036.html +54 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000037.html +21 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000038.html +25 -0
- data/doc/rdoc/classes/Mongrel/RedirectHandler.html +10 -10
- data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000136.html → M000128.html} +8 -8
- data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000137.html → M000129.html} +13 -13
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.html +16 -16
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000125.html +24 -0
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000134.html → M000126.html} +10 -10
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000135.html → M000127.html} +4 -4
- data/doc/rdoc/classes/{Stats.html → Mongrel/Stats.html} +44 -60
- data/doc/rdoc/classes/Mongrel/Stats.src/M000136.html +19 -0
- data/doc/rdoc/classes/Mongrel/Stats.src/M000137.html +23 -0
- data/doc/rdoc/classes/Mongrel/Stats.src/M000138.html +26 -0
- data/doc/rdoc/classes/Mongrel/Stats.src/M000139.html +18 -0
- data/doc/rdoc/classes/{Stats.src/M000009.html → Mongrel/Stats.src/M000140.html} +6 -6
- data/doc/rdoc/classes/Mongrel/Stats.src/M000141.html +18 -0
- data/doc/rdoc/classes/Mongrel/Stats.src/M000142.html +23 -0
- data/doc/rdoc/classes/Mongrel/Stats.src/M000143.html +20 -0
- data/doc/rdoc/classes/Mongrel/StatusHandler.html +20 -20
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000074.html → M000066.html} +4 -4
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000075.html → M000067.html} +10 -10
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000076.html → M000068.html} +28 -28
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000077.html → M000069.html} +6 -6
- data/doc/rdoc/classes/Mongrel/URIClassifier.html +30 -30
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000093.html → M000085.html} +4 -4
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000094.html → M000086.html} +4 -4
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000095.html → M000087.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000096.html → M000088.html} +1 -1
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000097.html → M000089.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000098.html → M000090.html} +1 -1
- data/doc/rdoc/classes/MongrelDbg.html +26 -26
- data/doc/rdoc/classes/MongrelDbg.src/M000005.html +24 -0
- data/doc/rdoc/classes/MongrelDbg.src/{M000016.html → M000006.html} +6 -6
- data/doc/rdoc/classes/MongrelDbg.src/{M000017.html → M000007.html} +8 -8
- data/doc/rdoc/classes/MongrelDbg.src/{M000018.html → M000008.html} +7 -7
- data/doc/rdoc/classes/MongrelDbg.src/{M000019.html → M000009.html} +4 -4
- data/doc/rdoc/classes/RequestLog/Access.html +5 -5
- data/doc/rdoc/classes/RequestLog/Access.src/{M000142.html → M000144.html} +5 -5
- data/doc/rdoc/classes/RequestLog/Files.html +5 -5
- data/doc/rdoc/classes/RequestLog/Files.src/{M000143.html → M000145.html} +5 -5
- data/doc/rdoc/classes/RequestLog/Objects.html +12 -6
- data/doc/rdoc/classes/RequestLog/Objects.src/M000147.html +51 -0
- data/doc/rdoc/classes/RequestLog/Params.html +5 -5
- data/doc/rdoc/classes/RequestLog/Params.src/{M000146.html → M000148.html} +5 -5
- data/doc/rdoc/classes/RequestLog/Threads.html +5 -5
- data/doc/rdoc/classes/RequestLog/Threads.src/{M000144.html → M000146.html} +20 -20
- data/doc/rdoc/classes/{ObjectTracker.html → Sync.html} +26 -45
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/COPYING.html +1 -1
- data/doc/rdoc/files/LICENSE.html +1 -1
- data/doc/rdoc/files/README.html +1 -1
- data/doc/rdoc/files/ext/http11/http11_c.html +1 -1
- data/doc/rdoc/files/lib/mongrel/camping_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/cgi_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/command_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/configurator_rb.html +111 -0
- data/doc/rdoc/files/lib/mongrel/debug_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/handlers_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/init_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/rails_rb.html +2 -1
- data/doc/rdoc/files/lib/mongrel/stats_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel_rb.html +2 -4
- data/doc/rdoc/fr_class_index.html +3 -2
- data/doc/rdoc/fr_file_index.html +1 -0
- data/doc/rdoc/fr_method_index.html +144 -142
- data/ext/http11/http11.c +69 -52
- data/ext/http11/http11_parser.c +366 -282
- data/ext/http11/http11_parser.h +2 -0
- data/ext/http11/http11_parser.rl +192 -0
- data/lib/mongrel.rb +127 -433
- data/lib/mongrel/cgi.rb +19 -6
- data/lib/mongrel/command.rb +15 -3
- data/lib/mongrel/configurator.rb +374 -0
- data/lib/mongrel/debug.rb +47 -56
- data/lib/mongrel/handlers.rb +16 -20
- data/lib/mongrel/rails.rb +36 -20
- data/lib/mongrel/stats.rb +60 -58
- data/test/test_conditional.rb +37 -30
- data/test/test_http11.rb +14 -14
- data/test/test_stats.rb +2 -2
- data/test/test_ws.rb +4 -2
- data/tools/rakehelp.rb +4 -4
- metadata +262 -260
- data/doc/rdoc/classes/Kernel.src/M000020.html +0 -19
- data/doc/rdoc/classes/Kernel.src/M000021.html +0 -23
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000104.html +0 -27
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000036.html +0 -24
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000037.html +0 -24
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000038.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000041.html +0 -50
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +0 -20
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +0 -20
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +0 -23
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000118.html +0 -30
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000125.html +0 -25
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000127.html +0 -35
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000128.html +0 -18
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000129.html +0 -33
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000130.html +0 -18
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000061.html +0 -63
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000138.html +0 -56
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000087.html +0 -31
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000089.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000090.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000091.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000092.html +0 -18
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000068.html +0 -50
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000046.html +0 -51
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000047.html +0 -23
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000133.html +0 -24
- data/doc/rdoc/classes/MongrelDbg.src/M000015.html +0 -19
- data/doc/rdoc/classes/ObjectTracker.src/M000013.html +0 -27
- data/doc/rdoc/classes/ObjectTracker.src/M000014.html +0 -44
- data/doc/rdoc/classes/RequestLog/Objects.src/M000145.html +0 -19
- data/doc/rdoc/classes/Stats.src/M000005.html +0 -19
- data/doc/rdoc/classes/Stats.src/M000006.html +0 -23
- data/doc/rdoc/classes/Stats.src/M000007.html +0 -26
- data/doc/rdoc/classes/Stats.src/M000008.html +0 -18
- data/doc/rdoc/classes/Stats.src/M000010.html +0 -18
- data/doc/rdoc/classes/Stats.src/M000011.html +0 -23
- data/doc/rdoc/classes/Stats.src/M000012.html +0 -20
- data/lib/http11.so +0 -0
data/ext/http11/http11_parser.c
CHANGED
|
@@ -15,59 +15,58 @@
|
|
|
15
15
|
#define PTR_TO(F) (buffer + parser->F)
|
|
16
16
|
|
|
17
17
|
/** machine **/
|
|
18
|
-
#line
|
|
18
|
+
#line 114 "ext/http11/http11_parser.rl"
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
/** Data **/
|
|
22
22
|
|
|
23
23
|
#line 24 "ext/http11/http11_parser.c"
|
|
24
|
-
static int http_parser_start = 0;
|
|
24
|
+
static const int http_parser_start = 0;
|
|
25
25
|
|
|
26
|
-
static int http_parser_first_final =
|
|
26
|
+
static const int http_parser_first_final = 53;
|
|
27
27
|
|
|
28
|
-
static int http_parser_error = 1;
|
|
28
|
+
static const int http_parser_error = 1;
|
|
29
29
|
|
|
30
|
-
#line
|
|
30
|
+
#line 118 "ext/http11/http11_parser.rl"
|
|
31
31
|
|
|
32
32
|
int http_parser_init(http_parser *parser) {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
int cs = 0;
|
|
34
|
+
|
|
35
35
|
#line 36 "ext/http11/http11_parser.c"
|
|
36
36
|
{
|
|
37
37
|
cs = http_parser_start;
|
|
38
38
|
}
|
|
39
|
-
#line
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
#line 122 "ext/http11/http11_parser.rl"
|
|
40
|
+
parser->cs = cs;
|
|
41
|
+
parser->body_start = 0;
|
|
42
|
+
parser->content_len = 0;
|
|
43
|
+
parser->mark = 0;
|
|
44
|
+
parser->nread = 0;
|
|
45
|
+
parser->field_len = 0;
|
|
46
|
+
parser->field_start = 0;
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
return(1);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
/** exec **/
|
|
53
53
|
size_t http_parser_execute(http_parser *parser, const char *buffer, size_t len, size_t off) {
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
const char *p, *pe;
|
|
55
|
+
int cs = parser->cs;
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
assert(off <= len && "offset past end of buffer");
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
p = buffer+off;
|
|
60
|
+
pe = buffer+len;
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
assert(*pe == '\0' && "pointer does not end on NUL");
|
|
63
|
+
assert(pe - p == len - off && "pointers aren't same distance");
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
#line 68 "ext/http11/http11_parser.c"
|
|
68
68
|
{
|
|
69
|
-
p
|
|
70
|
-
if ( ++p == pe )
|
|
69
|
+
if ( p == pe )
|
|
71
70
|
goto _out;
|
|
72
71
|
switch ( cs )
|
|
73
72
|
{
|
|
@@ -95,33 +94,33 @@ st2:
|
|
|
95
94
|
if ( ++p == pe )
|
|
96
95
|
goto _out2;
|
|
97
96
|
case 2:
|
|
98
|
-
#line
|
|
97
|
+
#line 98 "ext/http11/http11_parser.c"
|
|
99
98
|
switch( (*p) ) {
|
|
100
|
-
case 32: goto
|
|
101
|
-
case 36: goto
|
|
102
|
-
case 95: goto
|
|
99
|
+
case 32: goto tr17;
|
|
100
|
+
case 36: goto st34;
|
|
101
|
+
case 95: goto st34;
|
|
103
102
|
}
|
|
104
103
|
if ( (*p) < 48 ) {
|
|
105
104
|
if ( 45 <= (*p) && (*p) <= 46 )
|
|
106
|
-
goto
|
|
105
|
+
goto st34;
|
|
107
106
|
} else if ( (*p) > 57 ) {
|
|
108
107
|
if ( 65 <= (*p) && (*p) <= 90 )
|
|
109
|
-
goto
|
|
108
|
+
goto st34;
|
|
110
109
|
} else
|
|
111
|
-
goto
|
|
110
|
+
goto st34;
|
|
112
111
|
goto st1;
|
|
113
|
-
|
|
114
|
-
#line
|
|
112
|
+
tr17:
|
|
113
|
+
#line 34 "ext/http11/http11_parser.rl"
|
|
115
114
|
{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
if(parser->request_method != NULL)
|
|
116
|
+
parser->request_method(parser->data, PTR_TO(mark), LEN(mark, p));
|
|
117
|
+
}
|
|
119
118
|
goto st3;
|
|
120
119
|
st3:
|
|
121
120
|
if ( ++p == pe )
|
|
122
121
|
goto _out3;
|
|
123
122
|
case 3:
|
|
124
|
-
#line
|
|
123
|
+
#line 124 "ext/http11/http11_parser.c"
|
|
125
124
|
switch( (*p) ) {
|
|
126
125
|
case 42: goto tr10;
|
|
127
126
|
case 43: goto tr11;
|
|
@@ -145,29 +144,60 @@ st4:
|
|
|
145
144
|
if ( ++p == pe )
|
|
146
145
|
goto _out4;
|
|
147
146
|
case 4:
|
|
148
|
-
#line
|
|
147
|
+
#line 148 "ext/http11/http11_parser.c"
|
|
149
148
|
if ( (*p) == 32 )
|
|
150
|
-
goto
|
|
149
|
+
goto tr19;
|
|
151
150
|
goto st1;
|
|
152
|
-
|
|
153
|
-
#line
|
|
151
|
+
tr19:
|
|
152
|
+
#line 38 "ext/http11/http11_parser.rl"
|
|
154
153
|
{
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
154
|
+
if(parser->request_uri != NULL)
|
|
155
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
|
156
|
+
}
|
|
158
157
|
goto st5;
|
|
159
|
-
|
|
160
|
-
#line
|
|
158
|
+
tr28:
|
|
159
|
+
#line 44 "ext/http11/http11_parser.rl"
|
|
161
160
|
{
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
if(parser->query_string != NULL)
|
|
162
|
+
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
|
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));
|
|
168
|
+
}
|
|
169
|
+
goto st5;
|
|
170
|
+
tr31:
|
|
171
|
+
#line 54 "ext/http11/http11_parser.rl"
|
|
172
|
+
{
|
|
173
|
+
if(parser->request_path != NULL)
|
|
174
|
+
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
|
175
|
+
}
|
|
176
|
+
#line 38 "ext/http11/http11_parser.rl"
|
|
177
|
+
{
|
|
178
|
+
if(parser->request_uri != NULL)
|
|
179
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
|
180
|
+
}
|
|
181
|
+
goto st5;
|
|
182
|
+
tr40:
|
|
183
|
+
#line 43 "ext/http11/http11_parser.rl"
|
|
184
|
+
{MARK(query_start, p); }
|
|
185
|
+
#line 44 "ext/http11/http11_parser.rl"
|
|
186
|
+
{
|
|
187
|
+
if(parser->query_string != NULL)
|
|
188
|
+
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
|
189
|
+
}
|
|
190
|
+
#line 38 "ext/http11/http11_parser.rl"
|
|
191
|
+
{
|
|
192
|
+
if(parser->request_uri != NULL)
|
|
193
|
+
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
|
194
|
+
}
|
|
165
195
|
goto st5;
|
|
166
196
|
st5:
|
|
167
197
|
if ( ++p == pe )
|
|
168
198
|
goto _out5;
|
|
169
199
|
case 5:
|
|
170
|
-
#line
|
|
200
|
+
#line 201 "ext/http11/http11_parser.c"
|
|
171
201
|
if ( (*p) == 72 )
|
|
172
202
|
goto tr3;
|
|
173
203
|
goto st1;
|
|
@@ -179,7 +209,7 @@ st6:
|
|
|
179
209
|
if ( ++p == pe )
|
|
180
210
|
goto _out6;
|
|
181
211
|
case 6:
|
|
182
|
-
#line
|
|
212
|
+
#line 213 "ext/http11/http11_parser.c"
|
|
183
213
|
if ( (*p) == 84 )
|
|
184
214
|
goto st7;
|
|
185
215
|
goto st1;
|
|
@@ -232,30 +262,30 @@ st13:
|
|
|
232
262
|
goto _out13;
|
|
233
263
|
case 13:
|
|
234
264
|
if ( (*p) == 13 )
|
|
235
|
-
goto
|
|
265
|
+
goto tr22;
|
|
236
266
|
if ( 48 <= (*p) && (*p) <= 57 )
|
|
237
267
|
goto st13;
|
|
238
268
|
goto st1;
|
|
239
|
-
|
|
240
|
-
#line
|
|
269
|
+
tr22:
|
|
270
|
+
#line 49 "ext/http11/http11_parser.rl"
|
|
241
271
|
{
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
272
|
+
if(parser->http_version != NULL)
|
|
273
|
+
parser->http_version(parser->data, PTR_TO(mark), LEN(mark, p));
|
|
274
|
+
}
|
|
245
275
|
goto st14;
|
|
246
|
-
|
|
247
|
-
#line
|
|
276
|
+
tr36:
|
|
277
|
+
#line 29 "ext/http11/http11_parser.rl"
|
|
248
278
|
{
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
279
|
+
if(parser->http_field != NULL) {
|
|
280
|
+
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
|
281
|
+
}
|
|
282
|
+
}
|
|
253
283
|
goto st14;
|
|
254
284
|
st14:
|
|
255
285
|
if ( ++p == pe )
|
|
256
286
|
goto _out14;
|
|
257
287
|
case 14:
|
|
258
|
-
#line
|
|
288
|
+
#line 289 "ext/http11/http11_parser.c"
|
|
259
289
|
if ( (*p) == 10 )
|
|
260
290
|
goto st15;
|
|
261
291
|
goto st1;
|
|
@@ -265,59 +295,59 @@ st15:
|
|
|
265
295
|
case 15:
|
|
266
296
|
switch( (*p) ) {
|
|
267
297
|
case 13: goto st16;
|
|
268
|
-
case 33: goto
|
|
269
|
-
case 124: goto
|
|
270
|
-
case 126: goto
|
|
298
|
+
case 33: goto tr21;
|
|
299
|
+
case 124: goto tr21;
|
|
300
|
+
case 126: goto tr21;
|
|
271
301
|
}
|
|
272
302
|
if ( (*p) < 45 ) {
|
|
273
303
|
if ( (*p) > 39 ) {
|
|
274
304
|
if ( 42 <= (*p) && (*p) <= 43 )
|
|
275
|
-
goto
|
|
305
|
+
goto tr21;
|
|
276
306
|
} else if ( (*p) >= 35 )
|
|
277
|
-
goto
|
|
307
|
+
goto tr21;
|
|
278
308
|
} else if ( (*p) > 46 ) {
|
|
279
309
|
if ( (*p) < 65 ) {
|
|
280
310
|
if ( 48 <= (*p) && (*p) <= 57 )
|
|
281
|
-
goto
|
|
311
|
+
goto tr21;
|
|
282
312
|
} else if ( (*p) > 90 ) {
|
|
283
313
|
if ( 94 <= (*p) && (*p) <= 122 )
|
|
284
|
-
goto
|
|
314
|
+
goto tr21;
|
|
285
315
|
} else
|
|
286
|
-
goto
|
|
316
|
+
goto tr21;
|
|
287
317
|
} else
|
|
288
|
-
goto
|
|
318
|
+
goto tr21;
|
|
289
319
|
goto st1;
|
|
290
320
|
st16:
|
|
291
321
|
if ( ++p == pe )
|
|
292
322
|
goto _out16;
|
|
293
323
|
case 16:
|
|
294
324
|
if ( (*p) == 10 )
|
|
295
|
-
goto
|
|
325
|
+
goto tr25;
|
|
296
326
|
goto st1;
|
|
297
|
-
|
|
298
|
-
#line
|
|
327
|
+
tr25:
|
|
328
|
+
#line 59 "ext/http11/http11_parser.rl"
|
|
299
329
|
{
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
goto
|
|
306
|
-
|
|
330
|
+
parser->body_start = p - buffer + 1;
|
|
331
|
+
if(parser->header_done != NULL)
|
|
332
|
+
parser->header_done(parser->data, p + 1, pe - p - 1);
|
|
333
|
+
goto _out53;
|
|
334
|
+
}
|
|
335
|
+
goto st53;
|
|
336
|
+
st53:
|
|
307
337
|
if ( ++p == pe )
|
|
308
|
-
goto
|
|
309
|
-
case
|
|
310
|
-
#line
|
|
338
|
+
goto _out53;
|
|
339
|
+
case 53:
|
|
340
|
+
#line 341 "ext/http11/http11_parser.c"
|
|
311
341
|
goto st1;
|
|
312
|
-
|
|
313
|
-
#line
|
|
342
|
+
tr21:
|
|
343
|
+
#line 23 "ext/http11/http11_parser.rl"
|
|
314
344
|
{ MARK(field_start, p); }
|
|
315
345
|
goto st17;
|
|
316
346
|
st17:
|
|
317
347
|
if ( ++p == pe )
|
|
318
348
|
goto _out17;
|
|
319
349
|
case 17:
|
|
320
|
-
#line
|
|
350
|
+
#line 351 "ext/http11/http11_parser.c"
|
|
321
351
|
switch( (*p) ) {
|
|
322
352
|
case 33: goto st17;
|
|
323
353
|
case 58: goto tr16;
|
|
@@ -343,75 +373,74 @@ case 17:
|
|
|
343
373
|
goto st17;
|
|
344
374
|
goto st1;
|
|
345
375
|
tr16:
|
|
346
|
-
#line
|
|
376
|
+
#line 24 "ext/http11/http11_parser.rl"
|
|
347
377
|
{
|
|
348
|
-
|
|
349
|
-
|
|
378
|
+
parser->field_len = LEN(field_start, p);
|
|
379
|
+
}
|
|
380
|
+
goto st18;
|
|
381
|
+
tr38:
|
|
382
|
+
#line 28 "ext/http11/http11_parser.rl"
|
|
383
|
+
{ MARK(mark, p); }
|
|
350
384
|
goto st18;
|
|
351
385
|
st18:
|
|
352
386
|
if ( ++p == pe )
|
|
353
387
|
goto _out18;
|
|
354
388
|
case 18:
|
|
355
|
-
#line
|
|
356
|
-
|
|
357
|
-
goto
|
|
358
|
-
|
|
389
|
+
#line 390 "ext/http11/http11_parser.c"
|
|
390
|
+
switch( (*p) ) {
|
|
391
|
+
case 13: goto tr36;
|
|
392
|
+
case 32: goto tr38;
|
|
393
|
+
}
|
|
394
|
+
goto tr37;
|
|
395
|
+
tr37:
|
|
396
|
+
#line 28 "ext/http11/http11_parser.rl"
|
|
397
|
+
{ MARK(mark, p); }
|
|
398
|
+
goto st19;
|
|
359
399
|
st19:
|
|
360
400
|
if ( ++p == pe )
|
|
361
401
|
goto _out19;
|
|
362
402
|
case 19:
|
|
403
|
+
#line 404 "ext/http11/http11_parser.c"
|
|
363
404
|
if ( (*p) == 13 )
|
|
364
|
-
goto
|
|
365
|
-
goto
|
|
366
|
-
|
|
367
|
-
#line
|
|
368
|
-
{
|
|
405
|
+
goto tr36;
|
|
406
|
+
goto st19;
|
|
407
|
+
tr11:
|
|
408
|
+
#line 20 "ext/http11/http11_parser.rl"
|
|
409
|
+
{MARK(mark, p); }
|
|
369
410
|
goto st20;
|
|
370
411
|
st20:
|
|
371
412
|
if ( ++p == pe )
|
|
372
413
|
goto _out20;
|
|
373
414
|
case 20:
|
|
374
|
-
#line
|
|
375
|
-
if ( (*p) == 13 )
|
|
376
|
-
goto tr35;
|
|
377
|
-
goto st20;
|
|
378
|
-
tr11:
|
|
379
|
-
#line 20 "ext/http11/http11_parser.rl"
|
|
380
|
-
{MARK(mark, p); }
|
|
381
|
-
goto st21;
|
|
382
|
-
st21:
|
|
383
|
-
if ( ++p == pe )
|
|
384
|
-
goto _out21;
|
|
385
|
-
case 21:
|
|
386
|
-
#line 387 "ext/http11/http11_parser.c"
|
|
415
|
+
#line 416 "ext/http11/http11_parser.c"
|
|
387
416
|
switch( (*p) ) {
|
|
388
|
-
case 43: goto
|
|
389
|
-
case 58: goto
|
|
417
|
+
case 43: goto st20;
|
|
418
|
+
case 58: goto st21;
|
|
390
419
|
}
|
|
391
420
|
if ( (*p) < 48 ) {
|
|
392
421
|
if ( 45 <= (*p) && (*p) <= 46 )
|
|
393
|
-
goto
|
|
422
|
+
goto st20;
|
|
394
423
|
} else if ( (*p) > 57 ) {
|
|
395
424
|
if ( (*p) > 90 ) {
|
|
396
425
|
if ( 97 <= (*p) && (*p) <= 122 )
|
|
397
|
-
goto
|
|
426
|
+
goto st20;
|
|
398
427
|
} else if ( (*p) >= 65 )
|
|
399
|
-
goto
|
|
428
|
+
goto st20;
|
|
400
429
|
} else
|
|
401
|
-
goto
|
|
430
|
+
goto st20;
|
|
402
431
|
goto st1;
|
|
403
432
|
tr13:
|
|
404
433
|
#line 20 "ext/http11/http11_parser.rl"
|
|
405
434
|
{MARK(mark, p); }
|
|
406
|
-
goto
|
|
407
|
-
|
|
435
|
+
goto st21;
|
|
436
|
+
st21:
|
|
408
437
|
if ( ++p == pe )
|
|
409
|
-
goto
|
|
410
|
-
case
|
|
411
|
-
#line
|
|
438
|
+
goto _out21;
|
|
439
|
+
case 21:
|
|
440
|
+
#line 441 "ext/http11/http11_parser.c"
|
|
412
441
|
switch( (*p) ) {
|
|
413
|
-
case 32: goto
|
|
414
|
-
case 37: goto
|
|
442
|
+
case 32: goto tr19;
|
|
443
|
+
case 37: goto st22;
|
|
415
444
|
case 60: goto st1;
|
|
416
445
|
case 62: goto st1;
|
|
417
446
|
case 127: goto st1;
|
|
@@ -421,48 +450,49 @@ case 22:
|
|
|
421
450
|
goto st1;
|
|
422
451
|
} else if ( (*p) >= 0 )
|
|
423
452
|
goto st1;
|
|
424
|
-
goto
|
|
425
|
-
|
|
453
|
+
goto st21;
|
|
454
|
+
st22:
|
|
426
455
|
if ( ++p == pe )
|
|
427
|
-
goto
|
|
428
|
-
case
|
|
456
|
+
goto _out22;
|
|
457
|
+
case 22:
|
|
429
458
|
if ( (*p) < 65 ) {
|
|
430
459
|
if ( 48 <= (*p) && (*p) <= 57 )
|
|
431
|
-
goto
|
|
460
|
+
goto st23;
|
|
432
461
|
} else if ( (*p) > 70 ) {
|
|
433
462
|
if ( 97 <= (*p) && (*p) <= 102 )
|
|
434
|
-
goto
|
|
463
|
+
goto st23;
|
|
435
464
|
} else
|
|
436
|
-
goto
|
|
465
|
+
goto st23;
|
|
437
466
|
goto st1;
|
|
438
|
-
|
|
467
|
+
st23:
|
|
439
468
|
if ( ++p == pe )
|
|
440
|
-
goto
|
|
441
|
-
case
|
|
469
|
+
goto _out23;
|
|
470
|
+
case 23:
|
|
442
471
|
if ( (*p) < 65 ) {
|
|
443
472
|
if ( 48 <= (*p) && (*p) <= 57 )
|
|
444
|
-
goto
|
|
473
|
+
goto st21;
|
|
445
474
|
} else if ( (*p) > 70 ) {
|
|
446
475
|
if ( 97 <= (*p) && (*p) <= 102 )
|
|
447
|
-
goto
|
|
476
|
+
goto st21;
|
|
448
477
|
} else
|
|
449
|
-
goto
|
|
478
|
+
goto st21;
|
|
450
479
|
goto st1;
|
|
451
480
|
tr12:
|
|
452
481
|
#line 20 "ext/http11/http11_parser.rl"
|
|
453
482
|
{MARK(mark, p); }
|
|
454
|
-
goto
|
|
455
|
-
|
|
483
|
+
goto st24;
|
|
484
|
+
st24:
|
|
456
485
|
if ( ++p == pe )
|
|
457
|
-
goto
|
|
458
|
-
case
|
|
459
|
-
#line
|
|
486
|
+
goto _out24;
|
|
487
|
+
case 24:
|
|
488
|
+
#line 489 "ext/http11/http11_parser.c"
|
|
460
489
|
switch( (*p) ) {
|
|
461
|
-
case 32: goto
|
|
462
|
-
case 37: goto
|
|
490
|
+
case 32: goto tr31;
|
|
491
|
+
case 37: goto st25;
|
|
492
|
+
case 59: goto tr33;
|
|
463
493
|
case 60: goto st1;
|
|
464
494
|
case 62: goto st1;
|
|
465
|
-
case 63: goto
|
|
495
|
+
case 63: goto tr34;
|
|
466
496
|
case 127: goto st1;
|
|
467
497
|
}
|
|
468
498
|
if ( (*p) > 31 ) {
|
|
@@ -470,50 +500,51 @@ case 25:
|
|
|
470
500
|
goto st1;
|
|
471
501
|
} else if ( (*p) >= 0 )
|
|
472
502
|
goto st1;
|
|
473
|
-
goto
|
|
474
|
-
|
|
503
|
+
goto st24;
|
|
504
|
+
st25:
|
|
475
505
|
if ( ++p == pe )
|
|
476
|
-
goto
|
|
477
|
-
case
|
|
506
|
+
goto _out25;
|
|
507
|
+
case 25:
|
|
478
508
|
if ( (*p) < 65 ) {
|
|
479
509
|
if ( 48 <= (*p) && (*p) <= 57 )
|
|
480
|
-
goto
|
|
510
|
+
goto st26;
|
|
481
511
|
} else if ( (*p) > 70 ) {
|
|
482
512
|
if ( 97 <= (*p) && (*p) <= 102 )
|
|
483
|
-
goto
|
|
513
|
+
goto st26;
|
|
484
514
|
} else
|
|
485
|
-
goto
|
|
515
|
+
goto st26;
|
|
486
516
|
goto st1;
|
|
487
|
-
|
|
517
|
+
st26:
|
|
488
518
|
if ( ++p == pe )
|
|
489
|
-
goto
|
|
490
|
-
case
|
|
519
|
+
goto _out26;
|
|
520
|
+
case 26:
|
|
491
521
|
if ( (*p) < 65 ) {
|
|
492
522
|
if ( 48 <= (*p) && (*p) <= 57 )
|
|
493
|
-
goto
|
|
523
|
+
goto st24;
|
|
494
524
|
} else if ( (*p) > 70 ) {
|
|
495
525
|
if ( 97 <= (*p) && (*p) <= 102 )
|
|
496
|
-
goto
|
|
526
|
+
goto st24;
|
|
497
527
|
} else
|
|
498
|
-
goto
|
|
528
|
+
goto st24;
|
|
499
529
|
goto st1;
|
|
500
|
-
|
|
501
|
-
#line
|
|
502
|
-
{
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
goto
|
|
507
|
-
|
|
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;
|
|
537
|
+
st27:
|
|
508
538
|
if ( ++p == pe )
|
|
509
|
-
goto
|
|
510
|
-
case
|
|
511
|
-
#line
|
|
539
|
+
goto _out27;
|
|
540
|
+
case 27:
|
|
541
|
+
#line 542 "ext/http11/http11_parser.c"
|
|
512
542
|
switch( (*p) ) {
|
|
513
|
-
case 32: goto
|
|
514
|
-
case 37: goto
|
|
543
|
+
case 32: goto tr19;
|
|
544
|
+
case 37: goto st28;
|
|
515
545
|
case 60: goto st1;
|
|
516
546
|
case 62: goto st1;
|
|
547
|
+
case 63: goto st30;
|
|
517
548
|
case 127: goto st1;
|
|
518
549
|
}
|
|
519
550
|
if ( (*p) > 31 ) {
|
|
@@ -521,19 +552,48 @@ case 28:
|
|
|
521
552
|
goto st1;
|
|
522
553
|
} else if ( (*p) >= 0 )
|
|
523
554
|
goto st1;
|
|
524
|
-
goto
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
555
|
+
goto st27;
|
|
556
|
+
st28:
|
|
557
|
+
if ( ++p == pe )
|
|
558
|
+
goto _out28;
|
|
559
|
+
case 28:
|
|
560
|
+
if ( (*p) < 65 ) {
|
|
561
|
+
if ( 48 <= (*p) && (*p) <= 57 )
|
|
562
|
+
goto st29;
|
|
563
|
+
} else if ( (*p) > 70 ) {
|
|
564
|
+
if ( 97 <= (*p) && (*p) <= 102 )
|
|
565
|
+
goto st29;
|
|
566
|
+
} else
|
|
567
|
+
goto st29;
|
|
568
|
+
goto st1;
|
|
529
569
|
st29:
|
|
530
570
|
if ( ++p == pe )
|
|
531
571
|
goto _out29;
|
|
532
572
|
case 29:
|
|
533
|
-
|
|
573
|
+
if ( (*p) < 65 ) {
|
|
574
|
+
if ( 48 <= (*p) && (*p) <= 57 )
|
|
575
|
+
goto st27;
|
|
576
|
+
} else if ( (*p) > 70 ) {
|
|
577
|
+
if ( 97 <= (*p) && (*p) <= 102 )
|
|
578
|
+
goto st27;
|
|
579
|
+
} else
|
|
580
|
+
goto st27;
|
|
581
|
+
goto st1;
|
|
582
|
+
tr34:
|
|
583
|
+
#line 54 "ext/http11/http11_parser.rl"
|
|
584
|
+
{
|
|
585
|
+
if(parser->request_path != NULL)
|
|
586
|
+
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
|
587
|
+
}
|
|
588
|
+
goto st30;
|
|
589
|
+
st30:
|
|
590
|
+
if ( ++p == pe )
|
|
591
|
+
goto _out30;
|
|
592
|
+
case 30:
|
|
593
|
+
#line 594 "ext/http11/http11_parser.c"
|
|
534
594
|
switch( (*p) ) {
|
|
535
|
-
case 32: goto
|
|
536
|
-
case 37: goto
|
|
595
|
+
case 32: goto tr40;
|
|
596
|
+
case 37: goto tr41;
|
|
537
597
|
case 60: goto st1;
|
|
538
598
|
case 62: goto st1;
|
|
539
599
|
case 127: goto st1;
|
|
@@ -543,52 +603,43 @@ case 29:
|
|
|
543
603
|
goto st1;
|
|
544
604
|
} else if ( (*p) >= 0 )
|
|
545
605
|
goto st1;
|
|
546
|
-
goto
|
|
547
|
-
|
|
548
|
-
#line
|
|
549
|
-
{MARK(
|
|
550
|
-
goto
|
|
551
|
-
st30:
|
|
552
|
-
if ( ++p == pe )
|
|
553
|
-
goto _out30;
|
|
554
|
-
case 30:
|
|
555
|
-
#line 556 "ext/http11/http11_parser.c"
|
|
556
|
-
if ( (*p) < 65 ) {
|
|
557
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
|
558
|
-
goto st31;
|
|
559
|
-
} else if ( (*p) > 70 ) {
|
|
560
|
-
if ( 97 <= (*p) && (*p) <= 102 )
|
|
561
|
-
goto st31;
|
|
562
|
-
} else
|
|
563
|
-
goto st31;
|
|
564
|
-
goto st1;
|
|
606
|
+
goto tr39;
|
|
607
|
+
tr39:
|
|
608
|
+
#line 43 "ext/http11/http11_parser.rl"
|
|
609
|
+
{MARK(query_start, p); }
|
|
610
|
+
goto st31;
|
|
565
611
|
st31:
|
|
566
612
|
if ( ++p == pe )
|
|
567
613
|
goto _out31;
|
|
568
614
|
case 31:
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
615
|
+
#line 616 "ext/http11/http11_parser.c"
|
|
616
|
+
switch( (*p) ) {
|
|
617
|
+
case 32: goto tr28;
|
|
618
|
+
case 37: goto st32;
|
|
619
|
+
case 60: goto st1;
|
|
620
|
+
case 62: goto st1;
|
|
621
|
+
case 127: goto st1;
|
|
622
|
+
}
|
|
623
|
+
if ( (*p) > 31 ) {
|
|
624
|
+
if ( 34 <= (*p) && (*p) <= 35 )
|
|
625
|
+
goto st1;
|
|
626
|
+
} else if ( (*p) >= 0 )
|
|
627
|
+
goto st1;
|
|
628
|
+
goto st31;
|
|
629
|
+
tr41:
|
|
630
|
+
#line 43 "ext/http11/http11_parser.rl"
|
|
631
|
+
{MARK(query_start, p); }
|
|
632
|
+
goto st32;
|
|
578
633
|
st32:
|
|
579
634
|
if ( ++p == pe )
|
|
580
635
|
goto _out32;
|
|
581
636
|
case 32:
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
case 95: goto st33;
|
|
586
|
-
}
|
|
587
|
-
if ( (*p) < 48 ) {
|
|
588
|
-
if ( 45 <= (*p) && (*p) <= 46 )
|
|
637
|
+
#line 638 "ext/http11/http11_parser.c"
|
|
638
|
+
if ( (*p) < 65 ) {
|
|
639
|
+
if ( 48 <= (*p) && (*p) <= 57 )
|
|
589
640
|
goto st33;
|
|
590
|
-
} else if ( (*p) >
|
|
591
|
-
if (
|
|
641
|
+
} else if ( (*p) > 70 ) {
|
|
642
|
+
if ( 97 <= (*p) && (*p) <= 102 )
|
|
592
643
|
goto st33;
|
|
593
644
|
} else
|
|
594
645
|
goto st33;
|
|
@@ -597,26 +648,21 @@ st33:
|
|
|
597
648
|
if ( ++p == pe )
|
|
598
649
|
goto _out33;
|
|
599
650
|
case 33:
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
if ( 45 <= (*p) && (*p) <= 46 )
|
|
607
|
-
goto st34;
|
|
608
|
-
} else if ( (*p) > 57 ) {
|
|
609
|
-
if ( 65 <= (*p) && (*p) <= 90 )
|
|
610
|
-
goto st34;
|
|
651
|
+
if ( (*p) < 65 ) {
|
|
652
|
+
if ( 48 <= (*p) && (*p) <= 57 )
|
|
653
|
+
goto st31;
|
|
654
|
+
} else if ( (*p) > 70 ) {
|
|
655
|
+
if ( 97 <= (*p) && (*p) <= 102 )
|
|
656
|
+
goto st31;
|
|
611
657
|
} else
|
|
612
|
-
goto
|
|
658
|
+
goto st31;
|
|
613
659
|
goto st1;
|
|
614
660
|
st34:
|
|
615
661
|
if ( ++p == pe )
|
|
616
662
|
goto _out34;
|
|
617
663
|
case 34:
|
|
618
664
|
switch( (*p) ) {
|
|
619
|
-
case 32: goto
|
|
665
|
+
case 32: goto tr17;
|
|
620
666
|
case 36: goto st35;
|
|
621
667
|
case 95: goto st35;
|
|
622
668
|
}
|
|
@@ -634,7 +680,7 @@ st35:
|
|
|
634
680
|
goto _out35;
|
|
635
681
|
case 35:
|
|
636
682
|
switch( (*p) ) {
|
|
637
|
-
case 32: goto
|
|
683
|
+
case 32: goto tr17;
|
|
638
684
|
case 36: goto st36;
|
|
639
685
|
case 95: goto st36;
|
|
640
686
|
}
|
|
@@ -652,7 +698,7 @@ st36:
|
|
|
652
698
|
goto _out36;
|
|
653
699
|
case 36:
|
|
654
700
|
switch( (*p) ) {
|
|
655
|
-
case 32: goto
|
|
701
|
+
case 32: goto tr17;
|
|
656
702
|
case 36: goto st37;
|
|
657
703
|
case 95: goto st37;
|
|
658
704
|
}
|
|
@@ -670,7 +716,7 @@ st37:
|
|
|
670
716
|
goto _out37;
|
|
671
717
|
case 37:
|
|
672
718
|
switch( (*p) ) {
|
|
673
|
-
case 32: goto
|
|
719
|
+
case 32: goto tr17;
|
|
674
720
|
case 36: goto st38;
|
|
675
721
|
case 95: goto st38;
|
|
676
722
|
}
|
|
@@ -688,7 +734,7 @@ st38:
|
|
|
688
734
|
goto _out38;
|
|
689
735
|
case 38:
|
|
690
736
|
switch( (*p) ) {
|
|
691
|
-
case 32: goto
|
|
737
|
+
case 32: goto tr17;
|
|
692
738
|
case 36: goto st39;
|
|
693
739
|
case 95: goto st39;
|
|
694
740
|
}
|
|
@@ -706,7 +752,7 @@ st39:
|
|
|
706
752
|
goto _out39;
|
|
707
753
|
case 39:
|
|
708
754
|
switch( (*p) ) {
|
|
709
|
-
case 32: goto
|
|
755
|
+
case 32: goto tr17;
|
|
710
756
|
case 36: goto st40;
|
|
711
757
|
case 95: goto st40;
|
|
712
758
|
}
|
|
@@ -724,7 +770,7 @@ st40:
|
|
|
724
770
|
goto _out40;
|
|
725
771
|
case 40:
|
|
726
772
|
switch( (*p) ) {
|
|
727
|
-
case 32: goto
|
|
773
|
+
case 32: goto tr17;
|
|
728
774
|
case 36: goto st41;
|
|
729
775
|
case 95: goto st41;
|
|
730
776
|
}
|
|
@@ -742,7 +788,7 @@ st41:
|
|
|
742
788
|
goto _out41;
|
|
743
789
|
case 41:
|
|
744
790
|
switch( (*p) ) {
|
|
745
|
-
case 32: goto
|
|
791
|
+
case 32: goto tr17;
|
|
746
792
|
case 36: goto st42;
|
|
747
793
|
case 95: goto st42;
|
|
748
794
|
}
|
|
@@ -760,7 +806,7 @@ st42:
|
|
|
760
806
|
goto _out42;
|
|
761
807
|
case 42:
|
|
762
808
|
switch( (*p) ) {
|
|
763
|
-
case 32: goto
|
|
809
|
+
case 32: goto tr17;
|
|
764
810
|
case 36: goto st43;
|
|
765
811
|
case 95: goto st43;
|
|
766
812
|
}
|
|
@@ -778,7 +824,7 @@ st43:
|
|
|
778
824
|
goto _out43;
|
|
779
825
|
case 43:
|
|
780
826
|
switch( (*p) ) {
|
|
781
|
-
case 32: goto
|
|
827
|
+
case 32: goto tr17;
|
|
782
828
|
case 36: goto st44;
|
|
783
829
|
case 95: goto st44;
|
|
784
830
|
}
|
|
@@ -796,7 +842,7 @@ st44:
|
|
|
796
842
|
goto _out44;
|
|
797
843
|
case 44:
|
|
798
844
|
switch( (*p) ) {
|
|
799
|
-
case 32: goto
|
|
845
|
+
case 32: goto tr17;
|
|
800
846
|
case 36: goto st45;
|
|
801
847
|
case 95: goto st45;
|
|
802
848
|
}
|
|
@@ -814,7 +860,7 @@ st45:
|
|
|
814
860
|
goto _out45;
|
|
815
861
|
case 45:
|
|
816
862
|
switch( (*p) ) {
|
|
817
|
-
case 32: goto
|
|
863
|
+
case 32: goto tr17;
|
|
818
864
|
case 36: goto st46;
|
|
819
865
|
case 95: goto st46;
|
|
820
866
|
}
|
|
@@ -832,7 +878,7 @@ st46:
|
|
|
832
878
|
goto _out46;
|
|
833
879
|
case 46:
|
|
834
880
|
switch( (*p) ) {
|
|
835
|
-
case 32: goto
|
|
881
|
+
case 32: goto tr17;
|
|
836
882
|
case 36: goto st47;
|
|
837
883
|
case 95: goto st47;
|
|
838
884
|
}
|
|
@@ -850,7 +896,7 @@ st47:
|
|
|
850
896
|
goto _out47;
|
|
851
897
|
case 47:
|
|
852
898
|
switch( (*p) ) {
|
|
853
|
-
case 32: goto
|
|
899
|
+
case 32: goto tr17;
|
|
854
900
|
case 36: goto st48;
|
|
855
901
|
case 95: goto st48;
|
|
856
902
|
}
|
|
@@ -868,7 +914,7 @@ st48:
|
|
|
868
914
|
goto _out48;
|
|
869
915
|
case 48:
|
|
870
916
|
switch( (*p) ) {
|
|
871
|
-
case 32: goto
|
|
917
|
+
case 32: goto tr17;
|
|
872
918
|
case 36: goto st49;
|
|
873
919
|
case 95: goto st49;
|
|
874
920
|
}
|
|
@@ -886,7 +932,7 @@ st49:
|
|
|
886
932
|
goto _out49;
|
|
887
933
|
case 49:
|
|
888
934
|
switch( (*p) ) {
|
|
889
|
-
case 32: goto
|
|
935
|
+
case 32: goto tr17;
|
|
890
936
|
case 36: goto st50;
|
|
891
937
|
case 95: goto st50;
|
|
892
938
|
}
|
|
@@ -903,8 +949,44 @@ st50:
|
|
|
903
949
|
if ( ++p == pe )
|
|
904
950
|
goto _out50;
|
|
905
951
|
case 50:
|
|
952
|
+
switch( (*p) ) {
|
|
953
|
+
case 32: goto tr17;
|
|
954
|
+
case 36: goto st51;
|
|
955
|
+
case 95: goto st51;
|
|
956
|
+
}
|
|
957
|
+
if ( (*p) < 48 ) {
|
|
958
|
+
if ( 45 <= (*p) && (*p) <= 46 )
|
|
959
|
+
goto st51;
|
|
960
|
+
} else if ( (*p) > 57 ) {
|
|
961
|
+
if ( 65 <= (*p) && (*p) <= 90 )
|
|
962
|
+
goto st51;
|
|
963
|
+
} else
|
|
964
|
+
goto st51;
|
|
965
|
+
goto st1;
|
|
966
|
+
st51:
|
|
967
|
+
if ( ++p == pe )
|
|
968
|
+
goto _out51;
|
|
969
|
+
case 51:
|
|
970
|
+
switch( (*p) ) {
|
|
971
|
+
case 32: goto tr17;
|
|
972
|
+
case 36: goto st52;
|
|
973
|
+
case 95: goto st52;
|
|
974
|
+
}
|
|
975
|
+
if ( (*p) < 48 ) {
|
|
976
|
+
if ( 45 <= (*p) && (*p) <= 46 )
|
|
977
|
+
goto st52;
|
|
978
|
+
} else if ( (*p) > 57 ) {
|
|
979
|
+
if ( 65 <= (*p) && (*p) <= 90 )
|
|
980
|
+
goto st52;
|
|
981
|
+
} else
|
|
982
|
+
goto st52;
|
|
983
|
+
goto st1;
|
|
984
|
+
st52:
|
|
985
|
+
if ( ++p == pe )
|
|
986
|
+
goto _out52;
|
|
987
|
+
case 52:
|
|
906
988
|
if ( (*p) == 32 )
|
|
907
|
-
goto
|
|
989
|
+
goto tr17;
|
|
908
990
|
goto st1;
|
|
909
991
|
}
|
|
910
992
|
_out1: cs = 1; goto _out;
|
|
@@ -923,7 +1005,7 @@ case 50:
|
|
|
923
1005
|
_out14: cs = 14; goto _out;
|
|
924
1006
|
_out15: cs = 15; goto _out;
|
|
925
1007
|
_out16: cs = 16; goto _out;
|
|
926
|
-
|
|
1008
|
+
_out53: cs = 53; goto _out;
|
|
927
1009
|
_out17: cs = 17; goto _out;
|
|
928
1010
|
_out18: cs = 18; goto _out;
|
|
929
1011
|
_out19: cs = 19; goto _out;
|
|
@@ -958,55 +1040,57 @@ case 50:
|
|
|
958
1040
|
_out48: cs = 48; goto _out;
|
|
959
1041
|
_out49: cs = 49; goto _out;
|
|
960
1042
|
_out50: cs = 50; goto _out;
|
|
1043
|
+
_out51: cs = 51; goto _out;
|
|
1044
|
+
_out52: cs = 52; goto _out;
|
|
961
1045
|
|
|
962
1046
|
_out: {}
|
|
963
1047
|
}
|
|
964
|
-
#line
|
|
1048
|
+
#line 149 "ext/http11/http11_parser.rl"
|
|
965
1049
|
|
|
966
|
-
|
|
967
|
-
|
|
1050
|
+
parser->cs = cs;
|
|
1051
|
+
parser->nread += p - (buffer + off);
|
|
968
1052
|
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
1053
|
+
assert(p <= pe && "buffer overflow after parsing execute");
|
|
1054
|
+
assert(parser->nread <= len && "nread longer than length");
|
|
1055
|
+
assert(parser->body_start <= len && "body starts after buffer end");
|
|
1056
|
+
assert(parser->mark < len && "mark is after buffer end");
|
|
1057
|
+
assert(parser->field_len <= len && "field has length longer than whole buffer");
|
|
1058
|
+
assert(parser->field_start < len && "field starts after buffer end");
|
|
975
1059
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
#line
|
|
980
|
-
#line
|
|
981
|
-
|
|
982
|
-
|
|
1060
|
+
if(parser->body_start) {
|
|
1061
|
+
/* final \r\n combo encountered so stop right here */
|
|
1062
|
+
|
|
1063
|
+
#line 1064 "ext/http11/http11_parser.c"
|
|
1064
|
+
#line 163 "ext/http11/http11_parser.rl"
|
|
1065
|
+
parser->nread++;
|
|
1066
|
+
}
|
|
983
1067
|
|
|
984
|
-
|
|
1068
|
+
return(parser->nread);
|
|
985
1069
|
}
|
|
986
1070
|
|
|
987
1071
|
int http_parser_finish(http_parser *parser)
|
|
988
1072
|
{
|
|
989
|
-
|
|
1073
|
+
int cs = parser->cs;
|
|
990
1074
|
|
|
991
|
-
|
|
992
|
-
#line
|
|
993
|
-
#line
|
|
1075
|
+
|
|
1076
|
+
#line 1077 "ext/http11/http11_parser.c"
|
|
1077
|
+
#line 174 "ext/http11/http11_parser.rl"
|
|
994
1078
|
|
|
995
|
-
|
|
1079
|
+
parser->cs = cs;
|
|
996
1080
|
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1081
|
+
if (http_parser_has_error(parser) ) {
|
|
1082
|
+
return -1;
|
|
1083
|
+
} else if (http_parser_is_finished(parser) ) {
|
|
1084
|
+
return 1;
|
|
1085
|
+
} else {
|
|
1086
|
+
return 0;
|
|
1087
|
+
}
|
|
1004
1088
|
}
|
|
1005
1089
|
|
|
1006
1090
|
int http_parser_has_error(http_parser *parser) {
|
|
1007
|
-
|
|
1091
|
+
return parser->cs == http_parser_error;
|
|
1008
1092
|
}
|
|
1009
1093
|
|
|
1010
1094
|
int http_parser_is_finished(http_parser *parser) {
|
|
1011
|
-
|
|
1095
|
+
return parser->cs == http_parser_first_final;
|
|
1012
1096
|
}
|