mongrel 0.3.13.4 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) hide show
  1. data/README +1 -75
  2. data/Rakefile +14 -14
  3. data/bin/mongrel_rails +35 -23
  4. data/doc/rdoc/classes/IO.html +12 -12
  5. data/doc/rdoc/classes/IO.src/{M000001.html → M000003.html} +0 -0
  6. data/doc/rdoc/classes/IO.src/{M000002.html → M000004.html} +0 -0
  7. data/doc/rdoc/classes/Kernel.html +11 -11
  8. data/doc/rdoc/classes/Kernel.src/{M000010.html → M000012.html} +0 -0
  9. data/doc/rdoc/classes/Kernel.src/{M000011.html → M000013.html} +0 -0
  10. data/doc/rdoc/classes/Mongrel.html +3 -3
  11. data/doc/rdoc/classes/Mongrel/CGIWrapper.html +77 -69
  12. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000115.html +12 -19
  13. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000116.html +34 -12
  14. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000117.html +21 -5
  15. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000118.html +19 -5
  16. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000119.html +12 -5
  17. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000120.html +5 -6
  18. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000121.html +18 -0
  19. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000122.html +18 -0
  20. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000123.html +19 -0
  21. data/doc/rdoc/classes/Mongrel/Camping.html +8 -8
  22. data/doc/rdoc/classes/Mongrel/Camping.src/M000041.html +22 -0
  23. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +31 -12
  24. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000042.html +20 -0
  25. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000043.html +58 -0
  26. data/doc/rdoc/classes/Mongrel/Command/Base.html +75 -73
  27. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000018.html +11 -5
  28. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000019.html +29 -5
  29. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000020.html +5 -5
  30. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000021.html +5 -5
  31. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000022.html +5 -9
  32. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000023.html +5 -5
  33. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000024.html +9 -5
  34. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000025.html +5 -5
  35. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000026.html +5 -11
  36. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000027.html +5 -11
  37. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000028.html +11 -5
  38. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html +24 -0
  39. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html +18 -0
  40. data/doc/rdoc/classes/Mongrel/Command/Registry.html +20 -20
  41. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000031.html +7 -45
  42. data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000030.html → M000032.html} +0 -0
  43. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000033.html +58 -0
  44. data/doc/rdoc/classes/Mongrel/Configurator.html +163 -140
  45. data/doc/rdoc/classes/Mongrel/Configurator.src/M000093.html +14 -8
  46. data/doc/rdoc/classes/Mongrel/Configurator.src/M000094.html +18 -7
  47. data/doc/rdoc/classes/Mongrel/Configurator.src/M000095.html +5 -10
  48. data/doc/rdoc/classes/Mongrel/Configurator.src/M000096.html +8 -5
  49. data/doc/rdoc/classes/Mongrel/Configurator.src/M000097.html +7 -25
  50. data/doc/rdoc/classes/Mongrel/Configurator.src/M000098.html +10 -6
  51. data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +5 -26
  52. data/doc/rdoc/classes/Mongrel/Configurator.src/M000100.html +25 -20
  53. data/doc/rdoc/classes/Mongrel/Configurator.src/M000101.html +6 -5
  54. data/doc/rdoc/classes/Mongrel/Configurator.src/M000102.html +26 -11
  55. data/doc/rdoc/classes/Mongrel/Configurator.src/M000103.html +20 -6
  56. data/doc/rdoc/classes/Mongrel/Configurator.src/M000104.html +5 -5
  57. data/doc/rdoc/classes/Mongrel/Configurator.src/M000105.html +11 -9
  58. data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +6 -9
  59. data/doc/rdoc/classes/Mongrel/Configurator.src/M000107.html +5 -5
  60. data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +9 -21
  61. data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +9 -5
  62. data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +5 -23
  63. data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +21 -5
  64. data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +18 -0
  65. data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +36 -0
  66. data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +18 -0
  67. data/doc/rdoc/classes/Mongrel/Const.html +8 -9
  68. data/doc/rdoc/classes/Mongrel/DeflateFilter.html +19 -12
  69. data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000121.html → M000124.html} +5 -5
  70. data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000122.html → M000125.html} +9 -14
  71. data/doc/rdoc/classes/Mongrel/DirHandler.html +43 -43
  72. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000051.html +8 -25
  73. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000052.html +29 -50
  74. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000053.html +25 -26
  75. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000054.html +52 -5
  76. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000055.html +39 -0
  77. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000056.html +18 -0
  78. data/doc/rdoc/classes/Mongrel/Error404Handler.html +11 -11
  79. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000123.html → M000126.html} +4 -4
  80. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000124.html → M000127.html} +4 -4
  81. data/doc/rdoc/classes/Mongrel/HeaderOut.html +15 -10
  82. data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000066.html +21 -0
  83. data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000067.html +21 -0
  84. data/doc/rdoc/classes/Mongrel/HttpHandler.html +25 -23
  85. data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000072.html +4 -4
  86. data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000071.html → M000073.html} +3 -3
  87. data/doc/rdoc/classes/Mongrel/{HttpHandlerPlugin.src/M000012.html → HttpHandler.src/M000074.html} +4 -4
  88. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +22 -21
  89. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000014.html +4 -6
  90. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000015.html +4 -4
  91. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000016.html +19 -0
  92. data/doc/rdoc/classes/Mongrel/{HttpHandler.src/M000070.html → HttpHandlerPlugin.src/M000017.html} +4 -4
  93. data/doc/rdoc/classes/Mongrel/HttpParser.html +44 -42
  94. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000044.html +6 -7
  95. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000045.html +7 -37
  96. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000046.html +7 -5
  97. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000047.html +37 -5
  98. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000048.html +5 -6
  99. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000042.html → M000049.html} +5 -6
  100. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000043.html → M000050.html} +6 -7
  101. data/doc/rdoc/classes/Mongrel/HttpRequest.html +37 -40
  102. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000133.html +37 -7
  103. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000134.html +28 -7
  104. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000135.html +16 -19
  105. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000136.html +20 -0
  106. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000137.html +20 -0
  107. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000138.html +32 -0
  108. data/doc/rdoc/classes/Mongrel/HttpResponse.html +95 -85
  109. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +12 -13
  110. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +7 -9
  111. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000077.html +13 -9
  112. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000078.html +9 -9
  113. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +9 -18
  114. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000080.html +9 -8
  115. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +18 -7
  116. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +8 -7
  117. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +7 -7
  118. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000084.html +7 -5
  119. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000085.html +20 -0
  120. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000086.html +18 -0
  121. data/doc/rdoc/classes/Mongrel/HttpServer.html +59 -63
  122. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000057.html +12 -19
  123. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000058.html +87 -8
  124. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000059.html +19 -9
  125. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000060.html +8 -49
  126. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000061.html +16 -21
  127. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000062.html +52 -5
  128. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000063.html +21 -9
  129. data/doc/rdoc/classes/Mongrel/{HeaderOut.src → HttpServer.src}/M000064.html +5 -5
  130. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html +22 -0
  131. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +27 -25
  132. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000034.html +24 -13
  133. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000033.html → M000035.html} +11 -11
  134. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000036.html +26 -0
  135. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +24 -26
  136. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000037.html +10 -8
  137. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000038.html +43 -12
  138. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000039.html +20 -0
  139. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000040.html +25 -0
  140. data/doc/rdoc/classes/Mongrel/RedirectHandler.html +10 -10
  141. data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000128.html → M000131.html} +8 -8
  142. data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000129.html → M000132.html} +13 -13
  143. data/doc/rdoc/classes/Mongrel/StatisticsFilter.html +20 -20
  144. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000125.html → M000128.html} +10 -10
  145. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000126.html → M000129.html} +10 -10
  146. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000127.html → M000130.html} +4 -4
  147. data/doc/rdoc/classes/Mongrel/Stats.html +43 -42
  148. data/doc/rdoc/classes/Mongrel/Stats.src/M000139.html +6 -5
  149. data/doc/rdoc/classes/Mongrel/Stats.src/M000140.html +10 -5
  150. data/doc/rdoc/classes/Mongrel/Stats.src/M000141.html +13 -5
  151. data/doc/rdoc/classes/Mongrel/Stats.src/M000142.html +5 -10
  152. data/doc/rdoc/classes/Mongrel/Stats.src/M000143.html +5 -7
  153. data/doc/rdoc/classes/Mongrel/Stats.src/{M000136.html → M000144.html} +5 -6
  154. data/doc/rdoc/classes/Mongrel/Stats.src/M000145.html +23 -0
  155. data/doc/rdoc/classes/Mongrel/Stats.src/M000146.html +20 -0
  156. data/doc/rdoc/classes/Mongrel/StatusHandler.html +21 -21
  157. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000068.html +5 -29
  158. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000069.html +11 -7
  159. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000070.html +42 -0
  160. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000071.html +20 -0
  161. data/doc/rdoc/classes/Mongrel/URIClassifier.html +58 -55
  162. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html +5 -26
  163. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000088.html +5 -38
  164. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000089.html +18 -15
  165. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000090.html +25 -57
  166. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000091.html +36 -0
  167. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000092.html +83 -0
  168. data/doc/rdoc/classes/MongrelDbg.html +25 -25
  169. data/doc/rdoc/classes/MongrelDbg.src/M000007.html +11 -9
  170. data/doc/rdoc/classes/MongrelDbg.src/M000008.html +7 -8
  171. data/doc/rdoc/classes/MongrelDbg.src/M000009.html +9 -5
  172. data/doc/rdoc/classes/MongrelDbg.src/M000010.html +21 -0
  173. data/doc/rdoc/classes/MongrelDbg.src/M000011.html +18 -0
  174. data/doc/rdoc/classes/{Sync.html → Mutex.html} +50 -19
  175. data/doc/rdoc/classes/Mutex.src/M000001.html +24 -0
  176. data/doc/rdoc/classes/Mutex.src/M000002.html +32 -0
  177. data/doc/rdoc/classes/RequestLog/Access.html +5 -5
  178. data/doc/rdoc/classes/RequestLog/Access.src/{M000144.html → M000147.html} +0 -0
  179. data/doc/rdoc/classes/RequestLog/Files.html +5 -5
  180. data/doc/rdoc/classes/RequestLog/Files.src/{M000145.html → M000148.html} +0 -0
  181. data/doc/rdoc/classes/RequestLog/Objects.html +5 -5
  182. data/doc/rdoc/classes/RequestLog/Objects.src/{M000147.html → M000150.html} +0 -0
  183. data/doc/rdoc/classes/RequestLog/Params.html +5 -5
  184. data/doc/rdoc/classes/RequestLog/Params.src/{M000148.html → M000151.html} +0 -0
  185. data/doc/rdoc/classes/RequestLog/Threads.html +5 -5
  186. data/doc/rdoc/classes/RequestLog/Threads.src/{M000146.html → M000149.html} +0 -0
  187. data/doc/rdoc/classes/TCPServer.html +10 -10
  188. data/doc/rdoc/classes/TCPServer.src/{M000003.html → M000005.html} +0 -0
  189. data/doc/rdoc/created.rid +1 -1
  190. data/doc/rdoc/files/COPYING.html +1 -1
  191. data/doc/rdoc/files/LICENSE.html +1 -1
  192. data/doc/rdoc/files/README.html +11 -100
  193. data/doc/rdoc/files/ext/http11/http11_c.html +1 -1
  194. data/doc/rdoc/files/lib/mongrel/camping_rb.html +2 -2
  195. data/doc/rdoc/files/lib/mongrel/cgi_rb.html +2 -2
  196. data/doc/rdoc/files/lib/mongrel/command_rb.html +2 -2
  197. data/doc/rdoc/files/lib/mongrel/configurator_rb.html +1 -1
  198. data/doc/rdoc/files/lib/mongrel/debug_rb.html +2 -2
  199. data/doc/rdoc/files/lib/mongrel/handlers_rb.html +3 -2
  200. data/doc/rdoc/files/lib/mongrel/init_rb.html +2 -2
  201. data/doc/rdoc/files/lib/mongrel/rails_rb.html +2 -3
  202. data/doc/rdoc/files/lib/mongrel/stats_rb.html +2 -2
  203. data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +2 -2
  204. data/doc/rdoc/files/lib/mongrel_rb.html +5 -3
  205. data/doc/rdoc/files/lib/mutex_fix_rb.html +108 -0
  206. data/doc/rdoc/fr_class_index.html +1 -1
  207. data/doc/rdoc/fr_file_index.html +1 -0
  208. data/doc/rdoc/fr_method_index.html +151 -148
  209. data/ext/http11/http11.c +2 -2
  210. data/lib/mongrel.rb +85 -38
  211. data/lib/mongrel/camping.rb +17 -4
  212. data/lib/mongrel/configurator.rb +11 -7
  213. data/lib/mongrel/handlers.rb +30 -27
  214. data/lib/mongrel/mime_types.yml +615 -0
  215. data/lib/mongrel/rails.rb +21 -28
  216. data/lib/mutex_fix.rb +34 -0
  217. data/test/test_handlers.rb +16 -4
  218. data/test/test_http11.rb +8 -0
  219. data/test/test_request_progress.rb +45 -2
  220. data/test/test_response.rb +31 -0
  221. metadata +95 -71
  222. data/bin/mongrel_rails_service +0 -246
  223. data/bin/mongrel_rails_svc +0 -307
  224. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000112.html +0 -25
  225. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000113.html +0 -47
  226. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000114.html +0 -34
  227. data/doc/rdoc/classes/Mongrel/Camping.src/M000039.html +0 -22
  228. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000040.html +0 -18
  229. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000041.html +0 -51
  230. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000016.html +0 -24
  231. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000017.html +0 -42
  232. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000029.html +0 -20
  233. data/doc/rdoc/classes/Mongrel/Configurator.src/M000091.html +0 -27
  234. data/doc/rdoc/classes/Mongrel/Configurator.src/M000092.html +0 -31
  235. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000049.html +0 -21
  236. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000050.html +0 -43
  237. data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000065.html +0 -18
  238. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000013.html +0 -17
  239. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000130.html +0 -47
  240. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000131.html +0 -37
  241. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000132.html +0 -29
  242. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000073.html +0 -25
  243. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000074.html +0 -20
  244. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000055.html +0 -25
  245. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000056.html +0 -91
  246. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000032.html +0 -37
  247. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000035.html +0 -23
  248. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000036.html +0 -54
  249. data/doc/rdoc/classes/Mongrel/Stats.src/M000137.html +0 -23
  250. data/doc/rdoc/classes/Mongrel/Stats.src/M000138.html +0 -26
  251. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000066.html +0 -18
  252. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000067.html +0 -24
  253. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000085.html +0 -18
  254. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000086.html +0 -18
  255. data/doc/rdoc/classes/MongrelDbg.src/M000005.html +0 -24
  256. data/doc/rdoc/classes/MongrelDbg.src/M000006.html +0 -20
@@ -5,16 +5,37 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>unescape (Mongrel::HttpRequest)</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 277</span>
14
- 277: <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
- 278: <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
- 279: [<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
- 280: }
18
- 281: <span class="ruby-keyword kw">end</span></pre>
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">&lt;=</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">&quot;ERROR reading http body: #$!&quot;</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">&quot;\n&quot;</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>query_parse (Mongrel::HttpRequest)</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 287</span>
14
- 287: <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">'&amp;;'</span>)
15
- 288: <span class="ruby-identifier">params</span> = {}
16
- 289: (<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
- 290: <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
- 291: <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
- 292: <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
- 293: <span class="ruby-identifier">params</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">v</span>
21
- 294: <span class="ruby-keyword kw">else</span>
22
- 295: <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
- 296: <span class="ruby-keyword kw">end</span>
24
- 297: <span class="ruby-keyword kw">else</span>
25
- 298: <span class="ruby-identifier">params</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
26
- 299: <span class="ruby-keyword kw">end</span>
27
- 300: }
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">&quot;Socket read return nil&quot;</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">&quot;Socket read returned insufficient data: #{data.length}&quot;</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">&quot;Socket already closed when reading.&quot;</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">'&amp;;'</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">&lt;&lt;</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 response code&#8212;which <a
94
- href="../Mongrel.html">Mongrel</a> will translate for you based on
95
- HTTP_STATUS_CODES. The head parameter is how you write custom headers. The
96
- out parameter is where you write your body. The default status code for <a
97
- href="HttpResponse.html#M000074">HttpResponse.start</a> is 200 so the above
93
+ The parameter to <a href="HttpResponse.html#M000076">start</a> is the
94
+ response code&#8212;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&#8217;s just like using a Hash and as you do this it
103
+ As you can see, it&#8216;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 write the things in
105
- the proper order once the HttpResponse.block is ended.
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&#8217;re on your own. A design
113
+ header, and status codes. If you do this you&#8216;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&#8217;t have to specify the
123
+ One additional caveat is that you don&#8216;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 the out length.
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="#M000084">done</a>&nbsp;&nbsp;
135
- <a href="#M000083">done=</a>&nbsp;&nbsp;
136
- <a href="#M000082">finished</a>&nbsp;&nbsp;
137
- <a href="#M000073">new</a>&nbsp;&nbsp;
138
- <a href="#M000075">reset</a>&nbsp;&nbsp;
139
- <a href="#M000078">send_body</a>&nbsp;&nbsp;
140
- <a href="#M000079">send_file</a>&nbsp;&nbsp;
141
- <a href="#M000077">send_header</a>&nbsp;&nbsp;
142
- <a href="#M000076">send_status</a>&nbsp;&nbsp;
143
- <a href="#M000080">socket_error</a>&nbsp;&nbsp;
144
- <a href="#M000074">start</a>&nbsp;&nbsp;
145
- <a href="#M000081">write</a>&nbsp;&nbsp;
138
+ <a href="#M000086">done</a>&nbsp;&nbsp;
139
+ <a href="#M000085">done=</a>&nbsp;&nbsp;
140
+ <a href="#M000084">finished</a>&nbsp;&nbsp;
141
+ <a href="#M000075">new</a>&nbsp;&nbsp;
142
+ <a href="#M000077">reset</a>&nbsp;&nbsp;
143
+ <a href="#M000080">send_body</a>&nbsp;&nbsp;
144
+ <a href="#M000081">send_file</a>&nbsp;&nbsp;
145
+ <a href="#M000079">send_header</a>&nbsp;&nbsp;
146
+ <a href="#M000078">send_status</a>&nbsp;&nbsp;
147
+ <a href="#M000082">socket_error</a>&nbsp;&nbsp;
148
+ <a href="#M000076">start</a>&nbsp;&nbsp;
149
+ <a href="#M000083">write</a>&nbsp;&nbsp;
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-M000073" class="method-detail">
221
- <a name="M000073"></a>
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/M000073.html" target="Code" class="method-signature"
225
- onclick="popupCode('HttpResponse.src/M000073.html');return false;">
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-M000084" class="method-detail">
237
- <a name="M000084"></a>
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/M000084.html" target="Code" class="method-signature"
241
- onclick="popupCode('HttpResponse.src/M000084.html');return false;">
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-M000083" class="method-detail">
251
- <a name="M000083"></a>
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/M000083.html" target="Code" class="method-signature"
255
- onclick="popupCode('HttpResponse.src/M000083.html');return false;">
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 &quot;done&quot; so
263
- there isn&#8217;t any more processing sent to the client.
266
+ Used during error conditions to mark the response as &quot;<a
267
+ href="HttpResponse.html#M000086">done</a>&quot; so there isn&#8216;t any
268
+ more processing sent to the client.
264
269
  </p>
265
270
  </div>
266
271
  </div>
267
272
 
268
- <div id="method-M000082" class="method-detail">
269
- <a name="M000082"></a>
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/M000082.html" target="Code" class="method-signature"
273
- onclick="popupCode('HttpResponse.src/M000082.html');return false;">
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 to header and body and then writes it in
281
- the proper format to make an HTTP/1.1 response.
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-M000075" class="method-detail">
287
- <a name="M000075"></a>
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/M000075.html" target="Code" class="method-signature"
291
- onclick="popupCode('HttpResponse.src/M000075.html');return false;">
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 reset the response output in order
299
- to write an alternative response. It will abort with an exception if you
300
- have already sent the header or the body. This is pretty catastrophic
301
- actually.
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-M000078" class="method-detail">
307
- <a name="M000078"></a>
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/M000078.html" target="Code" class="method-signature"
311
- onclick="popupCode('HttpResponse.src/M000078.html');return false;">
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-M000079" class="method-detail">
321
- <a name="M000079"></a>
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/M000079.html" target="Code" class="method-signature"
325
- onclick="popupCode('HttpResponse.src/M000079.html');return false;">
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-M000077" class="method-detail">
343
- <a name="M000077"></a>
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/M000077.html" target="Code" class="method-signature"
347
- onclick="popupCode('HttpResponse.src/M000077.html');return false;">
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-M000076" class="method-detail">
357
- <a name="M000076"></a>
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/M000076.html" target="Code" class="method-signature"
361
- onclick="popupCode('HttpResponse.src/M000076.html');return false;">
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-M000080" class="method-detail">
371
- <a name="M000080"></a>
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/M000080.html" target="Code" class="method-signature"
375
- onclick="popupCode('HttpResponse.src/M000080.html');return false;">
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-M000074" class="method-detail">
385
- <a name="M000074"></a>
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/M000074.html" target="Code" class="method-signature"
389
- onclick="popupCode('HttpResponse.src/M000074.html');return false;">
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 everything you&#8217;ve done to the socket
398
- in the proper order. This lets you intermix header and body content as
399
- needed. Handlers are able to modify pretty much any part of the request in
400
- the chain, and can stop further processing by simple passing
401
- &quot;finalize=true&quot; to the start method. By default all handlers run
402
- and then mongrel finalizes the request when they&#8217;re all done.
404
+ the block is <a href="HttpResponse.html#M000084">finished</a> it writes
405
+ everything you&#8216;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
+ &quot;finalize=true&quot; 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&#8216;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-M000081" class="method-detail">
408
- <a name="M000081"></a>
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/M000081.html" target="Code" class="method-signature"
412
- onclick="popupCode('HttpResponse.src/M000081.html');return false;">
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>