mongrel 0.3.13.3 → 0.3.13.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. data/Rakefile +5 -4
  2. data/bin/mongrel_rails +162 -169
  3. data/doc/rdoc/classes/IO.src/M000001.html +5 -5
  4. data/doc/rdoc/classes/IO.src/M000002.html +5 -5
  5. data/doc/rdoc/classes/Kernel.html +10 -10
  6. data/doc/rdoc/classes/Kernel.src/M000010.html +19 -0
  7. data/doc/rdoc/classes/Kernel.src/M000011.html +23 -0
  8. data/doc/rdoc/classes/Mongrel.html +27 -10
  9. data/doc/rdoc/classes/Mongrel/CGIWrapper.html +67 -54
  10. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000101.html → M000112.html} +11 -10
  11. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000102.html → M000113.html} +31 -31
  12. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000103.html → M000114.html} +20 -20
  13. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000115.html +32 -0
  14. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000105.html → M000116.html} +11 -11
  15. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000106.html → M000117.html} +4 -4
  16. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000107.html → M000118.html} +4 -4
  17. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000108.html → M000119.html} +4 -4
  18. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000109.html → M000120.html} +5 -5
  19. data/doc/rdoc/classes/Mongrel/Camping.html +5 -5
  20. data/doc/rdoc/classes/Mongrel/Camping.src/{M000048.html → M000039.html} +0 -0
  21. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +10 -10
  22. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/{M000049.html → M000040.html} +0 -0
  23. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/{M000050.html → M000041.html} +0 -0
  24. data/doc/rdoc/classes/Mongrel/Command/Base.html +65 -65
  25. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000016.html +24 -0
  26. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000017.html +42 -0
  27. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000018.html +18 -0
  28. data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000029.html → M000019.html} +0 -0
  29. data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000030.html → M000020.html} +0 -0
  30. data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000031.html → M000021.html} +0 -0
  31. data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000032.html → M000022.html} +0 -0
  32. data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000033.html → M000023.html} +0 -0
  33. data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000034.html → M000024.html} +0 -0
  34. data/doc/rdoc/classes/Mongrel/Command/Base.src/{M000035.html → M000025.html} +0 -0
  35. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000026.html +11 -11
  36. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000027.html +11 -29
  37. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000028.html +5 -5
  38. data/doc/rdoc/classes/Mongrel/Command/Registry.html +15 -15
  39. data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000039.html → M000029.html} +0 -0
  40. data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000040.html → M000030.html} +10 -6
  41. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000031.html +58 -0
  42. data/doc/rdoc/classes/Mongrel/Configurator.html +115 -115
  43. data/doc/rdoc/classes/Mongrel/Configurator.src/M000091.html +27 -0
  44. data/doc/rdoc/classes/Mongrel/Configurator.src/M000092.html +31 -0
  45. data/doc/rdoc/classes/Mongrel/Configurator.src/M000093.html +21 -0
  46. data/doc/rdoc/classes/Mongrel/Configurator.src/M000094.html +20 -0
  47. data/doc/rdoc/classes/Mongrel/Configurator.src/M000095.html +23 -0
  48. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000115.html → M000096.html} +4 -4
  49. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000116.html → M000097.html} +24 -24
  50. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000117.html → M000098.html} +5 -5
  51. data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +39 -0
  52. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000119.html → M000100.html} +19 -19
  53. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000120.html → M000101.html} +4 -4
  54. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000121.html → M000102.html} +10 -10
  55. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000122.html → M000103.html} +5 -5
  56. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000123.html → M000104.html} +4 -4
  57. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000124.html → M000105.html} +8 -8
  58. data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +22 -0
  59. data/doc/rdoc/classes/Mongrel/Configurator.src/{M000126.html → M000107.html} +4 -4
  60. data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +34 -0
  61. data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +18 -0
  62. data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +23 -14
  63. data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +5 -18
  64. data/doc/rdoc/classes/Mongrel/Const.html +11 -6
  65. data/doc/rdoc/classes/Mongrel/DeflateFilter.html +10 -10
  66. data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000099.html → M000121.html} +5 -5
  67. data/doc/rdoc/classes/Mongrel/DeflateFilter.src/{M000100.html → M000122.html} +14 -14
  68. data/doc/rdoc/classes/Mongrel/DirHandler.html +31 -31
  69. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000058.html → M000049.html} +0 -0
  70. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000059.html → M000050.html} +0 -0
  71. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000060.html → M000051.html} +12 -16
  72. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000052.html +63 -0
  73. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000062.html → M000053.html} +25 -25
  74. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000063.html → M000054.html} +4 -4
  75. data/doc/rdoc/classes/Mongrel/Error404Handler.html +10 -10
  76. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000131.html → M000123.html} +0 -0
  77. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000132.html → M000124.html} +0 -0
  78. data/doc/rdoc/classes/Mongrel/HeaderOut.html +10 -10
  79. data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000072.html → M000064.html} +4 -4
  80. data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000073.html → M000065.html} +4 -4
  81. data/doc/rdoc/classes/Mongrel/HttpHandler.html +15 -15
  82. data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000078.html → M000070.html} +0 -0
  83. data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000079.html → M000071.html} +0 -0
  84. data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000080.html → M000072.html} +0 -0
  85. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +20 -20
  86. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000022.html → M000012.html} +0 -0
  87. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000023.html → M000013.html} +0 -0
  88. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000024.html → M000014.html} +0 -0
  89. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000025.html → M000015.html} +0 -0
  90. data/doc/rdoc/classes/Mongrel/HttpParams.html +131 -0
  91. data/doc/rdoc/classes/Mongrel/HttpParser.html +35 -35
  92. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000051.html → M000042.html} +1 -1
  93. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000052.html → M000043.html} +1 -1
  94. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000053.html → M000044.html} +1 -1
  95. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000054.html → M000045.html} +3 -3
  96. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000055.html → M000046.html} +1 -1
  97. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000056.html → M000047.html} +1 -1
  98. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000057.html → M000048.html} +1 -1
  99. data/doc/rdoc/classes/Mongrel/HttpRequest.html +63 -24
  100. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000130.html +47 -0
  101. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000131.html +37 -0
  102. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000132.html +29 -0
  103. data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000139.html → M000133.html} +6 -6
  104. data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000140.html → M000134.html} +6 -6
  105. data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000141.html → M000135.html} +18 -18
  106. data/doc/rdoc/classes/Mongrel/HttpResponse.html +66 -72
  107. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000073.html +25 -0
  108. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000074.html +20 -0
  109. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +26 -0
  110. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +22 -0
  111. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000085.html → M000077.html} +8 -8
  112. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000086.html → M000078.html} +8 -8
  113. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +31 -0
  114. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000088.html → M000080.html} +7 -7
  115. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +7 -12
  116. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +7 -7
  117. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +7 -12
  118. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000084.html +5 -9
  119. data/doc/rdoc/classes/Mongrel/HttpServer.html +58 -43
  120. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000064.html → M000055.html} +11 -11
  121. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000065.html → M000056.html} +76 -72
  122. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000066.html → M000057.html} +18 -17
  123. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000067.html → M000058.html} +7 -7
  124. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000059.html +22 -0
  125. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000060.html +62 -0
  126. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000069.html → M000061.html} +20 -20
  127. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000070.html → M000062.html} +4 -4
  128. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000071.html → M000063.html} +8 -8
  129. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +15 -15
  130. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000042.html → M000032.html} +23 -25
  131. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000043.html → M000033.html} +11 -11
  132. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000044.html → M000034.html} +12 -12
  133. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +30 -15
  134. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/{M000045.html → M000035.html} +9 -8
  135. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000036.html +54 -0
  136. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000037.html +21 -0
  137. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000038.html +25 -0
  138. data/doc/rdoc/classes/Mongrel/RedirectHandler.html +10 -10
  139. data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000136.html → M000128.html} +8 -8
  140. data/doc/rdoc/classes/Mongrel/RedirectHandler.src/{M000137.html → M000129.html} +13 -13
  141. data/doc/rdoc/classes/Mongrel/StatisticsFilter.html +16 -16
  142. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000125.html +24 -0
  143. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000134.html → M000126.html} +10 -10
  144. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/{M000135.html → M000127.html} +4 -4
  145. data/doc/rdoc/classes/{Stats.html → Mongrel/Stats.html} +44 -60
  146. data/doc/rdoc/classes/Mongrel/Stats.src/M000136.html +19 -0
  147. data/doc/rdoc/classes/Mongrel/Stats.src/M000137.html +23 -0
  148. data/doc/rdoc/classes/Mongrel/Stats.src/M000138.html +26 -0
  149. data/doc/rdoc/classes/Mongrel/Stats.src/M000139.html +18 -0
  150. data/doc/rdoc/classes/{Stats.src/M000009.html → Mongrel/Stats.src/M000140.html} +6 -6
  151. data/doc/rdoc/classes/Mongrel/Stats.src/M000141.html +18 -0
  152. data/doc/rdoc/classes/Mongrel/Stats.src/M000142.html +23 -0
  153. data/doc/rdoc/classes/Mongrel/Stats.src/M000143.html +20 -0
  154. data/doc/rdoc/classes/Mongrel/StatusHandler.html +20 -20
  155. data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000074.html → M000066.html} +4 -4
  156. data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000075.html → M000067.html} +10 -10
  157. data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000076.html → M000068.html} +28 -28
  158. data/doc/rdoc/classes/Mongrel/StatusHandler.src/{M000077.html → M000069.html} +6 -6
  159. data/doc/rdoc/classes/Mongrel/URIClassifier.html +30 -30
  160. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000093.html → M000085.html} +4 -4
  161. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000094.html → M000086.html} +4 -4
  162. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000095.html → M000087.html} +0 -0
  163. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000096.html → M000088.html} +1 -1
  164. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000097.html → M000089.html} +0 -0
  165. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000098.html → M000090.html} +1 -1
  166. data/doc/rdoc/classes/MongrelDbg.html +26 -26
  167. data/doc/rdoc/classes/MongrelDbg.src/M000005.html +24 -0
  168. data/doc/rdoc/classes/MongrelDbg.src/{M000016.html → M000006.html} +6 -6
  169. data/doc/rdoc/classes/MongrelDbg.src/{M000017.html → M000007.html} +8 -8
  170. data/doc/rdoc/classes/MongrelDbg.src/{M000018.html → M000008.html} +7 -7
  171. data/doc/rdoc/classes/MongrelDbg.src/{M000019.html → M000009.html} +4 -4
  172. data/doc/rdoc/classes/RequestLog/Access.html +5 -5
  173. data/doc/rdoc/classes/RequestLog/Access.src/{M000142.html → M000144.html} +5 -5
  174. data/doc/rdoc/classes/RequestLog/Files.html +5 -5
  175. data/doc/rdoc/classes/RequestLog/Files.src/{M000143.html → M000145.html} +5 -5
  176. data/doc/rdoc/classes/RequestLog/Objects.html +12 -6
  177. data/doc/rdoc/classes/RequestLog/Objects.src/M000147.html +51 -0
  178. data/doc/rdoc/classes/RequestLog/Params.html +5 -5
  179. data/doc/rdoc/classes/RequestLog/Params.src/{M000146.html → M000148.html} +5 -5
  180. data/doc/rdoc/classes/RequestLog/Threads.html +5 -5
  181. data/doc/rdoc/classes/RequestLog/Threads.src/{M000144.html → M000146.html} +20 -20
  182. data/doc/rdoc/classes/{ObjectTracker.html → Sync.html} +26 -45
  183. data/doc/rdoc/created.rid +1 -1
  184. data/doc/rdoc/files/COPYING.html +1 -1
  185. data/doc/rdoc/files/LICENSE.html +1 -1
  186. data/doc/rdoc/files/README.html +1 -1
  187. data/doc/rdoc/files/ext/http11/http11_c.html +1 -1
  188. data/doc/rdoc/files/lib/mongrel/camping_rb.html +1 -1
  189. data/doc/rdoc/files/lib/mongrel/cgi_rb.html +1 -1
  190. data/doc/rdoc/files/lib/mongrel/command_rb.html +1 -1
  191. data/doc/rdoc/files/lib/mongrel/configurator_rb.html +111 -0
  192. data/doc/rdoc/files/lib/mongrel/debug_rb.html +1 -1
  193. data/doc/rdoc/files/lib/mongrel/handlers_rb.html +1 -1
  194. data/doc/rdoc/files/lib/mongrel/init_rb.html +1 -1
  195. data/doc/rdoc/files/lib/mongrel/rails_rb.html +2 -1
  196. data/doc/rdoc/files/lib/mongrel/stats_rb.html +1 -1
  197. data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +1 -1
  198. data/doc/rdoc/files/lib/mongrel_rb.html +2 -4
  199. data/doc/rdoc/fr_class_index.html +3 -2
  200. data/doc/rdoc/fr_file_index.html +1 -0
  201. data/doc/rdoc/fr_method_index.html +144 -142
  202. data/ext/http11/http11.c +69 -52
  203. data/ext/http11/http11_parser.c +366 -282
  204. data/ext/http11/http11_parser.h +2 -0
  205. data/ext/http11/http11_parser.rl +192 -0
  206. data/lib/mongrel.rb +127 -433
  207. data/lib/mongrel/cgi.rb +19 -6
  208. data/lib/mongrel/command.rb +15 -3
  209. data/lib/mongrel/configurator.rb +374 -0
  210. data/lib/mongrel/debug.rb +47 -56
  211. data/lib/mongrel/handlers.rb +16 -20
  212. data/lib/mongrel/rails.rb +36 -20
  213. data/lib/mongrel/stats.rb +60 -58
  214. data/test/test_conditional.rb +37 -30
  215. data/test/test_http11.rb +14 -14
  216. data/test/test_stats.rb +2 -2
  217. data/test/test_ws.rb +4 -2
  218. data/tools/rakehelp.rb +4 -4
  219. metadata +262 -260
  220. data/doc/rdoc/classes/Kernel.src/M000020.html +0 -19
  221. data/doc/rdoc/classes/Kernel.src/M000021.html +0 -23
  222. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000104.html +0 -27
  223. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000036.html +0 -24
  224. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000037.html +0 -24
  225. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000038.html +0 -18
  226. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000041.html +0 -50
  227. data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +0 -20
  228. data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +0 -20
  229. data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +0 -23
  230. data/doc/rdoc/classes/Mongrel/Configurator.src/M000118.html +0 -30
  231. data/doc/rdoc/classes/Mongrel/Configurator.src/M000125.html +0 -25
  232. data/doc/rdoc/classes/Mongrel/Configurator.src/M000127.html +0 -35
  233. data/doc/rdoc/classes/Mongrel/Configurator.src/M000128.html +0 -18
  234. data/doc/rdoc/classes/Mongrel/Configurator.src/M000129.html +0 -33
  235. data/doc/rdoc/classes/Mongrel/Configurator.src/M000130.html +0 -18
  236. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000061.html +0 -63
  237. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000138.html +0 -56
  238. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000087.html +0 -31
  239. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000089.html +0 -20
  240. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000090.html +0 -20
  241. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000091.html +0 -20
  242. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000092.html +0 -18
  243. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000068.html +0 -50
  244. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000046.html +0 -51
  245. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000047.html +0 -23
  246. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000133.html +0 -24
  247. data/doc/rdoc/classes/MongrelDbg.src/M000015.html +0 -19
  248. data/doc/rdoc/classes/ObjectTracker.src/M000013.html +0 -27
  249. data/doc/rdoc/classes/ObjectTracker.src/M000014.html +0 -44
  250. data/doc/rdoc/classes/RequestLog/Objects.src/M000145.html +0 -19
  251. data/doc/rdoc/classes/Stats.src/M000005.html +0 -19
  252. data/doc/rdoc/classes/Stats.src/M000006.html +0 -23
  253. data/doc/rdoc/classes/Stats.src/M000007.html +0 -26
  254. data/doc/rdoc/classes/Stats.src/M000008.html +0 -18
  255. data/doc/rdoc/classes/Stats.src/M000010.html +0 -18
  256. data/doc/rdoc/classes/Stats.src/M000011.html +0 -23
  257. data/doc/rdoc/classes/Stats.src/M000012.html +0 -20
  258. data/lib/http11.so +0 -0
@@ -86,13 +86,13 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000055">error?</a>&nbsp;&nbsp;
90
- <a href="#M000054">execute</a>&nbsp;&nbsp;
91
- <a href="#M000053">finish</a>&nbsp;&nbsp;
92
- <a href="#M000056">finished?</a>&nbsp;&nbsp;
93
- <a href="#M000051">new</a>&nbsp;&nbsp;
94
- <a href="#M000057">nread</a>&nbsp;&nbsp;
95
- <a href="#M000052">reset</a>&nbsp;&nbsp;
89
+ <a href="#M000046">error?</a>&nbsp;&nbsp;
90
+ <a href="#M000045">execute</a>&nbsp;&nbsp;
91
+ <a href="#M000044">finish</a>&nbsp;&nbsp;
92
+ <a href="#M000047">finished?</a>&nbsp;&nbsp;
93
+ <a href="#M000042">new</a>&nbsp;&nbsp;
94
+ <a href="#M000048">nread</a>&nbsp;&nbsp;
95
+ <a href="#M000043">reset</a>&nbsp;&nbsp;
96
96
  </div>
97
97
  </div>
98
98
 
@@ -114,12 +114,12 @@
114
114
  <div id="methods">
115
115
  <h3 class="section-bar">Public Class methods</h3>
116
116
 
117
- <div id="method-M000051" class="method-detail">
118
- <a name="M000051"></a>
117
+ <div id="method-M000042" class="method-detail">
118
+ <a name="M000042"></a>
119
119
 
120
120
  <div class="method-heading">
121
- <a href="HttpParser.src/M000051.html" target="Code" class="method-signature"
122
- onclick="popupCode('HttpParser.src/M000051.html');return false;">
121
+ <a href="HttpParser.src/M000042.html" target="Code" class="method-signature"
122
+ onclick="popupCode('HttpParser.src/M000042.html');return false;">
123
123
  <span class="method-name">parser.new &rarr; parser<br />
124
124
  </span>
125
125
  </a>
@@ -134,12 +134,12 @@ Creates a new parser.
134
134
 
135
135
  <h3 class="section-bar">Public Instance methods</h3>
136
136
 
137
- <div id="method-M000055" class="method-detail">
138
- <a name="M000055"></a>
137
+ <div id="method-M000046" class="method-detail">
138
+ <a name="M000046"></a>
139
139
 
140
140
  <div class="method-heading">
141
- <a href="HttpParser.src/M000055.html" target="Code" class="method-signature"
142
- onclick="popupCode('HttpParser.src/M000055.html');return false;">
141
+ <a href="HttpParser.src/M000046.html" target="Code" class="method-signature"
142
+ onclick="popupCode('HttpParser.src/M000046.html');return false;">
143
143
  <span class="method-name">parser.error? &rarr; true/false<br />
144
144
  </span>
145
145
  </a>
@@ -152,12 +152,12 @@ Tells you whether the parser is in an error state.
152
152
  </div>
153
153
  </div>
154
154
 
155
- <div id="method-M000054" class="method-detail">
156
- <a name="M000054"></a>
155
+ <div id="method-M000045" class="method-detail">
156
+ <a name="M000045"></a>
157
157
 
158
158
  <div class="method-heading">
159
- <a href="HttpParser.src/M000054.html" target="Code" class="method-signature"
160
- onclick="popupCode('HttpParser.src/M000054.html');return false;">
159
+ <a href="HttpParser.src/M000045.html" target="Code" class="method-signature"
160
+ onclick="popupCode('HttpParser.src/M000045.html');return false;">
161
161
  <span class="method-name">parser.execute(req_hash, data, start) &rarr; Integer<br />
162
162
  </span>
163
163
  </a>
@@ -185,12 +185,12 @@ so you have to append to the data buffer as you read.
185
185
  </div>
186
186
  </div>
187
187
 
188
- <div id="method-M000053" class="method-detail">
189
- <a name="M000053"></a>
188
+ <div id="method-M000044" class="method-detail">
189
+ <a name="M000044"></a>
190
190
 
191
191
  <div class="method-heading">
192
- <a href="HttpParser.src/M000053.html" target="Code" class="method-signature"
193
- onclick="popupCode('HttpParser.src/M000053.html');return false;">
192
+ <a href="HttpParser.src/M000044.html" target="Code" class="method-signature"
193
+ onclick="popupCode('HttpParser.src/M000044.html');return false;">
194
194
  <span class="method-name">parser.finish &rarr; true/false<br />
195
195
  </span>
196
196
  </a>
@@ -204,12 +204,12 @@ You should call reset after finish it or bad things will happen.
204
204
  </div>
205
205
  </div>
206
206
 
207
- <div id="method-M000056" class="method-detail">
208
- <a name="M000056"></a>
207
+ <div id="method-M000047" class="method-detail">
208
+ <a name="M000047"></a>
209
209
 
210
210
  <div class="method-heading">
211
- <a href="HttpParser.src/M000056.html" target="Code" class="method-signature"
212
- onclick="popupCode('HttpParser.src/M000056.html');return false;">
211
+ <a href="HttpParser.src/M000047.html" target="Code" class="method-signature"
212
+ onclick="popupCode('HttpParser.src/M000047.html');return false;">
213
213
  <span class="method-name">parser.finished? &rarr; true/false<br />
214
214
  </span>
215
215
  </a>
@@ -222,12 +222,12 @@ Tells you whether the parser is finished or not and in a good state.
222
222
  </div>
223
223
  </div>
224
224
 
225
- <div id="method-M000057" class="method-detail">
226
- <a name="M000057"></a>
225
+ <div id="method-M000048" class="method-detail">
226
+ <a name="M000048"></a>
227
227
 
228
228
  <div class="method-heading">
229
- <a href="HttpParser.src/M000057.html" target="Code" class="method-signature"
230
- onclick="popupCode('HttpParser.src/M000057.html');return false;">
229
+ <a href="HttpParser.src/M000048.html" target="Code" class="method-signature"
230
+ onclick="popupCode('HttpParser.src/M000048.html');return false;">
231
231
  <span class="method-name">parser.nread &rarr; Integer<br />
232
232
  </span>
233
233
  </a>
@@ -242,12 +242,12 @@ execute is called.
242
242
  </div>
243
243
  </div>
244
244
 
245
- <div id="method-M000052" class="method-detail">
246
- <a name="M000052"></a>
245
+ <div id="method-M000043" class="method-detail">
246
+ <a name="M000043"></a>
247
247
 
248
248
  <div class="method-heading">
249
- <a href="HttpParser.src/M000052.html" target="Code" class="method-signature"
250
- onclick="popupCode('HttpParser.src/M000052.html');return false;">
249
+ <a href="HttpParser.src/M000043.html" target="Code" class="method-signature"
250
+ onclick="popupCode('HttpParser.src/M000043.html');return false;">
251
251
  <span class="method-name">parser.reset &rarr; nil<br />
252
252
  </span>
253
253
  </a>
@@ -21,7 +21,7 @@ VALUE HttpParser_init(VALUE self)
21
21
  http_parser *http = NULL;
22
22
  DATA_GET(self, http_parser, http);
23
23
  http_parser_init(http);
24
-
24
+
25
25
  return self;
26
26
  }</pre>
27
27
  </body>
@@ -22,7 +22,7 @@ VALUE HttpParser_reset(VALUE self)
22
22
  http_parser *http = NULL;
23
23
  DATA_GET(self, http_parser, http);
24
24
  http_parser_init(http);
25
-
25
+
26
26
  return Qnil;
27
27
  }</pre>
28
28
  </body>
@@ -22,7 +22,7 @@ VALUE HttpParser_finish(VALUE self)
22
22
  http_parser *http = NULL;
23
23
  DATA_GET(self, http_parser, http);
24
24
  http_parser_finish(http);
25
-
25
+
26
26
  return http_parser_is_finished(http) ? Qtrue : Qfalse;
27
27
  }</pre>
28
28
  </body>
@@ -39,15 +39,15 @@ VALUE HttpParser_execute(VALUE self, VALUE req_hash, VALUE data, VALUE start)
39
39
  from = FIX2INT(start);
40
40
  dptr = RSTRING(data)-&gt;ptr;
41
41
  dlen = RSTRING(data)-&gt;len;
42
-
42
+
43
43
  if(from &gt;= dlen) {
44
44
  rb_raise(eHttpParserError, &quot;Requested start is after data buffer end.&quot;);
45
45
  } else {
46
46
  http-&gt;data = (void *)req_hash;
47
47
  http_parser_execute(http, dptr, dlen, from);
48
-
48
+
49
49
  VALIDATE_MAX_LENGTH(http_parser_nread(http), HEADER);
50
-
50
+
51
51
  if(http_parser_has_error(http)) {
52
52
  rb_raise(eHttpParserError, &quot;Invalid HTTP format, parsing fails.&quot;);
53
53
  } else {
@@ -20,7 +20,7 @@ VALUE HttpParser_has_error(VALUE self)
20
20
  {
21
21
  http_parser *http = NULL;
22
22
  DATA_GET(self, http_parser, http);
23
-
23
+
24
24
  return http_parser_has_error(http) ? Qtrue : Qfalse;
25
25
  }</pre>
26
26
  </body>
@@ -20,7 +20,7 @@ VALUE HttpParser_is_finished(VALUE self)
20
20
  {
21
21
  http_parser *http = NULL;
22
22
  DATA_GET(self, http_parser, http);
23
-
23
+
24
24
  return http_parser_is_finished(http) ? Qtrue : Qfalse;
25
25
  }</pre>
26
26
  </body>
@@ -21,7 +21,7 @@ VALUE HttpParser_nread(VALUE self)
21
21
  {
22
22
  http_parser *http = NULL;
23
23
  DATA_GET(self, http_parser, http);
24
-
24
+
25
25
  return INT2FIX(http-&gt;nread);
26
26
  }</pre>
27
27
  </body>
@@ -95,9 +95,9 @@ uses a StringIO object. To be safe, you should assume it works like a file.
95
95
  <p>
96
96
  The HttpHandler.request_notify system is implemented by having <a
97
97
  href="HttpRequest.html">HttpRequest</a> call <a
98
- href="HttpHandler.html#M000078">HttpHandler.request_begins</a>, <a
99
- href="HttpHandler.html#M000079">HttpHandler.request_progress</a>, <a
100
- href="HttpHandler.html#M000080">HttpHandler.process</a> during the <a
98
+ href="HttpHandler.html#M000070">HttpHandler.request_begins</a>, <a
99
+ href="HttpHandler.html#M000071">HttpHandler.request_progress</a>, <a
100
+ href="HttpHandler.html#M000072">HttpHandler.process</a> during the <a
101
101
  href="../IO.html">IO</a> processing. This adds a small amount of overhead
102
102
  but lets you implement finer controlled handlers and filters.
103
103
  </p>
@@ -111,10 +111,12 @@ but lets you implement finer controlled handlers and filters.
111
111
  <h3 class="section-bar">Methods</h3>
112
112
 
113
113
  <div class="name-list">
114
- <a href="#M000139">escape</a>&nbsp;&nbsp;
115
- <a href="#M000138">new</a>&nbsp;&nbsp;
116
- <a href="#M000141">query_parse</a>&nbsp;&nbsp;
117
- <a href="#M000140">unescape</a>&nbsp;&nbsp;
114
+ <a href="#M000133">escape</a>&nbsp;&nbsp;
115
+ <a href="#M000130">new</a>&nbsp;&nbsp;
116
+ <a href="#M000135">query_parse</a>&nbsp;&nbsp;
117
+ <a href="#M000131">read_body</a>&nbsp;&nbsp;
118
+ <a href="#M000132">read_socket</a>&nbsp;&nbsp;
119
+ <a href="#M000134">unescape</a>&nbsp;&nbsp;
118
120
  </div>
119
121
  </div>
120
122
 
@@ -154,12 +156,12 @@ but lets you implement finer controlled handlers and filters.
154
156
  <div id="methods">
155
157
  <h3 class="section-bar">Public Class methods</h3>
156
158
 
157
- <div id="method-M000139" class="method-detail">
158
- <a name="M000139"></a>
159
+ <div id="method-M000133" class="method-detail">
160
+ <a name="M000133"></a>
159
161
 
160
162
  <div class="method-heading">
161
- <a href="HttpRequest.src/M000139.html" target="Code" class="method-signature"
162
- onclick="popupCode('HttpRequest.src/M000139.html');return false;">
163
+ <a href="HttpRequest.src/M000133.html" target="Code" class="method-signature"
164
+ onclick="popupCode('HttpRequest.src/M000133.html');return false;">
163
165
  <span class="method-name">escape</span><span class="method-args">(s)</span>
164
166
  </a>
165
167
  </div>
@@ -173,13 +175,13 @@ faster. Use this rather than the cgi.rb version since it&#8217;s faster.
173
175
  </div>
174
176
  </div>
175
177
 
176
- <div id="method-M000138" class="method-detail">
177
- <a name="M000138"></a>
178
+ <div id="method-M000130" class="method-detail">
179
+ <a name="M000130"></a>
178
180
 
179
181
  <div class="method-heading">
180
- <a href="HttpRequest.src/M000138.html" target="Code" class="method-signature"
181
- onclick="popupCode('HttpRequest.src/M000138.html');return false;">
182
- <span class="method-name">new</span><span class="method-args">(params, initial_body, socket, notifier)</span>
182
+ <a href="HttpRequest.src/M000130.html" target="Code" class="method-signature"
183
+ onclick="popupCode('HttpRequest.src/M000130.html');return false;">
184
+ <span class="method-name">new</span><span class="method-args">(params, socket, dispatcher)</span>
183
185
  </a>
184
186
  </div>
185
187
 
@@ -195,12 +197,12 @@ TODO: Implement tempfile removal when the request is done.
195
197
  </div>
196
198
  </div>
197
199
 
198
- <div id="method-M000141" class="method-detail">
199
- <a name="M000141"></a>
200
+ <div id="method-M000135" class="method-detail">
201
+ <a name="M000135"></a>
200
202
 
201
203
  <div class="method-heading">
202
- <a href="HttpRequest.src/M000141.html" target="Code" class="method-signature"
203
- onclick="popupCode('HttpRequest.src/M000141.html');return false;">
204
+ <a href="HttpRequest.src/M000135.html" target="Code" class="method-signature"
205
+ onclick="popupCode('HttpRequest.src/M000135.html');return false;">
204
206
  <span class="method-name">query_parse</span><span class="method-args">(qs, d = '&amp;;')</span>
205
207
  </a>
206
208
  </div>
@@ -215,12 +217,12 @@ changing the characters used in the second parameter (which defaults to
215
217
  </div>
216
218
  </div>
217
219
 
218
- <div id="method-M000140" class="method-detail">
219
- <a name="M000140"></a>
220
+ <div id="method-M000134" class="method-detail">
221
+ <a name="M000134"></a>
220
222
 
221
223
  <div class="method-heading">
222
- <a href="HttpRequest.src/M000140.html" target="Code" class="method-signature"
223
- onclick="popupCode('HttpRequest.src/M000140.html');return false;">
224
+ <a href="HttpRequest.src/M000134.html" target="Code" class="method-signature"
225
+ onclick="popupCode('HttpRequest.src/M000134.html');return false;">
224
226
  <span class="method-name">unescape</span><span class="method-args">(s)</span>
225
227
  </a>
226
228
  </div>
@@ -233,6 +235,43 @@ href="Camping.html">Camping</a>).
233
235
  </div>
234
236
  </div>
235
237
 
238
+ <h3 class="section-bar">Public Instance methods</h3>
239
+
240
+ <div id="method-M000131" class="method-detail">
241
+ <a name="M000131"></a>
242
+
243
+ <div class="method-heading">
244
+ <a href="HttpRequest.src/M000131.html" target="Code" class="method-signature"
245
+ onclick="popupCode('HttpRequest.src/M000131.html');return false;">
246
+ <span class="method-name">read_body</span><span class="method-args">(remain, total, dispatcher)</span>
247
+ </a>
248
+ </div>
249
+
250
+ <div class="method-description">
251
+ <p>
252
+ Does the heavy lifting of properly reading the larger body requests in
253
+ small chunks. It expects @body to be an <a href="../IO.html">IO</a> object,
254
+ @socket to be valid, and will set @body = nil if the request fails. It also
255
+ expects any initial part of the body that has been read to be in the @body
256
+ already.
257
+ </p>
258
+ </div>
259
+ </div>
260
+
261
+ <div id="method-M000132" class="method-detail">
262
+ <a name="M000132"></a>
263
+
264
+ <div class="method-heading">
265
+ <a href="HttpRequest.src/M000132.html" target="Code" class="method-signature"
266
+ onclick="popupCode('HttpRequest.src/M000132.html');return false;">
267
+ <span class="method-name">read_socket</span><span class="method-args">(len)</span>
268
+ </a>
269
+ </div>
270
+
271
+ <div class="method-description">
272
+ </div>
273
+ </div>
274
+
236
275
 
237
276
  </div>
238
277
 
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>new (Mongrel::HttpRequest)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 190</span>
14
+ 190: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">socket</span>, <span class="ruby-identifier">dispatcher</span>)
15
+ 191: <span class="ruby-ivar">@params</span> = <span class="ruby-identifier">params</span>
16
+ 192: <span class="ruby-ivar">@socket</span> = <span class="ruby-identifier">socket</span>
17
+ 193: <span class="ruby-identifier">content_length</span> = <span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CONTENT_LENGTH</span>].<span class="ruby-identifier">to_i</span>
18
+ 194: <span class="ruby-identifier">remain</span> = <span class="ruby-identifier">content_length</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">http_body</span>.<span class="ruby-identifier">length</span>
19
+ 195:
20
+ 196:
21
+ 197: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_begins</span>(<span class="ruby-identifier">params</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
22
+ 198:
23
+ 199: <span class="ruby-comment cmt"># Some clients (like FF1.0) report 0 for body and then send a body. This will probably truncate them but at least the request goes through usually.</span>
24
+ 200: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0</span>
25
+ 201: <span class="ruby-comment cmt"># we've got everything, pack it up</span>
26
+ 202: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
27
+ 203: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">http_body</span>
28
+ 204: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_progress</span>(<span class="ruby-identifier">params</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">content_length</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
29
+ 205: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
30
+ 206: <span class="ruby-comment cmt"># must read more data to complete body</span>
31
+ 207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator">&gt;</span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">MAX_BODY</span>
32
+ 208: <span class="ruby-comment cmt"># huge body, put it in a tempfile</span>
33
+ 209: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">Tempfile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">MONGREL_TMP_BASE</span>)
34
+ 210: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">binmode</span>
35
+ 211: <span class="ruby-keyword kw">else</span>
36
+ 212: <span class="ruby-comment cmt"># small body, just use that</span>
37
+ 213: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
38
+ 214: <span class="ruby-keyword kw">end</span>
39
+ 215:
40
+ 216: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">http_body</span>
41
+ 217: <span class="ruby-identifier">read_body</span>(<span class="ruby-identifier">remain</span>, <span class="ruby-identifier">content_length</span>, <span class="ruby-identifier">dispatcher</span>)
42
+ 218: <span class="ruby-keyword kw">end</span>
43
+ 219:
44
+ 220: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">rewind</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">body</span>
45
+ 221: <span class="ruby-keyword kw">end</span></pre>
46
+ </body>
47
+ </html>
@@ -0,0 +1,37 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>read_body (Mongrel::HttpRequest)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 228</span>
14
+ 228: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_body</span>(<span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>, <span class="ruby-identifier">dispatcher</span>)
15
+ 229: <span class="ruby-keyword kw">begin</span>
16
+ 230: <span class="ruby-comment cmt"># write the odd sized chunk first</span>
17
+ 231:
18
+ 232: <span class="ruby-identifier">remain</span> <span class="ruby-operator">-=</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">read_socket</span>(<span class="ruby-identifier">remain</span> <span class="ruby-operator">%</span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CHUNK_SIZE</span>))
19
+ 233: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_progress</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
20
+ 234:
21
+ 235: <span class="ruby-comment cmt"># then stream out nothing but perfectly sized chunks</span>
22
+ 236: <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">remain</span> <span class="ruby-operator">&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>
23
+ 237: <span class="ruby-identifier">remain</span> <span class="ruby-operator">-=</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">read_socket</span>(<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CHUNK_SIZE</span>))
24
+ 238: <span class="ruby-comment cmt"># ASSUME: we are writing to a disk and these writes always write the requested amount</span>
25
+ 239: <span class="ruby-identifier">dispatcher</span>.<span class="ruby-identifier">request_progress</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">remain</span>, <span class="ruby-identifier">total</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dispatcher</span>
26
+ 240: <span class="ruby-keyword kw">end</span>
27
+ 241: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Object</span>
28
+ 242: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;ERROR reading http body: #$!&quot;</span>
29
+ 243: <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
30
+ 244: <span class="ruby-comment cmt"># any errors means we should delete the file, including if the file is dumped</span>
31
+ 245: <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Object</span>
32
+ 246: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">delete</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Tempfile</span>
33
+ 247: <span class="ruby-ivar">@body</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># signals that there was a problem</span>
34
+ 248: <span class="ruby-keyword kw">end</span>
35
+ 249: <span class="ruby-keyword kw">end</span></pre>
36
+ </body>
37
+ </html>
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>read_socket (Mongrel::HttpRequest)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 251</span>
14
+ 251: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_socket</span>(<span class="ruby-identifier">len</span>)
15
+ 252: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">closed?</span>
16
+ 253: <span class="ruby-identifier">data</span> = <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">len</span>)
17
+ 254: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">data</span>
18
+ 255: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Socket read return nil&quot;</span>
19
+ 256: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">len</span>
20
+ 257: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Socket read returned insufficient data: #{data.length}&quot;</span>
21
+ 258: <span class="ruby-keyword kw">else</span>
22
+ 259: <span class="ruby-identifier">data</span>
23
+ 260: <span class="ruby-keyword kw">end</span>
24
+ 261: <span class="ruby-keyword kw">else</span>
25
+ 262: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Socket already closed when reading.&quot;</span>
26
+ 263: <span class="ruby-keyword kw">end</span>
27
+ 264: <span class="ruby-keyword kw">end</span></pre>
28
+ </body>
29
+ </html>