mongrel 0.3.13.4 → 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +1 -75
- data/Rakefile +14 -14
- data/bin/mongrel_rails +35 -23
- data/doc/rdoc/classes/IO.html +12 -12
- data/doc/rdoc/classes/IO.src/{M000001.html → M000003.html} +0 -0
- data/doc/rdoc/classes/IO.src/{M000002.html → M000004.html} +0 -0
- data/doc/rdoc/classes/Kernel.html +11 -11
- data/doc/rdoc/classes/Kernel.src/{M000010.html → M000012.html} +0 -0
- data/doc/rdoc/classes/Kernel.src/{M000011.html → M000013.html} +0 -0
- data/doc/rdoc/classes/Mongrel.html +3 -3
- data/doc/rdoc/classes/Mongrel/CGIWrapper.html +77 -69
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000115.html +12 -19
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000116.html +34 -12
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000117.html +21 -5
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000118.html +19 -5
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000119.html +12 -5
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000120.html +5 -6
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000121.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000122.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000123.html +19 -0
- data/doc/rdoc/classes/Mongrel/Camping.html +8 -8
- data/doc/rdoc/classes/Mongrel/Camping.src/M000041.html +22 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +31 -12
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000042.html +20 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000043.html +58 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.html +75 -73
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000018.html +11 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000019.html +29 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000020.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000021.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000022.html +5 -9
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000023.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000024.html +9 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000025.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000026.html +5 -11
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000027.html +5 -11
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000028.html +11 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html +24 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.html +20 -20
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000031.html +7 -45
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000030.html → M000032.html} +0 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000033.html +58 -0
- data/doc/rdoc/classes/Mongrel/Configurator.html +163 -140
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000093.html +14 -8
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000094.html +18 -7
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000095.html +5 -10
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000096.html +8 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000097.html +7 -25
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000098.html +10 -6
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +5 -26
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000100.html +25 -20
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000101.html +6 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000102.html +26 -11
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000103.html +20 -6
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000104.html +5 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000105.html +11 -9
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +6 -9
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000107.html +5 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +9 -21
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +9 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +5 -23
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +21 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +18 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +36 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +18 -0
- data/doc/rdoc/classes/Mongrel/Const.html +8 -9
- data/doc/rdoc/classes/Mongrel/DeflateFilter.html +19 -12
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000121.html → M000124.html} +5 -5
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000122.html → M000125.html} +9 -14
- data/doc/rdoc/classes/Mongrel/DirHandler.html +43 -43
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000051.html +8 -25
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000052.html +29 -50
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000053.html +25 -26
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000054.html +52 -5
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000055.html +39 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000056.html +18 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.html +11 -11
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000123.html → M000126.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000124.html → M000127.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HeaderOut.html +15 -10
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000066.html +21 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000067.html +21 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.html +25 -23
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000072.html +4 -4
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000071.html → M000073.html} +3 -3
- data/doc/rdoc/classes/Mongrel/{HttpHandlerPlugin.src/M000012.html → HttpHandler.src/M000074.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +22 -21
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000014.html +4 -6
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000015.html +4 -4
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000016.html +19 -0
- data/doc/rdoc/classes/Mongrel/{HttpHandler.src/M000070.html → HttpHandlerPlugin.src/M000017.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HttpParser.html +44 -42
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000044.html +6 -7
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000045.html +7 -37
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000046.html +7 -5
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000047.html +37 -5
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000048.html +5 -6
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000042.html → M000049.html} +5 -6
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000043.html → M000050.html} +6 -7
- data/doc/rdoc/classes/Mongrel/HttpRequest.html +37 -40
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000133.html +37 -7
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000134.html +28 -7
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000135.html +16 -19
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000136.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000137.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000138.html +32 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.html +95 -85
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +12 -13
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +7 -9
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000077.html +13 -9
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000078.html +9 -9
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +9 -18
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000080.html +9 -8
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +18 -7
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +8 -7
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +7 -7
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000084.html +7 -5
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000085.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000086.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.html +59 -63
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000057.html +12 -19
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000058.html +87 -8
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000059.html +19 -9
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000060.html +8 -49
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000061.html +16 -21
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000062.html +52 -5
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000063.html +21 -9
- data/doc/rdoc/classes/Mongrel/{HeaderOut.src → HttpServer.src}/M000064.html +5 -5
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html +22 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +27 -25
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000034.html +24 -13
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000033.html → M000035.html} +11 -11
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000036.html +26 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +24 -26
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000037.html +10 -8
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000038.html +43 -12
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000039.html +20 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000040.html +25 -0
- data/doc/rdoc/classes/Mongrel/RedirectHandler.html +10 -10
- data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000128.html → M000131.html} +8 -8
- data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000129.html → M000132.html} +13 -13
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.html +20 -20
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000125.html → M000128.html} +10 -10
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000126.html → M000129.html} +10 -10
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000127.html → M000130.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Stats.html +43 -42
- data/doc/rdoc/classes/Mongrel/Stats.src/M000139.html +6 -5
- data/doc/rdoc/classes/Mongrel/Stats.src/M000140.html +10 -5
- data/doc/rdoc/classes/Mongrel/Stats.src/M000141.html +13 -5
- data/doc/rdoc/classes/Mongrel/Stats.src/M000142.html +5 -10
- data/doc/rdoc/classes/Mongrel/Stats.src/M000143.html +5 -7
- data/doc/rdoc/classes/Mongrel/Stats.src/{M000136.html → M000144.html} +5 -6
- data/doc/rdoc/classes/Mongrel/Stats.src/M000145.html +23 -0
- data/doc/rdoc/classes/Mongrel/Stats.src/M000146.html +20 -0
- data/doc/rdoc/classes/Mongrel/StatusHandler.html +21 -21
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000068.html +5 -29
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000069.html +11 -7
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000070.html +42 -0
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000071.html +20 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.html +58 -55
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html +5 -26
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000088.html +5 -38
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000089.html +18 -15
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000090.html +25 -57
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000091.html +36 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000092.html +83 -0
- data/doc/rdoc/classes/MongrelDbg.html +25 -25
- data/doc/rdoc/classes/MongrelDbg.src/M000007.html +11 -9
- data/doc/rdoc/classes/MongrelDbg.src/M000008.html +7 -8
- data/doc/rdoc/classes/MongrelDbg.src/M000009.html +9 -5
- data/doc/rdoc/classes/MongrelDbg.src/M000010.html +21 -0
- data/doc/rdoc/classes/MongrelDbg.src/M000011.html +18 -0
- data/doc/rdoc/classes/{Sync.html → Mutex.html} +50 -19
- data/doc/rdoc/classes/Mutex.src/M000001.html +24 -0
- data/doc/rdoc/classes/Mutex.src/M000002.html +32 -0
- data/doc/rdoc/classes/RequestLog/Access.html +5 -5
- data/doc/rdoc/classes/RequestLog/Access.src/{M000144.html → M000147.html} +0 -0
- data/doc/rdoc/classes/RequestLog/Files.html +5 -5
- data/doc/rdoc/classes/RequestLog/Files.src/{M000145.html → M000148.html} +0 -0
- data/doc/rdoc/classes/RequestLog/Objects.html +5 -5
- data/doc/rdoc/classes/RequestLog/Objects.src/{M000147.html → M000150.html} +0 -0
- data/doc/rdoc/classes/RequestLog/Params.html +5 -5
- data/doc/rdoc/classes/RequestLog/Params.src/{M000148.html → M000151.html} +0 -0
- data/doc/rdoc/classes/RequestLog/Threads.html +5 -5
- data/doc/rdoc/classes/RequestLog/Threads.src/{M000146.html → M000149.html} +0 -0
- data/doc/rdoc/classes/TCPServer.html +10 -10
- data/doc/rdoc/classes/TCPServer.src/{M000003.html → M000005.html} +0 -0
- 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 +11 -100
- data/doc/rdoc/files/ext/http11/http11_c.html +1 -1
- data/doc/rdoc/files/lib/mongrel/camping_rb.html +2 -2
- data/doc/rdoc/files/lib/mongrel/cgi_rb.html +2 -2
- data/doc/rdoc/files/lib/mongrel/command_rb.html +2 -2
- data/doc/rdoc/files/lib/mongrel/configurator_rb.html +1 -1
- data/doc/rdoc/files/lib/mongrel/debug_rb.html +2 -2
- data/doc/rdoc/files/lib/mongrel/handlers_rb.html +3 -2
- data/doc/rdoc/files/lib/mongrel/init_rb.html +2 -2
- data/doc/rdoc/files/lib/mongrel/rails_rb.html +2 -3
- data/doc/rdoc/files/lib/mongrel/stats_rb.html +2 -2
- data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +2 -2
- data/doc/rdoc/files/lib/mongrel_rb.html +5 -3
- data/doc/rdoc/files/lib/mutex_fix_rb.html +108 -0
- data/doc/rdoc/fr_class_index.html +1 -1
- data/doc/rdoc/fr_file_index.html +1 -0
- data/doc/rdoc/fr_method_index.html +151 -148
- data/ext/http11/http11.c +2 -2
- data/lib/mongrel.rb +85 -38
- data/lib/mongrel/camping.rb +17 -4
- data/lib/mongrel/configurator.rb +11 -7
- data/lib/mongrel/handlers.rb +30 -27
- data/lib/mongrel/mime_types.yml +615 -0
- data/lib/mongrel/rails.rb +21 -28
- data/lib/mutex_fix.rb +34 -0
- data/test/test_handlers.rb +16 -4
- data/test/test_http11.rb +8 -0
- data/test/test_request_progress.rb +45 -2
- data/test/test_response.rb +31 -0
- metadata +95 -71
- data/bin/mongrel_rails_service +0 -246
- data/bin/mongrel_rails_svc +0 -307
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000112.html +0 -25
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000113.html +0 -47
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000114.html +0 -34
- data/doc/rdoc/classes/Mongrel/Camping.src/M000039.html +0 -22
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000040.html +0 -18
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000041.html +0 -51
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000016.html +0 -24
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000017.html +0 -42
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000029.html +0 -20
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000091.html +0 -27
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000092.html +0 -31
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000049.html +0 -21
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000050.html +0 -43
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000065.html +0 -18
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000013.html +0 -17
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000130.html +0 -47
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000131.html +0 -37
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000132.html +0 -29
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000073.html +0 -25
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000074.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000055.html +0 -25
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000056.html +0 -91
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000032.html +0 -37
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000035.html +0 -23
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000036.html +0 -54
- data/doc/rdoc/classes/Mongrel/Stats.src/M000137.html +0 -23
- data/doc/rdoc/classes/Mongrel/Stats.src/M000138.html +0 -26
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000066.html +0 -18
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000067.html +0 -24
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000085.html +0 -18
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000086.html +0 -18
- data/doc/rdoc/classes/MongrelDbg.src/M000005.html +0 -24
- data/doc/rdoc/classes/MongrelDbg.src/M000006.html +0 -20
|
@@ -5,16 +5,37 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>read_body (Mongrel::HttpRequest)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 247</span>
|
|
14
|
+
247: <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>)
|
|
15
|
+
248: <span class="ruby-keyword kw">begin</span>
|
|
16
|
+
249: <span class="ruby-comment cmt"># write the odd sized chunk first</span>
|
|
17
|
+
250: <span class="ruby-ivar">@params</span>.<span class="ruby-identifier">http_body</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>)
|
|
18
|
+
251:
|
|
19
|
+
252: <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-ivar">@params</span>.<span class="ruby-identifier">http_body</span>)
|
|
20
|
+
253:
|
|
21
|
+
254: <span class="ruby-identifier">update_request_progress</span>(<span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>)
|
|
22
|
+
255:
|
|
23
|
+
256: <span class="ruby-comment cmt"># then stream out nothing but perfectly sized chunks</span>
|
|
24
|
+
257: <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>
|
|
25
|
+
258: <span class="ruby-comment cmt"># ASSUME: we are writing to a disk and these writes always write the requested amount</span>
|
|
26
|
+
259: <span class="ruby-ivar">@params</span>.<span class="ruby-identifier">http_body</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>)
|
|
27
|
+
260: <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-ivar">@params</span>.<span class="ruby-identifier">http_body</span>)
|
|
28
|
+
261:
|
|
29
|
+
262: <span class="ruby-identifier">update_request_progress</span>(<span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>)
|
|
30
|
+
263: <span class="ruby-keyword kw">end</span>
|
|
31
|
+
264: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Object</span>
|
|
32
|
+
265: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"ERROR reading http body: #$!"</span>
|
|
33
|
+
266: <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">"\n"</span>)
|
|
34
|
+
267: <span class="ruby-comment cmt"># any errors means we should delete the file, including if the file is dumped</span>
|
|
35
|
+
268: <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>
|
|
36
|
+
269: <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>
|
|
37
|
+
270: <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>
|
|
38
|
+
271: <span class="ruby-keyword kw">end</span>
|
|
39
|
+
272: <span class="ruby-keyword kw">end</span></pre>
|
|
19
40
|
</body>
|
|
20
41
|
</html>
|
|
@@ -5,28 +5,25 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>read_socket (Mongrel::HttpRequest)</title>
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
11
|
</head>
|
|
12
12
|
<body class="standalone-code">
|
|
13
|
-
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
301:
|
|
29
|
-
302: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">params</span>
|
|
30
|
-
303: <span class="ruby-keyword kw">end</span></pre>
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 274</span>
|
|
14
|
+
274: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_socket</span>(<span class="ruby-identifier">len</span>)
|
|
15
|
+
275: <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
|
+
276: <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
|
+
277: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">data</span>
|
|
18
|
+
278: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Socket read return nil"</span>
|
|
19
|
+
279: <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
|
+
280: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Socket read returned insufficient data: #{data.length}"</span>
|
|
21
|
+
281: <span class="ruby-keyword kw">else</span>
|
|
22
|
+
282: <span class="ruby-identifier">data</span>
|
|
23
|
+
283: <span class="ruby-keyword kw">end</span>
|
|
24
|
+
284: <span class="ruby-keyword kw">else</span>
|
|
25
|
+
285: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Socket already closed when reading."</span>
|
|
26
|
+
286: <span class="ruby-keyword kw">end</span>
|
|
27
|
+
287: <span class="ruby-keyword kw">end</span></pre>
|
|
31
28
|
</body>
|
|
32
29
|
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
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>escape (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 292</span>
|
|
14
|
+
292: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">escape</span>(<span class="ruby-identifier">s</span>)
|
|
15
|
+
293: <span class="ruby-identifier">s</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/([^ a-zA-Z0-9_.-]+)/n</span>) {
|
|
16
|
+
294: <span class="ruby-value str">'%'</span><span class="ruby-operator">+</span><span class="ruby-identifier">$1</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">'H2'</span><span class="ruby-operator">*</span><span class="ruby-identifier">$1</span>.<span class="ruby-identifier">size</span>).<span class="ruby-identifier">join</span>(<span class="ruby-value str">'%'</span>).<span class="ruby-identifier">upcase</span>
|
|
17
|
+
295: }.<span class="ruby-identifier">tr</span>(<span class="ruby-value str">' '</span>, <span class="ruby-value str">'+'</span>)
|
|
18
|
+
296: <span class="ruby-keyword kw">end</span></pre>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
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>unescape (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 300</span>
|
|
14
|
+
300: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-identifier">s</span>)
|
|
15
|
+
301: <span class="ruby-identifier">s</span>.<span class="ruby-identifier">tr</span>(<span class="ruby-value str">'+'</span>, <span class="ruby-value str">' '</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/((?:%[0-9a-fA-F]{2})+)/n</span>){
|
|
16
|
+
302: [<span class="ruby-identifier">$1</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value str">'%'</span>)].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">'H*'</span>)
|
|
17
|
+
303: }
|
|
18
|
+
304: <span class="ruby-keyword kw">end</span></pre>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,32 @@
|
|
|
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>query_parse (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 310</span>
|
|
14
|
+
310: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">query_parse</span>(<span class="ruby-identifier">qs</span>, <span class="ruby-identifier">d</span> = <span class="ruby-value str">'&;'</span>)
|
|
15
|
+
311: <span class="ruby-identifier">params</span> = {}
|
|
16
|
+
312: (<span class="ruby-identifier">qs</span><span class="ruby-operator">||</span><span class="ruby-value str">''</span>).<span class="ruby-identifier">split</span>(<span class="ruby-node">/[#{d}] */n</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-identifier">params</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span>,<span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
|
|
17
|
+
313: <span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span>=<span class="ruby-identifier">unescape</span>(<span class="ruby-identifier">p</span>).<span class="ruby-identifier">split</span>(<span class="ruby-value str">'='</span>,<span class="ruby-value">2</span>)
|
|
18
|
+
314: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cur</span> = <span class="ruby-identifier">params</span>[<span class="ruby-identifier">k</span>]
|
|
19
|
+
315: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cur</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Array</span>
|
|
20
|
+
316: <span class="ruby-identifier">params</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">v</span>
|
|
21
|
+
317: <span class="ruby-keyword kw">else</span>
|
|
22
|
+
318: <span class="ruby-identifier">params</span>[<span class="ruby-identifier">k</span>] = [<span class="ruby-identifier">cur</span>, <span class="ruby-identifier">v</span>]
|
|
23
|
+
319: <span class="ruby-keyword kw">end</span>
|
|
24
|
+
320: <span class="ruby-keyword kw">else</span>
|
|
25
|
+
321: <span class="ruby-identifier">params</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
|
|
26
|
+
322: <span class="ruby-keyword kw">end</span>
|
|
27
|
+
323: }
|
|
28
|
+
324:
|
|
29
|
+
325: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">params</span>
|
|
30
|
+
326: <span class="ruby-keyword kw">end</span></pre>
|
|
31
|
+
</body>
|
|
32
|
+
</html>
|
|
@@ -90,24 +90,27 @@ specification. You use it by simply doing:
|
|
|
90
90
|
end
|
|
91
91
|
</pre>
|
|
92
92
|
<p>
|
|
93
|
-
The parameter to start is the
|
|
94
|
-
href="../Mongrel.html">Mongrel</a> will
|
|
95
|
-
HTTP_STATUS_CODES. The head parameter is how you
|
|
96
|
-
|
|
97
|
-
href="HttpResponse.html#
|
|
93
|
+
The parameter to <a href="HttpResponse.html#M000076">start</a> is the
|
|
94
|
+
response code—which <a href="../Mongrel.html">Mongrel</a> will
|
|
95
|
+
translate for you based on HTTP_STATUS_CODES. The head parameter is how you
|
|
96
|
+
<a href="HttpResponse.html#M000083">write</a> custom headers. The out
|
|
97
|
+
parameter is where you <a href="HttpResponse.html#M000083">write</a> your
|
|
98
|
+
body. The default status code for <a
|
|
99
|
+
href="HttpResponse.html#M000076">HttpResponse.start</a> is 200 so the above
|
|
98
100
|
example is redundant.
|
|
99
101
|
</p>
|
|
100
102
|
<p>
|
|
101
|
-
As you can see, it&#
|
|
103
|
+
As you can see, it‘s just like using a Hash and as you do this it
|
|
102
104
|
writes the proper header to the output on the fly. You can even intermix
|
|
103
105
|
specifying headers and writing content. The <a
|
|
104
|
-
href="HttpResponse.html">HttpResponse</a> class with
|
|
105
|
-
the
|
|
106
|
+
href="HttpResponse.html">HttpResponse</a> class with <a
|
|
107
|
+
href="HttpResponse.html#M000083">write</a> the things in the proper order
|
|
108
|
+
once the HttpResponse.block is ended.
|
|
106
109
|
</p>
|
|
107
110
|
<p>
|
|
108
111
|
You may also work the <a href="HttpResponse.html">HttpResponse</a> object
|
|
109
112
|
directly using the various attributes available for the raw socket, body,
|
|
110
|
-
header, and status codes. If you do this you&#
|
|
113
|
+
header, and status codes. If you do this you‘re on your own. A design
|
|
111
114
|
decision was made to force the client to not pipeline requests. HTTP/1.1
|
|
112
115
|
pipelining really kills the performance due to how it has to be handled and
|
|
113
116
|
how unclear the standard is. To fix this the <a
|
|
@@ -117,9 +120,10 @@ for this is that it gives a pretty nice speed boost to most clients since
|
|
|
117
120
|
they can close their connection immediately.
|
|
118
121
|
</p>
|
|
119
122
|
<p>
|
|
120
|
-
One additional caveat is that you don&#
|
|
123
|
+
One additional caveat is that you don‘t have to specify the
|
|
121
124
|
Content-length header as the <a href="HttpResponse.html">HttpResponse</a>
|
|
122
|
-
will write this for you based on
|
|
125
|
+
will <a href="HttpResponse.html#M000083">write</a> this for you based on
|
|
126
|
+
the out length.
|
|
123
127
|
</p>
|
|
124
128
|
|
|
125
129
|
</div>
|
|
@@ -131,18 +135,18 @@ will write this for you based on the out length.
|
|
|
131
135
|
<h3 class="section-bar">Methods</h3>
|
|
132
136
|
|
|
133
137
|
<div class="name-list">
|
|
134
|
-
<a href="#
|
|
135
|
-
<a href="#
|
|
136
|
-
<a href="#
|
|
137
|
-
<a href="#
|
|
138
|
-
<a href="#
|
|
139
|
-
<a href="#
|
|
140
|
-
<a href="#
|
|
141
|
-
<a href="#
|
|
142
|
-
<a href="#
|
|
143
|
-
<a href="#
|
|
144
|
-
<a href="#
|
|
145
|
-
<a href="#
|
|
138
|
+
<a href="#M000086">done</a>
|
|
139
|
+
<a href="#M000085">done=</a>
|
|
140
|
+
<a href="#M000084">finished</a>
|
|
141
|
+
<a href="#M000075">new</a>
|
|
142
|
+
<a href="#M000077">reset</a>
|
|
143
|
+
<a href="#M000080">send_body</a>
|
|
144
|
+
<a href="#M000081">send_file</a>
|
|
145
|
+
<a href="#M000079">send_header</a>
|
|
146
|
+
<a href="#M000078">send_status</a>
|
|
147
|
+
<a href="#M000082">socket_error</a>
|
|
148
|
+
<a href="#M000076">start</a>
|
|
149
|
+
<a href="#M000083">write</a>
|
|
146
150
|
</div>
|
|
147
151
|
</div>
|
|
148
152
|
|
|
@@ -217,12 +221,12 @@ will write this for you based on the out length.
|
|
|
217
221
|
<div id="methods">
|
|
218
222
|
<h3 class="section-bar">Public Class methods</h3>
|
|
219
223
|
|
|
220
|
-
<div id="method-
|
|
221
|
-
<a name="
|
|
224
|
+
<div id="method-M000075" class="method-detail">
|
|
225
|
+
<a name="M000075"></a>
|
|
222
226
|
|
|
223
227
|
<div class="method-heading">
|
|
224
|
-
<a href="HttpResponse.src/
|
|
225
|
-
onclick="popupCode('HttpResponse.src/
|
|
228
|
+
<a href="HttpResponse.src/M000075.html" target="Code" class="method-signature"
|
|
229
|
+
onclick="popupCode('HttpResponse.src/M000075.html');return false;">
|
|
226
230
|
<span class="method-name">new</span><span class="method-args">(socket)</span>
|
|
227
231
|
</a>
|
|
228
232
|
</div>
|
|
@@ -233,12 +237,12 @@ will write this for you based on the out length.
|
|
|
233
237
|
|
|
234
238
|
<h3 class="section-bar">Public Instance methods</h3>
|
|
235
239
|
|
|
236
|
-
<div id="method-
|
|
237
|
-
<a name="
|
|
240
|
+
<div id="method-M000086" class="method-detail">
|
|
241
|
+
<a name="M000086"></a>
|
|
238
242
|
|
|
239
243
|
<div class="method-heading">
|
|
240
|
-
<a href="HttpResponse.src/
|
|
241
|
-
onclick="popupCode('HttpResponse.src/
|
|
244
|
+
<a href="HttpResponse.src/M000086.html" target="Code" class="method-signature"
|
|
245
|
+
onclick="popupCode('HttpResponse.src/M000086.html');return false;">
|
|
242
246
|
<span class="method-name">done</span><span class="method-args">()</span>
|
|
243
247
|
</a>
|
|
244
248
|
</div>
|
|
@@ -247,68 +251,71 @@ will write this for you based on the out length.
|
|
|
247
251
|
</div>
|
|
248
252
|
</div>
|
|
249
253
|
|
|
250
|
-
<div id="method-
|
|
251
|
-
<a name="
|
|
254
|
+
<div id="method-M000085" class="method-detail">
|
|
255
|
+
<a name="M000085"></a>
|
|
252
256
|
|
|
253
257
|
<div class="method-heading">
|
|
254
|
-
<a href="HttpResponse.src/
|
|
255
|
-
onclick="popupCode('HttpResponse.src/
|
|
258
|
+
<a href="HttpResponse.src/M000085.html" target="Code" class="method-signature"
|
|
259
|
+
onclick="popupCode('HttpResponse.src/M000085.html');return false;">
|
|
256
260
|
<span class="method-name">done=</span><span class="method-args">(val)</span>
|
|
257
261
|
</a>
|
|
258
262
|
</div>
|
|
259
263
|
|
|
260
264
|
<div class="method-description">
|
|
261
265
|
<p>
|
|
262
|
-
Used during error conditions to mark the response as "
|
|
263
|
-
there isn&#
|
|
266
|
+
Used during error conditions to mark the response as "<a
|
|
267
|
+
href="HttpResponse.html#M000086">done</a>" so there isn‘t any
|
|
268
|
+
more processing sent to the client.
|
|
264
269
|
</p>
|
|
265
270
|
</div>
|
|
266
271
|
</div>
|
|
267
272
|
|
|
268
|
-
<div id="method-
|
|
269
|
-
<a name="
|
|
273
|
+
<div id="method-M000084" class="method-detail">
|
|
274
|
+
<a name="M000084"></a>
|
|
270
275
|
|
|
271
276
|
<div class="method-heading">
|
|
272
|
-
<a href="HttpResponse.src/
|
|
273
|
-
onclick="popupCode('HttpResponse.src/
|
|
277
|
+
<a href="HttpResponse.src/M000084.html" target="Code" class="method-signature"
|
|
278
|
+
onclick="popupCode('HttpResponse.src/M000084.html');return false;">
|
|
274
279
|
<span class="method-name">finished</span><span class="method-args">()</span>
|
|
275
280
|
</a>
|
|
276
281
|
</div>
|
|
277
282
|
|
|
278
283
|
<div class="method-description">
|
|
279
284
|
<p>
|
|
280
|
-
This takes whatever has been done
|
|
281
|
-
the proper format to make an
|
|
285
|
+
This takes whatever has been <a href="HttpResponse.html#M000086">done</a>
|
|
286
|
+
to header and body and then writes it in the proper format to make an
|
|
287
|
+
HTTP/1.1 response.
|
|
282
288
|
</p>
|
|
283
289
|
</div>
|
|
284
290
|
</div>
|
|
285
291
|
|
|
286
|
-
<div id="method-
|
|
287
|
-
<a name="
|
|
292
|
+
<div id="method-M000077" class="method-detail">
|
|
293
|
+
<a name="M000077"></a>
|
|
288
294
|
|
|
289
295
|
<div class="method-heading">
|
|
290
|
-
<a href="HttpResponse.src/
|
|
291
|
-
onclick="popupCode('HttpResponse.src/
|
|
296
|
+
<a href="HttpResponse.src/M000077.html" target="Code" class="method-signature"
|
|
297
|
+
onclick="popupCode('HttpResponse.src/M000077.html');return false;">
|
|
292
298
|
<span class="method-name">reset</span><span class="method-args">()</span>
|
|
293
299
|
</a>
|
|
294
300
|
</div>
|
|
295
301
|
|
|
296
302
|
<div class="method-description">
|
|
297
303
|
<p>
|
|
298
|
-
Primarily used in exception handling to
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
304
|
+
Primarily used in exception handling to <a
|
|
305
|
+
href="HttpResponse.html#M000077">reset</a> the response output in order to
|
|
306
|
+
<a href="HttpResponse.html#M000083">write</a> an alternative response. It
|
|
307
|
+
will abort with an exception if you have already sent the header or the
|
|
308
|
+
body. This is pretty catastrophic actually.
|
|
302
309
|
</p>
|
|
303
310
|
</div>
|
|
304
311
|
</div>
|
|
305
312
|
|
|
306
|
-
<div id="method-
|
|
307
|
-
<a name="
|
|
313
|
+
<div id="method-M000080" class="method-detail">
|
|
314
|
+
<a name="M000080"></a>
|
|
308
315
|
|
|
309
316
|
<div class="method-heading">
|
|
310
|
-
<a href="HttpResponse.src/
|
|
311
|
-
onclick="popupCode('HttpResponse.src/
|
|
317
|
+
<a href="HttpResponse.src/M000080.html" target="Code" class="method-signature"
|
|
318
|
+
onclick="popupCode('HttpResponse.src/M000080.html');return false;">
|
|
312
319
|
<span class="method-name">send_body</span><span class="method-args">()</span>
|
|
313
320
|
</a>
|
|
314
321
|
</div>
|
|
@@ -317,12 +324,12 @@ actually.
|
|
|
317
324
|
</div>
|
|
318
325
|
</div>
|
|
319
326
|
|
|
320
|
-
<div id="method-
|
|
321
|
-
<a name="
|
|
327
|
+
<div id="method-M000081" class="method-detail">
|
|
328
|
+
<a name="M000081"></a>
|
|
322
329
|
|
|
323
330
|
<div class="method-heading">
|
|
324
|
-
<a href="HttpResponse.src/
|
|
325
|
-
onclick="popupCode('HttpResponse.src/
|
|
331
|
+
<a href="HttpResponse.src/M000081.html" target="Code" class="method-signature"
|
|
332
|
+
onclick="popupCode('HttpResponse.src/M000081.html');return false;">
|
|
326
333
|
<span class="method-name">send_file</span><span class="method-args">(path, small_file = false)</span>
|
|
327
334
|
</a>
|
|
328
335
|
</div>
|
|
@@ -339,12 +346,12 @@ problems.
|
|
|
339
346
|
</div>
|
|
340
347
|
</div>
|
|
341
348
|
|
|
342
|
-
<div id="method-
|
|
343
|
-
<a name="
|
|
349
|
+
<div id="method-M000079" class="method-detail">
|
|
350
|
+
<a name="M000079"></a>
|
|
344
351
|
|
|
345
352
|
<div class="method-heading">
|
|
346
|
-
<a href="HttpResponse.src/
|
|
347
|
-
onclick="popupCode('HttpResponse.src/
|
|
353
|
+
<a href="HttpResponse.src/M000079.html" target="Code" class="method-signature"
|
|
354
|
+
onclick="popupCode('HttpResponse.src/M000079.html');return false;">
|
|
348
355
|
<span class="method-name">send_header</span><span class="method-args">()</span>
|
|
349
356
|
</a>
|
|
350
357
|
</div>
|
|
@@ -353,12 +360,12 @@ problems.
|
|
|
353
360
|
</div>
|
|
354
361
|
</div>
|
|
355
362
|
|
|
356
|
-
<div id="method-
|
|
357
|
-
<a name="
|
|
363
|
+
<div id="method-M000078" class="method-detail">
|
|
364
|
+
<a name="M000078"></a>
|
|
358
365
|
|
|
359
366
|
<div class="method-heading">
|
|
360
|
-
<a href="HttpResponse.src/
|
|
361
|
-
onclick="popupCode('HttpResponse.src/
|
|
367
|
+
<a href="HttpResponse.src/M000078.html" target="Code" class="method-signature"
|
|
368
|
+
onclick="popupCode('HttpResponse.src/M000078.html');return false;">
|
|
362
369
|
<span class="method-name">send_status</span><span class="method-args">(content_length=@body.length)</span>
|
|
363
370
|
</a>
|
|
364
371
|
</div>
|
|
@@ -367,12 +374,12 @@ problems.
|
|
|
367
374
|
</div>
|
|
368
375
|
</div>
|
|
369
376
|
|
|
370
|
-
<div id="method-
|
|
371
|
-
<a name="
|
|
377
|
+
<div id="method-M000082" class="method-detail">
|
|
378
|
+
<a name="M000082"></a>
|
|
372
379
|
|
|
373
380
|
<div class="method-heading">
|
|
374
|
-
<a href="HttpResponse.src/
|
|
375
|
-
onclick="popupCode('HttpResponse.src/
|
|
381
|
+
<a href="HttpResponse.src/M000082.html" target="Code" class="method-signature"
|
|
382
|
+
onclick="popupCode('HttpResponse.src/M000082.html');return false;">
|
|
376
383
|
<span class="method-name">socket_error</span><span class="method-args">(details)</span>
|
|
377
384
|
</a>
|
|
378
385
|
</div>
|
|
@@ -381,12 +388,12 @@ problems.
|
|
|
381
388
|
</div>
|
|
382
389
|
</div>
|
|
383
390
|
|
|
384
|
-
<div id="method-
|
|
385
|
-
<a name="
|
|
391
|
+
<div id="method-M000076" class="method-detail">
|
|
392
|
+
<a name="M000076"></a>
|
|
386
393
|
|
|
387
394
|
<div class="method-heading">
|
|
388
|
-
<a href="HttpResponse.src/
|
|
389
|
-
onclick="popupCode('HttpResponse.src/
|
|
395
|
+
<a href="HttpResponse.src/M000076.html" target="Code" class="method-signature"
|
|
396
|
+
onclick="popupCode('HttpResponse.src/M000076.html');return false;">
|
|
390
397
|
<span class="method-name">start</span><span class="method-args">(status=200, finalize=false) {|@header, @body| ...}</span>
|
|
391
398
|
</a>
|
|
392
399
|
</div>
|
|
@@ -394,22 +401,25 @@ problems.
|
|
|
394
401
|
<div class="method-description">
|
|
395
402
|
<p>
|
|
396
403
|
Receives a block passing it the header and body for you to work with. When
|
|
397
|
-
the block is finished it writes
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
404
|
+
the block is <a href="HttpResponse.html#M000084">finished</a> it writes
|
|
405
|
+
everything you‘ve <a href="HttpResponse.html#M000086">done</a> to the
|
|
406
|
+
socket in the proper order. This lets you intermix header and body content
|
|
407
|
+
as needed. Handlers are able to modify pretty much any part of the request
|
|
408
|
+
in the chain, and can stop further processing by simple passing
|
|
409
|
+
"finalize=true" to the <a
|
|
410
|
+
href="HttpResponse.html#M000076">start</a> method. By default all handlers
|
|
411
|
+
run and then mongrel finalizes the request when they‘re all <a
|
|
412
|
+
href="HttpResponse.html#M000086">done</a>.
|
|
403
413
|
</p>
|
|
404
414
|
</div>
|
|
405
415
|
</div>
|
|
406
416
|
|
|
407
|
-
<div id="method-
|
|
408
|
-
<a name="
|
|
417
|
+
<div id="method-M000083" class="method-detail">
|
|
418
|
+
<a name="M000083"></a>
|
|
409
419
|
|
|
410
420
|
<div class="method-heading">
|
|
411
|
-
<a href="HttpResponse.src/
|
|
412
|
-
onclick="popupCode('HttpResponse.src/
|
|
421
|
+
<a href="HttpResponse.src/M000083.html" target="Code" class="method-signature"
|
|
422
|
+
onclick="popupCode('HttpResponse.src/M000083.html');return false;">
|
|
413
423
|
<span class="method-name">write</span><span class="method-args">(data)</span>
|
|
414
424
|
</a>
|
|
415
425
|
</div>
|