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
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
<h3 class="section-bar">Methods</h3>
|
|
87
87
|
|
|
88
88
|
<div class="name-list">
|
|
89
|
-
<a href="#
|
|
90
|
-
<a href="#
|
|
91
|
-
<a href="#
|
|
92
|
-
<a href="#
|
|
93
|
-
<a href="#
|
|
94
|
-
<a href="#
|
|
95
|
-
<a href="#
|
|
89
|
+
<a href="#M000046">error?</a>
|
|
90
|
+
<a href="#M000045">execute</a>
|
|
91
|
+
<a href="#M000044">finish</a>
|
|
92
|
+
<a href="#M000047">finished?</a>
|
|
93
|
+
<a href="#M000042">new</a>
|
|
94
|
+
<a href="#M000048">nread</a>
|
|
95
|
+
<a href="#M000043">reset</a>
|
|
96
96
|
</div>
|
|
97
97
|
</div>
|
|
98
98
|
|
|
@@ -114,12 +114,12 @@
|
|
|
114
114
|
<div id="methods">
|
|
115
115
|
<h3 class="section-bar">Public Class methods</h3>
|
|
116
116
|
|
|
117
|
-
<div id="method-
|
|
118
|
-
<a name="
|
|
117
|
+
<div id="method-M000042" class="method-detail">
|
|
118
|
+
<a name="M000042"></a>
|
|
119
119
|
|
|
120
120
|
<div class="method-heading">
|
|
121
|
-
<a href="HttpParser.src/
|
|
122
|
-
onclick="popupCode('HttpParser.src/
|
|
121
|
+
<a href="HttpParser.src/M000042.html" target="Code" class="method-signature"
|
|
122
|
+
onclick="popupCode('HttpParser.src/M000042.html');return false;">
|
|
123
123
|
<span class="method-name">parser.new → parser<br />
|
|
124
124
|
</span>
|
|
125
125
|
</a>
|
|
@@ -134,12 +134,12 @@ Creates a new parser.
|
|
|
134
134
|
|
|
135
135
|
<h3 class="section-bar">Public Instance methods</h3>
|
|
136
136
|
|
|
137
|
-
<div id="method-
|
|
138
|
-
<a name="
|
|
137
|
+
<div id="method-M000046" class="method-detail">
|
|
138
|
+
<a name="M000046"></a>
|
|
139
139
|
|
|
140
140
|
<div class="method-heading">
|
|
141
|
-
<a href="HttpParser.src/
|
|
142
|
-
onclick="popupCode('HttpParser.src/
|
|
141
|
+
<a href="HttpParser.src/M000046.html" target="Code" class="method-signature"
|
|
142
|
+
onclick="popupCode('HttpParser.src/M000046.html');return false;">
|
|
143
143
|
<span class="method-name">parser.error? → true/false<br />
|
|
144
144
|
</span>
|
|
145
145
|
</a>
|
|
@@ -152,12 +152,12 @@ Tells you whether the parser is in an error state.
|
|
|
152
152
|
</div>
|
|
153
153
|
</div>
|
|
154
154
|
|
|
155
|
-
<div id="method-
|
|
156
|
-
<a name="
|
|
155
|
+
<div id="method-M000045" class="method-detail">
|
|
156
|
+
<a name="M000045"></a>
|
|
157
157
|
|
|
158
158
|
<div class="method-heading">
|
|
159
|
-
<a href="HttpParser.src/
|
|
160
|
-
onclick="popupCode('HttpParser.src/
|
|
159
|
+
<a href="HttpParser.src/M000045.html" target="Code" class="method-signature"
|
|
160
|
+
onclick="popupCode('HttpParser.src/M000045.html');return false;">
|
|
161
161
|
<span class="method-name">parser.execute(req_hash, data, start) → Integer<br />
|
|
162
162
|
</span>
|
|
163
163
|
</a>
|
|
@@ -185,12 +185,12 @@ so you have to append to the data buffer as you read.
|
|
|
185
185
|
</div>
|
|
186
186
|
</div>
|
|
187
187
|
|
|
188
|
-
<div id="method-
|
|
189
|
-
<a name="
|
|
188
|
+
<div id="method-M000044" class="method-detail">
|
|
189
|
+
<a name="M000044"></a>
|
|
190
190
|
|
|
191
191
|
<div class="method-heading">
|
|
192
|
-
<a href="HttpParser.src/
|
|
193
|
-
onclick="popupCode('HttpParser.src/
|
|
192
|
+
<a href="HttpParser.src/M000044.html" target="Code" class="method-signature"
|
|
193
|
+
onclick="popupCode('HttpParser.src/M000044.html');return false;">
|
|
194
194
|
<span class="method-name">parser.finish → true/false<br />
|
|
195
195
|
</span>
|
|
196
196
|
</a>
|
|
@@ -204,12 +204,12 @@ You should call reset after finish it or bad things will happen.
|
|
|
204
204
|
</div>
|
|
205
205
|
</div>
|
|
206
206
|
|
|
207
|
-
<div id="method-
|
|
208
|
-
<a name="
|
|
207
|
+
<div id="method-M000047" class="method-detail">
|
|
208
|
+
<a name="M000047"></a>
|
|
209
209
|
|
|
210
210
|
<div class="method-heading">
|
|
211
|
-
<a href="HttpParser.src/
|
|
212
|
-
onclick="popupCode('HttpParser.src/
|
|
211
|
+
<a href="HttpParser.src/M000047.html" target="Code" class="method-signature"
|
|
212
|
+
onclick="popupCode('HttpParser.src/M000047.html');return false;">
|
|
213
213
|
<span class="method-name">parser.finished? → true/false<br />
|
|
214
214
|
</span>
|
|
215
215
|
</a>
|
|
@@ -222,12 +222,12 @@ Tells you whether the parser is finished or not and in a good state.
|
|
|
222
222
|
</div>
|
|
223
223
|
</div>
|
|
224
224
|
|
|
225
|
-
<div id="method-
|
|
226
|
-
<a name="
|
|
225
|
+
<div id="method-M000048" class="method-detail">
|
|
226
|
+
<a name="M000048"></a>
|
|
227
227
|
|
|
228
228
|
<div class="method-heading">
|
|
229
|
-
<a href="HttpParser.src/
|
|
230
|
-
onclick="popupCode('HttpParser.src/
|
|
229
|
+
<a href="HttpParser.src/M000048.html" target="Code" class="method-signature"
|
|
230
|
+
onclick="popupCode('HttpParser.src/M000048.html');return false;">
|
|
231
231
|
<span class="method-name">parser.nread → Integer<br />
|
|
232
232
|
</span>
|
|
233
233
|
</a>
|
|
@@ -242,12 +242,12 @@ execute is called.
|
|
|
242
242
|
</div>
|
|
243
243
|
</div>
|
|
244
244
|
|
|
245
|
-
<div id="method-
|
|
246
|
-
<a name="
|
|
245
|
+
<div id="method-M000043" class="method-detail">
|
|
246
|
+
<a name="M000043"></a>
|
|
247
247
|
|
|
248
248
|
<div class="method-heading">
|
|
249
|
-
<a href="HttpParser.src/
|
|
250
|
-
onclick="popupCode('HttpParser.src/
|
|
249
|
+
<a href="HttpParser.src/M000043.html" target="Code" class="method-signature"
|
|
250
|
+
onclick="popupCode('HttpParser.src/M000043.html');return false;">
|
|
251
251
|
<span class="method-name">parser.reset → nil<br />
|
|
252
252
|
</span>
|
|
253
253
|
</a>
|
|
@@ -39,15 +39,15 @@ VALUE HttpParser_execute(VALUE self, VALUE req_hash, VALUE data, VALUE start)
|
|
|
39
39
|
from = FIX2INT(start);
|
|
40
40
|
dptr = RSTRING(data)->ptr;
|
|
41
41
|
dlen = RSTRING(data)->len;
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
if(from >= dlen) {
|
|
44
44
|
rb_raise(eHttpParserError, "Requested start is after data buffer end.");
|
|
45
45
|
} else {
|
|
46
46
|
http->data = (void *)req_hash;
|
|
47
47
|
http_parser_execute(http, dptr, dlen, from);
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
VALIDATE_MAX_LENGTH(http_parser_nread(http), HEADER);
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
if(http_parser_has_error(http)) {
|
|
52
52
|
rb_raise(eHttpParserError, "Invalid HTTP format, parsing fails.");
|
|
53
53
|
} else {
|
|
@@ -95,9 +95,9 @@ uses a StringIO object. To be safe, you should assume it works like a file.
|
|
|
95
95
|
<p>
|
|
96
96
|
The HttpHandler.request_notify system is implemented by having <a
|
|
97
97
|
href="HttpRequest.html">HttpRequest</a> call <a
|
|
98
|
-
href="HttpHandler.html#
|
|
99
|
-
href="HttpHandler.html#
|
|
100
|
-
href="HttpHandler.html#
|
|
98
|
+
href="HttpHandler.html#M000070">HttpHandler.request_begins</a>, <a
|
|
99
|
+
href="HttpHandler.html#M000071">HttpHandler.request_progress</a>, <a
|
|
100
|
+
href="HttpHandler.html#M000072">HttpHandler.process</a> during the <a
|
|
101
101
|
href="../IO.html">IO</a> processing. This adds a small amount of overhead
|
|
102
102
|
but lets you implement finer controlled handlers and filters.
|
|
103
103
|
</p>
|
|
@@ -111,10 +111,12 @@ but lets you implement finer controlled handlers and filters.
|
|
|
111
111
|
<h3 class="section-bar">Methods</h3>
|
|
112
112
|
|
|
113
113
|
<div class="name-list">
|
|
114
|
-
<a href="#
|
|
115
|
-
<a href="#
|
|
116
|
-
<a href="#
|
|
117
|
-
<a href="#
|
|
114
|
+
<a href="#M000133">escape</a>
|
|
115
|
+
<a href="#M000130">new</a>
|
|
116
|
+
<a href="#M000135">query_parse</a>
|
|
117
|
+
<a href="#M000131">read_body</a>
|
|
118
|
+
<a href="#M000132">read_socket</a>
|
|
119
|
+
<a href="#M000134">unescape</a>
|
|
118
120
|
</div>
|
|
119
121
|
</div>
|
|
120
122
|
|
|
@@ -154,12 +156,12 @@ but lets you implement finer controlled handlers and filters.
|
|
|
154
156
|
<div id="methods">
|
|
155
157
|
<h3 class="section-bar">Public Class methods</h3>
|
|
156
158
|
|
|
157
|
-
<div id="method-
|
|
158
|
-
<a name="
|
|
159
|
+
<div id="method-M000133" class="method-detail">
|
|
160
|
+
<a name="M000133"></a>
|
|
159
161
|
|
|
160
162
|
<div class="method-heading">
|
|
161
|
-
<a href="HttpRequest.src/
|
|
162
|
-
onclick="popupCode('HttpRequest.src/
|
|
163
|
+
<a href="HttpRequest.src/M000133.html" target="Code" class="method-signature"
|
|
164
|
+
onclick="popupCode('HttpRequest.src/M000133.html');return false;">
|
|
163
165
|
<span class="method-name">escape</span><span class="method-args">(s)</span>
|
|
164
166
|
</a>
|
|
165
167
|
</div>
|
|
@@ -173,13 +175,13 @@ faster. Use this rather than the cgi.rb version since it’s faster.
|
|
|
173
175
|
</div>
|
|
174
176
|
</div>
|
|
175
177
|
|
|
176
|
-
<div id="method-
|
|
177
|
-
<a name="
|
|
178
|
+
<div id="method-M000130" class="method-detail">
|
|
179
|
+
<a name="M000130"></a>
|
|
178
180
|
|
|
179
181
|
<div class="method-heading">
|
|
180
|
-
<a href="HttpRequest.src/
|
|
181
|
-
onclick="popupCode('HttpRequest.src/
|
|
182
|
-
<span class="method-name">new</span><span class="method-args">(params,
|
|
182
|
+
<a href="HttpRequest.src/M000130.html" target="Code" class="method-signature"
|
|
183
|
+
onclick="popupCode('HttpRequest.src/M000130.html');return false;">
|
|
184
|
+
<span class="method-name">new</span><span class="method-args">(params, socket, dispatcher)</span>
|
|
183
185
|
</a>
|
|
184
186
|
</div>
|
|
185
187
|
|
|
@@ -195,12 +197,12 @@ TODO: Implement tempfile removal when the request is done.
|
|
|
195
197
|
</div>
|
|
196
198
|
</div>
|
|
197
199
|
|
|
198
|
-
<div id="method-
|
|
199
|
-
<a name="
|
|
200
|
+
<div id="method-M000135" class="method-detail">
|
|
201
|
+
<a name="M000135"></a>
|
|
200
202
|
|
|
201
203
|
<div class="method-heading">
|
|
202
|
-
<a href="HttpRequest.src/
|
|
203
|
-
onclick="popupCode('HttpRequest.src/
|
|
204
|
+
<a href="HttpRequest.src/M000135.html" target="Code" class="method-signature"
|
|
205
|
+
onclick="popupCode('HttpRequest.src/M000135.html');return false;">
|
|
204
206
|
<span class="method-name">query_parse</span><span class="method-args">(qs, d = '&;')</span>
|
|
205
207
|
</a>
|
|
206
208
|
</div>
|
|
@@ -215,12 +217,12 @@ changing the characters used in the second parameter (which defaults to
|
|
|
215
217
|
</div>
|
|
216
218
|
</div>
|
|
217
219
|
|
|
218
|
-
<div id="method-
|
|
219
|
-
<a name="
|
|
220
|
+
<div id="method-M000134" class="method-detail">
|
|
221
|
+
<a name="M000134"></a>
|
|
220
222
|
|
|
221
223
|
<div class="method-heading">
|
|
222
|
-
<a href="HttpRequest.src/
|
|
223
|
-
onclick="popupCode('HttpRequest.src/
|
|
224
|
+
<a href="HttpRequest.src/M000134.html" target="Code" class="method-signature"
|
|
225
|
+
onclick="popupCode('HttpRequest.src/M000134.html');return false;">
|
|
224
226
|
<span class="method-name">unescape</span><span class="method-args">(s)</span>
|
|
225
227
|
</a>
|
|
226
228
|
</div>
|
|
@@ -233,6 +235,43 @@ href="Camping.html">Camping</a>).
|
|
|
233
235
|
</div>
|
|
234
236
|
</div>
|
|
235
237
|
|
|
238
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
239
|
+
|
|
240
|
+
<div id="method-M000131" class="method-detail">
|
|
241
|
+
<a name="M000131"></a>
|
|
242
|
+
|
|
243
|
+
<div class="method-heading">
|
|
244
|
+
<a href="HttpRequest.src/M000131.html" target="Code" class="method-signature"
|
|
245
|
+
onclick="popupCode('HttpRequest.src/M000131.html');return false;">
|
|
246
|
+
<span class="method-name">read_body</span><span class="method-args">(remain, total, dispatcher)</span>
|
|
247
|
+
</a>
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
<div class="method-description">
|
|
251
|
+
<p>
|
|
252
|
+
Does the heavy lifting of properly reading the larger body requests in
|
|
253
|
+
small chunks. It expects @body to be an <a href="../IO.html">IO</a> object,
|
|
254
|
+
@socket to be valid, and will set @body = nil if the request fails. It also
|
|
255
|
+
expects any initial part of the body that has been read to be in the @body
|
|
256
|
+
already.
|
|
257
|
+
</p>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
<div id="method-M000132" class="method-detail">
|
|
262
|
+
<a name="M000132"></a>
|
|
263
|
+
|
|
264
|
+
<div class="method-heading">
|
|
265
|
+
<a href="HttpRequest.src/M000132.html" target="Code" class="method-signature"
|
|
266
|
+
onclick="popupCode('HttpRequest.src/M000132.html');return false;">
|
|
267
|
+
<span class="method-name">read_socket</span><span class="method-args">(len)</span>
|
|
268
|
+
</a>
|
|
269
|
+
</div>
|
|
270
|
+
|
|
271
|
+
<div class="method-description">
|
|
272
|
+
</div>
|
|
273
|
+
</div>
|
|
274
|
+
|
|
236
275
|
|
|
237
276
|
</div>
|
|
238
277
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>new (Mongrel::HttpRequest)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 190</span>
|
|
14
|
+
190: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">socket</span>, <span class="ruby-identifier">dispatcher</span>)
|
|
15
|
+
191: <span class="ruby-ivar">@params</span> = <span class="ruby-identifier">params</span>
|
|
16
|
+
192: <span class="ruby-ivar">@socket</span> = <span class="ruby-identifier">socket</span>
|
|
17
|
+
193: <span class="ruby-identifier">content_length</span> = <span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CONTENT_LENGTH</span>].<span class="ruby-identifier">to_i</span>
|
|
18
|
+
194: <span class="ruby-identifier">remain</span> = <span class="ruby-identifier">content_length</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">http_body</span>.<span class="ruby-identifier">length</span>
|
|
19
|
+
195:
|
|
20
|
+
196:
|
|
21
|
+
197: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_begins</span>(<span class="ruby-identifier">params</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
|
|
22
|
+
198:
|
|
23
|
+
199: <span class="ruby-comment cmt"># Some clients (like FF1.0) report 0 for body and then send a body. This will probably truncate them but at least the request goes through usually.</span>
|
|
24
|
+
200: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator"><=</span> <span class="ruby-value">0</span>
|
|
25
|
+
201: <span class="ruby-comment cmt"># we've got everything, pack it up</span>
|
|
26
|
+
202: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
|
|
27
|
+
203: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">http_body</span>
|
|
28
|
+
204: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_progress</span>(<span class="ruby-identifier">params</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">content_length</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
|
|
29
|
+
205: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
30
|
+
206: <span class="ruby-comment cmt"># must read more data to complete body</span>
|
|
31
|
+
207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator">></span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">MAX_BODY</span>
|
|
32
|
+
208: <span class="ruby-comment cmt"># huge body, put it in a tempfile</span>
|
|
33
|
+
209: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">Tempfile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">MONGREL_TMP_BASE</span>)
|
|
34
|
+
210: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">binmode</span>
|
|
35
|
+
211: <span class="ruby-keyword kw">else</span>
|
|
36
|
+
212: <span class="ruby-comment cmt"># small body, just use that</span>
|
|
37
|
+
213: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
|
|
38
|
+
214: <span class="ruby-keyword kw">end</span>
|
|
39
|
+
215:
|
|
40
|
+
216: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">http_body</span>
|
|
41
|
+
217: <span class="ruby-identifier">read_body</span>(<span class="ruby-identifier">remain</span>, <span class="ruby-identifier">content_length</span>, <span class="ruby-identifier">dispatcher</span>)
|
|
42
|
+
218: <span class="ruby-keyword kw">end</span>
|
|
43
|
+
219:
|
|
44
|
+
220: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">rewind</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">body</span>
|
|
45
|
+
221: <span class="ruby-keyword kw">end</span></pre>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>read_body (Mongrel::HttpRequest)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 228</span>
|
|
14
|
+
228: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_body</span>(<span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>, <span class="ruby-identifier">dispatcher</span>)
|
|
15
|
+
229: <span class="ruby-keyword kw">begin</span>
|
|
16
|
+
230: <span class="ruby-comment cmt"># write the odd sized chunk first</span>
|
|
17
|
+
231:
|
|
18
|
+
232: <span class="ruby-identifier">remain</span> <span class="ruby-operator">-=</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">read_socket</span>(<span class="ruby-identifier">remain</span> <span class="ruby-operator">%</span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CHUNK_SIZE</span>))
|
|
19
|
+
233: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_progress</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
|
|
20
|
+
234:
|
|
21
|
+
235: <span class="ruby-comment cmt"># then stream out nothing but perfectly sized chunks</span>
|
|
22
|
+
236: <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator"><=</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">or</span> <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">closed?</span>
|
|
23
|
+
237: <span class="ruby-identifier">remain</span> <span class="ruby-operator">-=</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">read_socket</span>(<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CHUNK_SIZE</span>))
|
|
24
|
+
238: <span class="ruby-comment cmt"># ASSUME: we are writing to a disk and these writes always write the requested amount</span>
|
|
25
|
+
239: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_progress</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
|
|
26
|
+
240: <span class="ruby-keyword kw">end</span>
|
|
27
|
+
241: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Object</span>
|
|
28
|
+
242: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"ERROR reading http body: #$!"</span>
|
|
29
|
+
243: <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">"\n"</span>)
|
|
30
|
+
244: <span class="ruby-comment cmt"># any errors means we should delete the file, including if the file is dumped</span>
|
|
31
|
+
245: <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Object</span>
|
|
32
|
+
246: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">delete</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Tempfile</span>
|
|
33
|
+
247: <span class="ruby-ivar">@body</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># signals that there was a problem</span>
|
|
34
|
+
248: <span class="ruby-keyword kw">end</span>
|
|
35
|
+
249: <span class="ruby-keyword kw">end</span></pre>
|
|
36
|
+
</body>
|
|
37
|
+
</html>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>read_socket (Mongrel::HttpRequest)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 251</span>
|
|
14
|
+
251: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_socket</span>(<span class="ruby-identifier">len</span>)
|
|
15
|
+
252: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">closed?</span>
|
|
16
|
+
253: <span class="ruby-identifier">data</span> = <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">len</span>)
|
|
17
|
+
254: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">data</span>
|
|
18
|
+
255: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Socket read return nil"</span>
|
|
19
|
+
256: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">len</span>
|
|
20
|
+
257: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Socket read returned insufficient data: #{data.length}"</span>
|
|
21
|
+
258: <span class="ruby-keyword kw">else</span>
|
|
22
|
+
259: <span class="ruby-identifier">data</span>
|
|
23
|
+
260: <span class="ruby-keyword kw">end</span>
|
|
24
|
+
261: <span class="ruby-keyword kw">else</span>
|
|
25
|
+
262: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Socket already closed when reading."</span>
|
|
26
|
+
263: <span class="ruby-keyword kw">end</span>
|
|
27
|
+
264: <span class="ruby-keyword kw">end</span></pre>
|
|
28
|
+
</body>
|
|
29
|
+
</html>
|