mongrel 0.3.13.4 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -54,13 +54,13 @@
|
|
54
54
|
<a href="classes/Mongrel/TimeoutError.html">Mongrel::TimeoutError</a><br />
|
55
55
|
<a href="classes/Mongrel/URIClassifier.html">Mongrel::URIClassifier</a><br />
|
56
56
|
<a href="classes/MongrelDbg.html">MongrelDbg</a><br />
|
57
|
+
<a href="classes/Mutex.html">Mutex</a><br />
|
57
58
|
<a href="classes/RequestLog.html">RequestLog</a><br />
|
58
59
|
<a href="classes/RequestLog/Access.html">RequestLog::Access</a><br />
|
59
60
|
<a href="classes/RequestLog/Files.html">RequestLog::Files</a><br />
|
60
61
|
<a href="classes/RequestLog/Objects.html">RequestLog::Objects</a><br />
|
61
62
|
<a href="classes/RequestLog/Params.html">RequestLog::Params</a><br />
|
62
63
|
<a href="classes/RequestLog/Threads.html">RequestLog::Threads</a><br />
|
63
|
-
<a href="classes/Sync.html">Sync</a><br />
|
64
64
|
<a href="classes/TCPServer.html">TCPServer</a><br />
|
65
65
|
</div>
|
66
66
|
</div>
|
data/doc/rdoc/fr_file_index.html
CHANGED
@@ -35,6 +35,7 @@
|
|
35
35
|
<a href="files/lib/mongrel/rails_rb.html">lib/mongrel/rails.rb</a><br />
|
36
36
|
<a href="files/lib/mongrel/stats_rb.html">lib/mongrel/stats.rb</a><br />
|
37
37
|
<a href="files/lib/mongrel/tcphack_rb.html">lib/mongrel/tcphack.rb</a><br />
|
38
|
+
<a href="files/lib/mutex_fix_rb.html">lib/mutex_fix.rb</a><br />
|
38
39
|
</div>
|
39
40
|
</div>
|
40
41
|
</body>
|
@@ -20,154 +20,157 @@
|
|
20
20
|
<div id="index">
|
21
21
|
<h1 class="section-bar">Methods</h1>
|
22
22
|
<div id="index-entries">
|
23
|
-
<a href="classes/Mongrel/HeaderOut.html#
|
24
|
-
<a href="classes/Mongrel/DirHandler.html#
|
25
|
-
<a href="classes/Mongrel/CGIWrapper.html#
|
26
|
-
<a href="classes/MongrelDbg.html#
|
27
|
-
<a href="classes/Mongrel/DirHandler.html#
|
28
|
-
<a href="classes/Mongrel/Configurator.html#
|
29
|
-
<a href="classes/Mongrel/Configurator.html#
|
30
|
-
<a href="classes/Mongrel/Configurator.html#
|
31
|
-
<a href="classes/IO.html#
|
32
|
-
<a href="classes/Mongrel/Command/Registry.html#
|
33
|
-
<a href="classes/
|
34
|
-
<a href="classes/
|
35
|
-
<a href="classes/Mongrel/HttpServer.html#
|
36
|
-
<a href="classes/Mongrel/Configurator.html#
|
37
|
-
<a href="classes/Mongrel/Configurator.html#
|
38
|
-
<a href="classes/Mongrel/StatusHandler.html#
|
39
|
-
<a href="classes/Mongrel/HttpResponse.html#
|
40
|
-
<a href="classes/Mongrel/HttpResponse.html#
|
41
|
-
<a href="classes/Mongrel/StatisticsFilter.html#
|
42
|
-
<a href="classes/Mongrel/Stats.html#
|
43
|
-
<a href="classes/MongrelDbg.html#
|
44
|
-
<a href="classes/Mongrel/CGIWrapper.html#
|
45
|
-
<a href="classes/Mongrel/HttpParser.html#
|
46
|
-
<a href="classes/Mongrel/HttpRequest.html#
|
47
|
-
<a href="classes/Mongrel/HttpParser.html#
|
48
|
-
<a href="classes/Mongrel/Command/Base.html#
|
49
|
-
<a href="classes/Mongrel/HttpParser.html#
|
50
|
-
<a href="classes/Mongrel/HttpResponse.html#
|
51
|
-
<a href="classes/Mongrel/HttpParser.html#
|
52
|
-
<a href="classes/Mongrel/HttpServer.html#
|
53
|
-
<a href="classes/Mongrel/CGIWrapper.html#
|
54
|
-
<a href="classes/Mongrel/Command/Base.html#
|
55
|
-
<a href="classes/TCPServer.html#
|
56
|
-
<a href="classes/TCPServer.html#
|
57
|
-
<a href="classes/Mongrel/URIClassifier.html#
|
58
|
-
<a href="classes/Mongrel/Configurator.html#
|
59
|
-
<a href="classes/Mongrel/Configurator.html#
|
60
|
-
<a href="classes/Mongrel/Configurator.html#
|
61
|
-
<a href="classes/Mongrel/Configurator.html#
|
62
|
-
<a href="classes/Mongrel/Configurator.html#
|
63
|
-
<a href="classes/
|
64
|
-
<a href="classes/
|
65
|
-
<a href="classes/
|
66
|
-
<a href="classes/Mongrel/
|
67
|
-
<a href="classes/Mongrel/
|
68
|
-
<a href="classes/Mongrel/
|
69
|
-
<a href="classes/Mongrel/
|
70
|
-
<a href="classes/Mongrel/
|
71
|
-
<a href="classes/Mongrel/
|
72
|
-
<a href="classes/Mongrel/
|
73
|
-
<a href="classes/Mongrel/
|
74
|
-
<a href="classes/Mongrel/
|
75
|
-
<a href="classes/Mongrel/
|
76
|
-
<a href="classes/Mongrel/
|
77
|
-
<a href="classes/Mongrel/
|
78
|
-
<a href="classes/Mongrel/
|
79
|
-
<a href="classes/Mongrel/
|
80
|
-
<a href="classes/Mongrel/
|
81
|
-
<a href="classes/Mongrel/
|
82
|
-
<a href="classes/Mongrel/
|
83
|
-
<a href="classes/Mongrel/
|
84
|
-
<a href="classes/Mongrel/
|
85
|
-
<a href="classes/Mongrel/
|
86
|
-
<a href="classes/Mongrel/
|
87
|
-
<a href="classes/
|
88
|
-
<a href="classes/
|
89
|
-
<a href="classes/
|
90
|
-
<a href="classes/Mongrel/
|
91
|
-
<a href="classes/Mongrel/
|
92
|
-
<a href="classes/Mongrel/
|
93
|
-
<a href="classes/Mongrel/
|
94
|
-
<a href="classes/Mongrel/
|
95
|
-
<a href="classes/Mongrel/
|
96
|
-
<a href="classes/Mongrel/
|
97
|
-
<a href="classes/Mongrel/
|
98
|
-
<a href="classes/
|
99
|
-
<a href="classes/Mongrel/Rails/RailsHandler.html#
|
100
|
-
<a href="classes/Mongrel/
|
101
|
-
<a href="classes/RequestLog/
|
102
|
-
<a href="classes/RequestLog/
|
103
|
-
<a href="classes/Mongrel/
|
104
|
-
<a href="classes/
|
105
|
-
<a href="classes/
|
106
|
-
<a href="classes/
|
107
|
-
<a href="classes/
|
108
|
-
<a href="classes/
|
109
|
-
<a href="classes/Mongrel/
|
110
|
-
<a href="classes/Mongrel/
|
111
|
-
<a href="classes/Mongrel/
|
112
|
-
<a href="classes/Mongrel/HttpRequest.html#
|
113
|
-
<a href="classes/Mongrel/
|
114
|
-
<a href="classes/Mongrel/
|
115
|
-
<a href="classes/Mongrel/
|
116
|
-
<a href="classes/Mongrel/URIClassifier.html#
|
117
|
-
<a href="classes/Mongrel/
|
118
|
-
<a href="classes/Mongrel/Rails/
|
119
|
-
<a href="classes/Mongrel/
|
120
|
-
<a href="classes/Mongrel/
|
121
|
-
<a href="classes/Mongrel/
|
122
|
-
<a href="classes/Mongrel/
|
123
|
-
<a href="classes/Mongrel/
|
124
|
-
<a href="classes/Mongrel/
|
125
|
-
<a href="classes/Mongrel/
|
126
|
-
<a href="classes/Mongrel/
|
127
|
-
<a href="classes/Mongrel/
|
128
|
-
<a href="classes/Mongrel/
|
129
|
-
<a href="classes/Mongrel/
|
130
|
-
<a href="classes/Mongrel/
|
131
|
-
<a href="classes/Mongrel/
|
132
|
-
<a href="classes/Mongrel/
|
133
|
-
<a href="classes/Mongrel/
|
134
|
-
<a href="classes/Mongrel/
|
135
|
-
<a href="classes/Mongrel/
|
136
|
-
<a href="classes/Mongrel/
|
137
|
-
<a href="classes/Mongrel/
|
138
|
-
<a href="classes/Mongrel/
|
139
|
-
<a href="classes/Mongrel/DirHandler.html#
|
140
|
-
<a href="classes/Mongrel/
|
141
|
-
<a href="classes/Mongrel/HttpResponse.html#
|
142
|
-
<a href="classes/Mongrel/
|
143
|
-
<a href="classes/Mongrel/
|
144
|
-
<a href="classes/Mongrel/
|
145
|
-
<a href="classes/Mongrel/
|
146
|
-
<a href="classes/Mongrel/HttpResponse.html#
|
147
|
-
<a href="classes/Mongrel/
|
148
|
-
<a href="classes/Mongrel/
|
149
|
-
<a href="classes/Mongrel/CGIWrapper.html#
|
150
|
-
<a href="classes/Mongrel/
|
151
|
-
<a href="classes/Mongrel/
|
152
|
-
<a href="classes/Mongrel/
|
153
|
-
<a href="classes/Mongrel/
|
154
|
-
<a href="classes/Mongrel/
|
155
|
-
<a href="classes/
|
156
|
-
<a href="classes/
|
157
|
-
<a href="classes/
|
158
|
-
<a href="classes/
|
159
|
-
<a href="classes/Mongrel/
|
160
|
-
<a href="classes/
|
161
|
-
<a href="classes/Mongrel/
|
162
|
-
<a href="classes/Mongrel/
|
163
|
-
<a href="classes/Mongrel/
|
164
|
-
<a href="classes/Mongrel/
|
165
|
-
<a href="classes/Mongrel/Command/Base.html#M000024">
|
166
|
-
<a href="classes/Mongrel/Command/Base.html#M000027">
|
167
|
-
<a href="classes/Mongrel/Command/Base.html#
|
168
|
-
<a href="classes/Mongrel/Command/Base.html#
|
169
|
-
<a href="classes/Mongrel/
|
170
|
-
<a href="classes/Mongrel/
|
23
|
+
<a href="classes/Mongrel/HeaderOut.html#M000067">[]= (Mongrel::HeaderOut)</a><br />
|
24
|
+
<a href="classes/Mongrel/DirHandler.html#M000056">add_mime_type (Mongrel::DirHandler)</a><br />
|
25
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000120">args (Mongrel::CGIWrapper)</a><br />
|
26
|
+
<a href="classes/MongrelDbg.html#M000009">begin_trace (MongrelDbg)</a><br />
|
27
|
+
<a href="classes/Mongrel/DirHandler.html#M000052">can_serve (Mongrel::DirHandler)</a><br />
|
28
|
+
<a href="classes/Mongrel/Configurator.html#M000094">change_privilege (Mongrel::Configurator)</a><br />
|
29
|
+
<a href="classes/Mongrel/Configurator.html#M000098">cloaker (Mongrel::Configurator)</a><br />
|
30
|
+
<a href="classes/Mongrel/Configurator.html#M000097">cloaking_class (Mongrel::Configurator)</a><br />
|
31
|
+
<a href="classes/IO.html#M000004">close (IO)</a><br />
|
32
|
+
<a href="classes/Mongrel/Command/Registry.html#M000031">commands (Mongrel::Command::Registry)</a><br />
|
33
|
+
<a href="classes/MongrelDbg.html#M000007">configure (MongrelDbg)</a><br />
|
34
|
+
<a href="classes/Mongrel/Command/Base.html#M000020">configure (Mongrel::Command::Base)</a><br />
|
35
|
+
<a href="classes/Mongrel/HttpServer.html#M000061">configure_socket_options (Mongrel::HttpServer)</a><br />
|
36
|
+
<a href="classes/Mongrel/Configurator.html#M000102">daemonize (Mongrel::Configurator)</a><br />
|
37
|
+
<a href="classes/Mongrel/Configurator.html#M000111">debug (Mongrel::Configurator)</a><br />
|
38
|
+
<a href="classes/Mongrel/StatusHandler.html#M000070">describe_listener (Mongrel::StatusHandler)</a><br />
|
39
|
+
<a href="classes/Mongrel/HttpResponse.html#M000086">done (Mongrel::HttpResponse)</a><br />
|
40
|
+
<a href="classes/Mongrel/HttpResponse.html#M000085">done= (Mongrel::HttpResponse)</a><br />
|
41
|
+
<a href="classes/Mongrel/StatisticsFilter.html#M000130">dump (Mongrel::StatisticsFilter)</a><br />
|
42
|
+
<a href="classes/Mongrel/Stats.html#M000142">dump (Mongrel::Stats)</a><br />
|
43
|
+
<a href="classes/MongrelDbg.html#M000010">end_trace (MongrelDbg)</a><br />
|
44
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000121">env_table (Mongrel::CGIWrapper)</a><br />
|
45
|
+
<a href="classes/Mongrel/HttpParser.html#M000048">error? (Mongrel::HttpParser)</a><br />
|
46
|
+
<a href="classes/Mongrel/HttpRequest.html#M000136">escape (Mongrel::HttpRequest)</a><br />
|
47
|
+
<a href="classes/Mongrel/HttpParser.html#M000047">execute (Mongrel::HttpParser)</a><br />
|
48
|
+
<a href="classes/Mongrel/Command/Base.html#M000030">failure (Mongrel::Command::Base)</a><br />
|
49
|
+
<a href="classes/Mongrel/HttpParser.html#M000046">finish (Mongrel::HttpParser)</a><br />
|
50
|
+
<a href="classes/Mongrel/HttpResponse.html#M000084">finished (Mongrel::HttpResponse)</a><br />
|
51
|
+
<a href="classes/Mongrel/HttpParser.html#M000049">finished? (Mongrel::HttpParser)</a><br />
|
52
|
+
<a href="classes/Mongrel/HttpServer.html#M000060">graceful_shutdown (Mongrel::HttpServer)</a><br />
|
53
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000116">header (Mongrel::CGIWrapper)</a><br />
|
54
|
+
<a href="classes/Mongrel/Command/Base.html#M000022">help (Mongrel::Command::Base)</a><br />
|
55
|
+
<a href="classes/TCPServer.html#M000006">initialize (TCPServer)</a><br />
|
56
|
+
<a href="classes/TCPServer.html#M000005">initialize_with_backlog (TCPServer)</a><br />
|
57
|
+
<a href="classes/Mongrel/URIClassifier.html#M000088">inspect (Mongrel::URIClassifier)</a><br />
|
58
|
+
<a href="classes/Mongrel/Configurator.html#M000110">join (Mongrel::Configurator)</a><br />
|
59
|
+
<a href="classes/Mongrel/Configurator.html#M000100">listener (Mongrel::Configurator)</a><br />
|
60
|
+
<a href="classes/Mongrel/Configurator.html#M000105">load_mime_map (Mongrel::Configurator)</a><br />
|
61
|
+
<a href="classes/Mongrel/Configurator.html#M000103">load_plugins (Mongrel::Configurator)</a><br />
|
62
|
+
<a href="classes/Mongrel/Configurator.html#M000104">load_yaml (Mongrel::Configurator)</a><br />
|
63
|
+
<a href="classes/Mutex.html#M000001">lock (Mutex)</a><br />
|
64
|
+
<a href="classes/Mongrel/Configurator.html#M000114">log (Mongrel::Configurator)</a><br />
|
65
|
+
<a href="classes/Kernel.html#M000013">log_open_files (Kernel)</a><br />
|
66
|
+
<a href="classes/Mongrel/Rails/RailsHandler.html#M000039">log_threads_waiting_for (Mongrel::Rails::RailsHandler)</a><br />
|
67
|
+
<a href="classes/Mongrel/Stats.html#M000144">mean (Mongrel::Stats)</a><br />
|
68
|
+
<a href="classes/Mongrel/Command/Base.html#M000019">new (Mongrel::Command::Base)</a><br />
|
69
|
+
<a href="classes/Mongrel/StatisticsFilter.html#M000128">new (Mongrel::StatisticsFilter)</a><br />
|
70
|
+
<a href="classes/Mongrel/Rails/RailsHandler.html#M000037">new (Mongrel::Rails::RailsHandler)</a><br />
|
71
|
+
<a href="classes/Mongrel/URIClassifier.html#M000089">new (Mongrel::URIClassifier)</a><br />
|
72
|
+
<a href="classes/Mongrel/Configurator.html#M000093">new (Mongrel::Configurator)</a><br />
|
73
|
+
<a href="classes/Mongrel/DirHandler.html#M000051">new (Mongrel::DirHandler)</a><br />
|
74
|
+
<a href="classes/Mongrel/RedirectHandler.html#M000131">new (Mongrel::RedirectHandler)</a><br />
|
75
|
+
<a href="classes/Mongrel/DeflateFilter.html#M000124">new (Mongrel::DeflateFilter)</a><br />
|
76
|
+
<a href="classes/Mongrel/HttpResponse.html#M000075">new (Mongrel::HttpResponse)</a><br />
|
77
|
+
<a href="classes/Mongrel/Camping/CampingHandler.html#M000042">new (Mongrel::Camping::CampingHandler)</a><br />
|
78
|
+
<a href="classes/Mongrel/HttpRequest.html#M000133">new (Mongrel::HttpRequest)</a><br />
|
79
|
+
<a href="classes/Mongrel/HttpServer.html#M000057">new (Mongrel::HttpServer)</a><br />
|
80
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000115">new (Mongrel::CGIWrapper)</a><br />
|
81
|
+
<a href="classes/Mongrel/Error404Handler.html#M000126">new (Mongrel::Error404Handler)</a><br />
|
82
|
+
<a href="classes/Mongrel/Stats.html#M000139">new (Mongrel::Stats)</a><br />
|
83
|
+
<a href="classes/Mongrel/StatusHandler.html#M000068">new (Mongrel::StatusHandler)</a><br />
|
84
|
+
<a href="classes/Mongrel/HttpParser.html#M000044">new (Mongrel::HttpParser)</a><br />
|
85
|
+
<a href="classes/Mongrel/HttpHandlerPlugin.html#M000016">new (Mongrel::HttpHandlerPlugin)</a><br />
|
86
|
+
<a href="classes/Mongrel/HeaderOut.html#M000066">new (Mongrel::HeaderOut)</a><br />
|
87
|
+
<a href="classes/Mongrel/HttpParser.html#M000050">nread (Mongrel::HttpParser)</a><br />
|
88
|
+
<a href="classes/IO.html#M000003">open (IO)</a><br />
|
89
|
+
<a href="classes/Kernel.html#M000012">open (Kernel)</a><br />
|
90
|
+
<a href="classes/Mongrel/Command/Base.html#M000018">options (Mongrel::Command::Base)</a><br />
|
91
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000118">out (Mongrel::CGIWrapper)</a><br />
|
92
|
+
<a href="classes/Mongrel/Configurator.html#M000106">plugin (Mongrel::Configurator)</a><br />
|
93
|
+
<a href="classes/Mongrel/Command/Registry.html#M000032">print_command_list (Mongrel::Command::Registry)</a><br />
|
94
|
+
<a href="classes/Mongrel/DirHandler.html#M000055">process (Mongrel::DirHandler)</a><br />
|
95
|
+
<a href="classes/Mongrel/DeflateFilter.html#M000125">process (Mongrel::DeflateFilter)</a><br />
|
96
|
+
<a href="classes/Mongrel/HttpHandler.html#M000074">process (Mongrel::HttpHandler)</a><br />
|
97
|
+
<a href="classes/Mongrel/StatusHandler.html#M000071">process (Mongrel::StatusHandler)</a><br />
|
98
|
+
<a href="classes/RequestLog/Access.html#M000147">process (RequestLog::Access)</a><br />
|
99
|
+
<a href="classes/Mongrel/Rails/RailsHandler.html#M000038">process (Mongrel::Rails::RailsHandler)</a><br />
|
100
|
+
<a href="classes/Mongrel/Camping/CampingHandler.html#M000043">process (Mongrel::Camping::CampingHandler)</a><br />
|
101
|
+
<a href="classes/RequestLog/Files.html#M000148">process (RequestLog::Files)</a><br />
|
102
|
+
<a href="classes/RequestLog/Threads.html#M000149">process (RequestLog::Threads)</a><br />
|
103
|
+
<a href="classes/Mongrel/Error404Handler.html#M000127">process (Mongrel::Error404Handler)</a><br />
|
104
|
+
<a href="classes/Mongrel/StatisticsFilter.html#M000129">process (Mongrel::StatisticsFilter)</a><br />
|
105
|
+
<a href="classes/Mongrel/HttpHandlerPlugin.html#M000017">process (Mongrel::HttpHandlerPlugin)</a><br />
|
106
|
+
<a href="classes/RequestLog/Objects.html#M000150">process (RequestLog::Objects)</a><br />
|
107
|
+
<a href="classes/Mongrel/RedirectHandler.html#M000132">process (Mongrel::RedirectHandler)</a><br />
|
108
|
+
<a href="classes/RequestLog/Params.html#M000151">process (RequestLog::Params)</a><br />
|
109
|
+
<a href="classes/Mongrel/HttpServer.html#M000058">process_client (Mongrel::HttpServer)</a><br />
|
110
|
+
<a href="classes/Mongrel/HttpRequest.html#M000138">query_parse (Mongrel::HttpRequest)</a><br />
|
111
|
+
<a href="classes/Mongrel/Rails/RailsConfigurator.html#M000034">rails (Mongrel::Rails::RailsConfigurator)</a><br />
|
112
|
+
<a href="classes/Mongrel/HttpRequest.html#M000134">read_body (Mongrel::HttpRequest)</a><br />
|
113
|
+
<a href="classes/Mongrel/HttpRequest.html#M000135">read_socket (Mongrel::HttpRequest)</a><br />
|
114
|
+
<a href="classes/Mongrel/HttpServer.html#M000059">reap_dead_workers (Mongrel::HttpServer)</a><br />
|
115
|
+
<a href="classes/Mongrel/Configurator.html#M000107">redirect (Mongrel::Configurator)</a><br />
|
116
|
+
<a href="classes/Mongrel/URIClassifier.html#M000090">register (Mongrel::URIClassifier)</a><br />
|
117
|
+
<a href="classes/Mongrel/HttpServer.html#M000063">register (Mongrel::HttpServer)</a><br />
|
118
|
+
<a href="classes/Mongrel/Rails/RailsHandler.html#M000040">reload! (Mongrel::Rails::RailsHandler)</a><br />
|
119
|
+
<a href="classes/Mongrel/Rails/RailsConfigurator.html#M000035">reload! (Mongrel::Rails::RailsConfigurator)</a><br />
|
120
|
+
<a href="classes/Mongrel/Configurator.html#M000095">remove_pid_file (Mongrel::Configurator)</a><br />
|
121
|
+
<a href="classes/Mongrel/HttpHandler.html#M000072">request_begins (Mongrel::HttpHandler)</a><br />
|
122
|
+
<a href="classes/Mongrel/HttpHandlerPlugin.html#M000014">request_begins (Mongrel::HttpHandlerPlugin)</a><br />
|
123
|
+
<a href="classes/Mongrel/HttpHandler.html#M000073">request_progress (Mongrel::HttpHandler)</a><br />
|
124
|
+
<a href="classes/Mongrel/HttpHandlerPlugin.html#M000015">request_progress (Mongrel::HttpHandlerPlugin)</a><br />
|
125
|
+
<a href="classes/Mongrel/HttpResponse.html#M000077">reset (Mongrel::HttpResponse)</a><br />
|
126
|
+
<a href="classes/Mongrel/HttpParser.html#M000045">reset (Mongrel::HttpParser)</a><br />
|
127
|
+
<a href="classes/Mongrel/Stats.html#M000140">reset (Mongrel::Stats)</a><br />
|
128
|
+
<a href="classes/Mongrel/URIClassifier.html#M000092">resolve (Mongrel::URIClassifier)</a><br />
|
129
|
+
<a href="classes/Mongrel/Configurator.html#M000099">resolve_defaults (Mongrel::Configurator)</a><br />
|
130
|
+
<a href="classes/Mongrel/Command/Base.html#M000023">run (Mongrel::Command::Base)</a><br />
|
131
|
+
<a href="classes/Mongrel/Configurator.html#M000108">run (Mongrel::Configurator)</a><br />
|
132
|
+
<a href="classes/Mongrel/Command/Registry.html#M000033">run (Mongrel::Command::Registry)</a><br />
|
133
|
+
<a href="classes/Mongrel/HttpServer.html#M000062">run (Mongrel::HttpServer)</a><br />
|
134
|
+
<a href="classes/Mongrel/Configurator.html#M000112">run_config (Mongrel::Configurator)</a><br />
|
135
|
+
<a href="classes/Mongrel/Stats.html#M000141">sample (Mongrel::Stats)</a><br />
|
136
|
+
<a href="classes/Mongrel/Stats.html#M000145">sd (Mongrel::Stats)</a><br />
|
137
|
+
<a href="classes/Mongrel/HttpResponse.html#M000080">send_body (Mongrel::HttpResponse)</a><br />
|
138
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000117">send_cookies (Mongrel::CGIWrapper)</a><br />
|
139
|
+
<a href="classes/Mongrel/DirHandler.html#M000053">send_dir_listing (Mongrel::DirHandler)</a><br />
|
140
|
+
<a href="classes/Mongrel/DirHandler.html#M000054">send_file (Mongrel::DirHandler)</a><br />
|
141
|
+
<a href="classes/Mongrel/HttpResponse.html#M000081">send_file (Mongrel::HttpResponse)</a><br />
|
142
|
+
<a href="classes/Mongrel/HttpResponse.html#M000079">send_header (Mongrel::HttpResponse)</a><br />
|
143
|
+
<a href="classes/Mongrel/HttpResponse.html#M000078">send_status (Mongrel::HttpResponse)</a><br />
|
144
|
+
<a href="classes/Mongrel/Rails/RailsConfigurator.html#M000036">setup_rails_signals (Mongrel::Rails::RailsConfigurator)</a><br />
|
145
|
+
<a href="classes/Mongrel/Configurator.html#M000113">setup_signals (Mongrel::Configurator)</a><br />
|
146
|
+
<a href="classes/Mongrel/HttpResponse.html#M000082">socket_error (Mongrel::HttpResponse)</a><br />
|
147
|
+
<a href="classes/Mongrel/Camping.html#M000041">start (Mongrel::Camping)</a><br />
|
148
|
+
<a href="classes/Mongrel/HttpResponse.html#M000076">start (Mongrel::HttpResponse)</a><br />
|
149
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000119">status (Mongrel::CGIWrapper)</a><br />
|
150
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000122">stdinput (Mongrel::CGIWrapper)</a><br />
|
151
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000123">stdoutput (Mongrel::CGIWrapper)</a><br />
|
152
|
+
<a href="classes/Mongrel/Configurator.html#M000109">stop (Mongrel::Configurator)</a><br />
|
153
|
+
<a href="classes/Mongrel/HttpServer.html#M000065">stop (Mongrel::HttpServer)</a><br />
|
154
|
+
<a href="classes/Mongrel/StatusHandler.html#M000069">table (Mongrel::StatusHandler)</a><br />
|
155
|
+
<a href="classes/Mongrel/Stats.html#M000146">tick (Mongrel::Stats)</a><br />
|
156
|
+
<a href="classes/Mongrel/Stats.html#M000143">to_s (Mongrel::Stats)</a><br />
|
157
|
+
<a href="classes/MongrelDbg.html#M000008">trace (MongrelDbg)</a><br />
|
158
|
+
<a href="classes/MongrelDbg.html#M000011">tracing? (MongrelDbg)</a><br />
|
159
|
+
<a href="classes/Mongrel/HttpRequest.html#M000137">unescape (Mongrel::HttpRequest)</a><br />
|
160
|
+
<a href="classes/Mutex.html#M000002">unlock (Mutex)</a><br />
|
161
|
+
<a href="classes/Mongrel/HttpServer.html#M000064">unregister (Mongrel::HttpServer)</a><br />
|
162
|
+
<a href="classes/Mongrel/URIClassifier.html#M000091">unregister (Mongrel::URIClassifier)</a><br />
|
163
|
+
<a href="classes/Mongrel/Configurator.html#M000101">uri (Mongrel::Configurator)</a><br />
|
164
|
+
<a href="classes/Mongrel/URIClassifier.html#M000087">uris (Mongrel::URIClassifier)</a><br />
|
165
|
+
<a href="classes/Mongrel/Command/Base.html#M000024">valid? (Mongrel::Command::Base)</a><br />
|
166
|
+
<a href="classes/Mongrel/Command/Base.html#M000027">valid_dir? (Mongrel::Command::Base)</a><br />
|
167
|
+
<a href="classes/Mongrel/Command/Base.html#M000025">valid_exists? (Mongrel::Command::Base)</a><br />
|
168
|
+
<a href="classes/Mongrel/Command/Base.html#M000026">valid_file? (Mongrel::Command::Base)</a><br />
|
169
|
+
<a href="classes/Mongrel/Command/Base.html#M000029">valid_group? (Mongrel::Command::Base)</a><br />
|
170
|
+
<a href="classes/Mongrel/Command/Base.html#M000028">valid_user? (Mongrel::Command::Base)</a><br />
|
171
|
+
<a href="classes/Mongrel/Command/Base.html#M000021">validate (Mongrel::Command::Base)</a><br />
|
172
|
+
<a href="classes/Mongrel/HttpResponse.html#M000083">write (Mongrel::HttpResponse)</a><br />
|
173
|
+
<a href="classes/Mongrel/Configurator.html#M000096">write_pid_file (Mongrel::Configurator)</a><br />
|
171
174
|
</div>
|
172
175
|
</div>
|
173
176
|
</body>
|
data/ext/http11/http11.c
CHANGED
@@ -54,7 +54,7 @@ static VALUE global_port_80;
|
|
54
54
|
/* Defines the maximum allowed lengths for various input elements.*/
|
55
55
|
DEF_MAX_LENGTH(FIELD_NAME, 256);
|
56
56
|
DEF_MAX_LENGTH(FIELD_VALUE, 80 * 1024);
|
57
|
-
DEF_MAX_LENGTH(REQUEST_URI, 1024 *
|
57
|
+
DEF_MAX_LENGTH(REQUEST_URI, 1024 * 12);
|
58
58
|
DEF_MAX_LENGTH(REQUEST_PATH, 1024);
|
59
59
|
DEF_MAX_LENGTH(QUERY_STRING, (1024 * 10));
|
60
60
|
DEF_MAX_LENGTH(HEADER, (1024 * (80 + 32)));
|
@@ -556,7 +556,7 @@ void Init_http11()
|
|
556
556
|
DEF_GLOBAL(server_protocol, "SERVER_PROTOCOL");
|
557
557
|
DEF_GLOBAL(server_protocol_value, "HTTP/1.1");
|
558
558
|
DEF_GLOBAL(http_host, "HTTP_HOST");
|
559
|
-
DEF_GLOBAL(mongrel_version, "Mongrel 0
|
559
|
+
DEF_GLOBAL(mongrel_version, "Mongrel 1.0");
|
560
560
|
DEF_GLOBAL(server_software, "SERVER_SOFTWARE");
|
561
561
|
DEF_GLOBAL(port_80, "80");
|
562
562
|
|
data/lib/mongrel.rb
CHANGED
@@ -6,10 +6,18 @@
|
|
6
6
|
|
7
7
|
$mongrel_debug_client = false
|
8
8
|
|
9
|
+
require 'rubygems'
|
9
10
|
require 'socket'
|
10
11
|
require 'http11'
|
11
12
|
require 'tempfile'
|
12
|
-
|
13
|
+
begin
|
14
|
+
require 'fastthread'
|
15
|
+
rescue RuntimeError => e
|
16
|
+
warn "fastthread not loaded: #{ e.message }"
|
17
|
+
rescue LoadError
|
18
|
+
ensure
|
19
|
+
require 'thread'
|
20
|
+
end
|
13
21
|
require 'stringio'
|
14
22
|
require 'mongrel/cgi'
|
15
23
|
require 'mongrel/handlers'
|
@@ -18,8 +26,8 @@ require 'mongrel/tcphack'
|
|
18
26
|
require 'yaml'
|
19
27
|
require 'mongrel/configurator'
|
20
28
|
require 'time'
|
21
|
-
require 'rubygems'
|
22
29
|
require 'etc'
|
30
|
+
require 'uri'
|
23
31
|
|
24
32
|
|
25
33
|
# Mongrel module containing all of the classes (include C extensions) for running
|
@@ -47,6 +55,7 @@ module Mongrel
|
|
47
55
|
# Used to stop the HttpServer via Thread.raise.
|
48
56
|
class StopServer < Exception; end
|
49
57
|
|
58
|
+
|
50
59
|
# Thrown at a thread when it is timed out.
|
51
60
|
class TimeoutError < Exception; end
|
52
61
|
|
@@ -95,7 +104,6 @@ module Mongrel
|
|
95
104
|
}
|
96
105
|
|
97
106
|
|
98
|
-
|
99
107
|
# Frequently used constants when constructing requests or responses. Many times
|
100
108
|
# the constant just refers to a string with the same contents. Using these constants
|
101
109
|
# gave about a 3% to 10% performance improvement over using the strings directly.
|
@@ -117,9 +125,8 @@ module Mongrel
|
|
117
125
|
REQUEST_URI='REQUEST_URI'.freeze
|
118
126
|
REQUEST_PATH='REQUEST_PATH'.freeze
|
119
127
|
|
120
|
-
MONGREL_VERSION="0
|
128
|
+
MONGREL_VERSION="1.0".freeze
|
121
129
|
|
122
|
-
# TODO: this use of a base for tempfiles needs to be looked at for security problems
|
123
130
|
MONGREL_TMP_BASE="mongrel".freeze
|
124
131
|
|
125
132
|
# The standard empty 404 response for bad requests. Use Error4040Handler for custom stuff.
|
@@ -158,13 +165,16 @@ module Mongrel
|
|
158
165
|
HTTP_IF_MODIFIED_SINCE="HTTP_IF_MODIFIED_SINCE".freeze
|
159
166
|
HTTP_IF_NONE_MATCH="HTTP_IF_NONE_MATCH".freeze
|
160
167
|
REDIRECT = "HTTP/1.1 302 Found\r\nLocation: %s\r\nConnection: close\r\n\r\n".freeze
|
168
|
+
HOST = "HOST".freeze
|
161
169
|
end
|
162
170
|
|
171
|
+
|
163
172
|
# Basically a Hash with one extra parameter for the HTTP body, mostly used internally.
|
164
173
|
class HttpParams < Hash
|
165
174
|
attr_accessor :http_body
|
166
175
|
end
|
167
176
|
|
177
|
+
|
168
178
|
# When a handler is found for a registered URI then this class is constructed
|
169
179
|
# and passed to your HttpHandler::process method. You should assume that
|
170
180
|
# *one* handler processes all requests. Included in the HttpRequest is a
|
@@ -185,23 +195,24 @@ module Mongrel
|
|
185
195
|
# You don't really call this. It's made for you.
|
186
196
|
# Main thing it does is hook up the params, and store any remaining
|
187
197
|
# body data into the HttpRequest.body attribute.
|
188
|
-
|
189
|
-
# TODO: Implement tempfile removal when the request is done.
|
190
|
-
def initialize(params, socket, dispatcher)
|
198
|
+
def initialize(params, socket, dispatchers)
|
191
199
|
@params = params
|
192
200
|
@socket = socket
|
193
|
-
|
194
|
-
|
201
|
+
@dispatchers = dispatchers
|
202
|
+
content_length = @params[Const::CONTENT_LENGTH].to_i
|
203
|
+
remain = content_length - @params.http_body.length
|
195
204
|
|
196
|
-
|
197
|
-
|
205
|
+
# tell all dispatchers the request has begun
|
206
|
+
@dispatchers.each do |dispatcher|
|
207
|
+
dispatcher.request_begins(@params)
|
208
|
+
end unless @dispatchers.nil? || @dispatchers.empty?
|
198
209
|
|
199
210
|
# 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.
|
200
211
|
if remain <= 0
|
201
212
|
# we've got everything, pack it up
|
202
213
|
@body = StringIO.new
|
203
|
-
@body.write params.http_body
|
204
|
-
|
214
|
+
@body.write @params.http_body
|
215
|
+
update_request_progress(0, content_length)
|
205
216
|
elsif remain > 0
|
206
217
|
# must read more data to complete body
|
207
218
|
if remain > Const::MAX_BODY
|
@@ -213,30 +224,42 @@ module Mongrel
|
|
213
224
|
@body = StringIO.new
|
214
225
|
end
|
215
226
|
|
216
|
-
@body.write params.http_body
|
217
|
-
read_body(remain, content_length
|
227
|
+
@body.write @params.http_body
|
228
|
+
read_body(remain, content_length)
|
218
229
|
end
|
219
230
|
|
220
|
-
@body.rewind if body
|
231
|
+
@body.rewind if @body
|
221
232
|
end
|
222
233
|
|
234
|
+
# updates all dispatchers about our progress
|
235
|
+
def update_request_progress(clen, total)
|
236
|
+
return if @dispatchers.nil? || @dispatchers.empty?
|
237
|
+
@dispatchers.each do |dispatcher|
|
238
|
+
dispatcher.request_progress(@params, clen, total)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
private :update_request_progress
|
223
242
|
|
224
243
|
# Does the heavy lifting of properly reading the larger body requests in
|
225
244
|
# small chunks. It expects @body to be an IO object, @socket to be valid,
|
226
245
|
# and will set @body = nil if the request fails. It also expects any initial
|
227
246
|
# part of the body that has been read to be in the @body already.
|
228
|
-
def read_body(remain, total
|
247
|
+
def read_body(remain, total)
|
229
248
|
begin
|
230
249
|
# write the odd sized chunk first
|
250
|
+
@params.http_body = read_socket(remain % Const::CHUNK_SIZE)
|
251
|
+
|
252
|
+
remain -= @body.write(@params.http_body)
|
231
253
|
|
232
|
-
|
233
|
-
dispatcher.request_progress(params, remain, total) if dispatcher
|
254
|
+
update_request_progress(remain, total)
|
234
255
|
|
235
256
|
# then stream out nothing but perfectly sized chunks
|
236
257
|
until remain <= 0 or @socket.closed?
|
237
|
-
remain -= @body.write(read_socket(Const::CHUNK_SIZE))
|
238
258
|
# ASSUME: we are writing to a disk and these writes always write the requested amount
|
239
|
-
|
259
|
+
@params.http_body = read_socket(Const::CHUNK_SIZE)
|
260
|
+
remain -= @body.write(@params.http_body)
|
261
|
+
|
262
|
+
update_request_progress(remain, total)
|
240
263
|
end
|
241
264
|
rescue Object
|
242
265
|
STDERR.puts "ERROR reading http body: #$!"
|
@@ -247,7 +270,7 @@ module Mongrel
|
|
247
270
|
@body = nil # signals that there was a problem
|
248
271
|
end
|
249
272
|
end
|
250
|
-
|
273
|
+
|
251
274
|
def read_socket(len)
|
252
275
|
if !@socket.closed?
|
253
276
|
data = @socket.read(len)
|
@@ -313,17 +336,25 @@ module Mongrel
|
|
313
336
|
# semantics for Hash (where doing an insert replaces) is not there.
|
314
337
|
class HeaderOut
|
315
338
|
attr_reader :out
|
339
|
+
attr_accessor :allowed_duplicates
|
316
340
|
|
317
341
|
def initialize(out)
|
342
|
+
@sent = {}
|
343
|
+
@allowed_duplicates = {"Set-Cookie" => true, "Set-Cookie2" => true,
|
344
|
+
"Warning" => true, "WWW-Authenticate" => true}
|
318
345
|
@out = out
|
319
346
|
end
|
320
347
|
|
321
348
|
# Simply writes "#{key}: #{value}" to an output buffer.
|
322
349
|
def[]=(key,value)
|
323
|
-
@
|
350
|
+
if not @sent.has_key?(key) or @allowed_duplicates.has_key?(key)
|
351
|
+
@sent[key] = true
|
352
|
+
@out.write(Const::HEADER_FORMAT % [key, value])
|
353
|
+
end
|
324
354
|
end
|
325
355
|
end
|
326
356
|
|
357
|
+
|
327
358
|
# Writes and controls your response to the client using the HTTP/1.1 specification.
|
328
359
|
# You use it by simply doing:
|
329
360
|
#
|
@@ -484,6 +515,7 @@ module Mongrel
|
|
484
515
|
|
485
516
|
end
|
486
517
|
|
518
|
+
|
487
519
|
# This is the main driver of Mongrel, while the Mongrel::HttpParser and Mongrel::URIClassifier
|
488
520
|
# make up the majority of how the server functions. It's a very simple class that just
|
489
521
|
# has a thread accepting connections and a simple HttpServer.process_client function
|
@@ -524,8 +556,6 @@ module Mongrel
|
|
524
556
|
# The timeout parameter is a sleep timeout (in hundredths of a second) that is placed between
|
525
557
|
# socket.accept calls in order to give the server a cheap throttle time. It defaults to 0 and
|
526
558
|
# actually if it is 0 then the sleep is not done at all.
|
527
|
-
#
|
528
|
-
# TODO: Find out if anyone actually uses the timeout option since it seems to cause problems on FBSD.
|
529
559
|
def initialize(host, port, num_processors=(2**30-1), timeout=0)
|
530
560
|
@socket = TCPServer.new(host, port)
|
531
561
|
@classifier = URIClassifier.new
|
@@ -537,7 +567,6 @@ module Mongrel
|
|
537
567
|
@death_time = 60
|
538
568
|
end
|
539
569
|
|
540
|
-
|
541
570
|
# Does the majority of the IO processing. It has been written in Ruby using
|
542
571
|
# about 7 different IO processing strategies and no matter how it's done
|
543
572
|
# the performance just does not improve. It is currently carefully constructed
|
@@ -559,15 +588,24 @@ module Mongrel
|
|
559
588
|
nparsed = parser.execute(params, data, nparsed)
|
560
589
|
|
561
590
|
if parser.finished?
|
591
|
+
if not params[Const::REQUEST_PATH]
|
592
|
+
# it might be a dumbass full host request header
|
593
|
+
uri = URI.parse(params[Const::REQUEST_URI])
|
594
|
+
params[Const::REQUEST_PATH] = uri.request_uri
|
595
|
+
end
|
596
|
+
|
597
|
+
raise "No REQUEST PATH" if not params[Const::REQUEST_PATH]
|
598
|
+
|
562
599
|
script_name, path_info, handlers = @classifier.resolve(params[Const::REQUEST_PATH])
|
563
600
|
|
564
601
|
if handlers
|
565
602
|
params[Const::PATH_INFO] = path_info
|
566
603
|
params[Const::SCRIPT_NAME] = script_name
|
567
604
|
params[Const::REMOTE_ADDR] = params[Const::HTTP_X_FORWARDED_FOR] || client.peeraddr.last
|
568
|
-
notifier = handlers[0].request_notify ? handlers[0] : nil
|
569
605
|
|
570
|
-
|
606
|
+
# select handlers that want more detailed request notification
|
607
|
+
notifiers = handlers.select { |h| h.request_notify }
|
608
|
+
request = HttpRequest.new(params, client, notifiers)
|
571
609
|
|
572
610
|
# in the case of large file uploads the user could close the socket, so skip those requests
|
573
611
|
break if request.body == nil # nil signals from HttpRequest::initialize that the request was aborted
|
@@ -654,10 +692,17 @@ module Mongrel
|
|
654
692
|
end
|
655
693
|
|
656
694
|
def configure_socket_options
|
657
|
-
|
695
|
+
case RUBY_PLATFORM
|
696
|
+
when /linux/
|
658
697
|
# 9 is currently TCP_DEFER_ACCEPT
|
659
|
-
$tcp_defer_accept_opts = [9,1]
|
660
|
-
$tcp_cork_opts = [3,1]
|
698
|
+
$tcp_defer_accept_opts = [Socket::SOL_TCP, 9, 1]
|
699
|
+
$tcp_cork_opts = [Socket::SOL_TCP, 3, 1]
|
700
|
+
when /freebsd/
|
701
|
+
# Use the HTTP accept filter if available.
|
702
|
+
# The struct made by pack() is defined in /usr/include/sys/socket.h as accept_filter_arg
|
703
|
+
unless `/sbin/sysctl -nq net.inet.accf.http`.empty?
|
704
|
+
$tcp_defer_accept_opts = [Socket::SOL_SOCKET, Socket::SO_ACCEPTFILTER, ['httpready', nil].pack('a16a240')]
|
705
|
+
end
|
661
706
|
end
|
662
707
|
end
|
663
708
|
|
@@ -668,13 +713,18 @@ module Mongrel
|
|
668
713
|
|
669
714
|
configure_socket_options
|
670
715
|
|
671
|
-
|
716
|
+
if $tcp_defer_accept_opts
|
717
|
+
@socket.setsockopt(*$tcp_defer_accept_opts) rescue nil
|
718
|
+
end
|
672
719
|
|
673
720
|
@acceptor = Thread.new do
|
674
721
|
while true
|
675
722
|
begin
|
676
723
|
client = @socket.accept
|
677
|
-
|
724
|
+
|
725
|
+
if $tcp_cork_opts
|
726
|
+
client.setsockopt(*$tcp_cork_opts) rescue nil
|
727
|
+
end
|
678
728
|
|
679
729
|
worker_list = @workers.list
|
680
730
|
|
@@ -683,8 +733,7 @@ module Mongrel
|
|
683
733
|
client.close rescue Object
|
684
734
|
reap_dead_workers("max processors")
|
685
735
|
else
|
686
|
-
thread = Thread.new { process_client(
|
687
|
-
thread.abort_on_exception = true
|
736
|
+
thread = Thread.new(client) {|c| process_client(c) }
|
688
737
|
thread[:started_on] = Time.now
|
689
738
|
@workers.add(thread)
|
690
739
|
|
@@ -704,14 +753,12 @@ module Mongrel
|
|
704
753
|
STDERR.puts $!.backtrace.join("\n") if $mongrel_debug_client
|
705
754
|
end
|
706
755
|
end
|
707
|
-
|
708
756
|
graceful_shutdown
|
709
757
|
end
|
710
758
|
|
711
759
|
return @acceptor
|
712
760
|
end
|
713
761
|
|
714
|
-
|
715
762
|
# Simply registers a handler with the internal URIClassifier. When the URI is
|
716
763
|
# found in the prefix of a request then your handler's HttpHandler::process method
|
717
764
|
# is called. See Mongrel::URIClassifier#register for more information.
|