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
@@ -0,0 +1,18 @@
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>run_config (Mongrel::Configurator)</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/configurator.rb, line 332</span>
14
+ 332: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run_config</span>(<span class="ruby-identifier">script</span>)
15
+ 333: <span class="ruby-identifier">open</span>(<span class="ruby-identifier">script</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">eval</span>(<span class="ruby-identifier">f</span>.<span class="ruby-identifier">read</span>, <span class="ruby-identifier">proc</span> {<span class="ruby-keyword kw">self</span>}) }
16
+ 334: <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -5,23 +5,32 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>new (Mongrel::Configurator)</title>
8
+ <title>setup_signals (Mongrel::Configurator)</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 741</span>
14
- 741: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">defaults</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
15
- 742: <span class="ruby-ivar">@listener</span> = <span class="ruby-keyword kw">nil</span>
16
- 743: <span class="ruby-ivar">@listener_name</span> = <span class="ruby-keyword kw">nil</span>
17
- 744: <span class="ruby-ivar">@listeners</span> = {}
18
- 745: <span class="ruby-ivar">@defaults</span> = <span class="ruby-identifier">defaults</span>
19
- 746: <span class="ruby-ivar">@needs_restart</span> = <span class="ruby-keyword kw">false</span>
20
- 747: <span class="ruby-ivar">@pid_file</span> = <span class="ruby-identifier">defaults</span>[<span class="ruby-identifier">:pid_file</span>]
21
- 748:
22
- 749: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">blk</span>
23
- 750: <span class="ruby-identifier">cloaker</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>).<span class="ruby-identifier">bind</span>(<span class="ruby-keyword kw">self</span>).<span class="ruby-identifier">call</span>
24
- 751: <span class="ruby-keyword kw">end</span>
25
- 752: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/configurator.rb, line 346</span>
14
+ 346: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setup_signals</span>(<span class="ruby-identifier">options</span>={})
15
+ 347: <span class="ruby-identifier">ops</span> = <span class="ruby-identifier">resolve_defaults</span>(<span class="ruby-identifier">options</span>)
16
+ 348:
17
+ 349: <span class="ruby-comment cmt"># forced shutdown, even if previously restarted (actually just like TERM but for CTRL-C)</span>
18
+ 350: <span class="ruby-identifier">trap</span>(<span class="ruby-value str">&quot;INT&quot;</span>) { <span class="ruby-identifier">log</span> <span class="ruby-value str">&quot;INT signal received.&quot;</span>; <span class="ruby-identifier">stop</span>(<span class="ruby-keyword kw">false</span>) }
19
+ 351:
20
+ 352: <span class="ruby-comment cmt"># clean up the pid file always</span>
21
+ 353: <span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">File</span>.<span class="ruby-identifier">unlink</span>(<span class="ruby-ivar">@pid_file</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pid_file</span> <span class="ruby-keyword kw">and</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-ivar">@pid_file</span>) }
22
+ 354:
23
+ 355: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/mswin/</span>
24
+ 356: <span class="ruby-comment cmt"># graceful shutdown</span>
25
+ 357: <span class="ruby-identifier">trap</span>(<span class="ruby-value str">&quot;TERM&quot;</span>) { <span class="ruby-identifier">log</span> <span class="ruby-value str">&quot;TERM signal received.&quot;</span>; <span class="ruby-identifier">stop</span> }
26
+ 358: <span class="ruby-identifier">trap</span>(<span class="ruby-value str">&quot;USR1&quot;</span>) { <span class="ruby-identifier">log</span> <span class="ruby-node">&quot;USR1 received, toggling $mongrel_debug_client to #{!$mongrel_debug_client}&quot;</span>; <span class="ruby-identifier">$mongrel_debug_client</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">$mongrel_debug_client</span> }
27
+ 359: <span class="ruby-comment cmt"># restart</span>
28
+ 360: <span class="ruby-identifier">trap</span>(<span class="ruby-value str">&quot;USR2&quot;</span>) { <span class="ruby-identifier">log</span> <span class="ruby-value str">&quot;USR2 signal received.&quot;</span>; <span class="ruby-identifier">stop</span>(<span class="ruby-keyword kw">true</span>) }
29
+ 361:
30
+ 362: <span class="ruby-identifier">log</span> <span class="ruby-value str">&quot;Signals ready. TERM =&gt; stop. USR2 =&gt; restart. INT =&gt; stop (no restart).&quot;</span>
31
+ 363: <span class="ruby-keyword kw">else</span>
32
+ 364: <span class="ruby-identifier">log</span> <span class="ruby-value str">&quot;Signals ready. INT =&gt; stop (no restart).&quot;</span>
33
+ 365: <span class="ruby-keyword kw">end</span>
34
+ 366: <span class="ruby-keyword kw">end</span></pre>
26
35
  </body>
27
36
  </html>
@@ -5,27 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>change_privilege (Mongrel::Configurator)</title>
8
+ <title>log (Mongrel::Configurator)</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 755</span>
14
- 755: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">change_privilege</span>(<span class="ruby-identifier">user</span>, <span class="ruby-identifier">group</span>)
15
- 756: <span class="ruby-keyword kw">begin</span>
16
- 757: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">group</span>
17
- 758: <span class="ruby-identifier">log</span> <span class="ruby-node">&quot;Changing group to #{group}.&quot;</span>
18
- 759: <span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-constant">GID</span>.<span class="ruby-identifier">change_privilege</span>(<span class="ruby-constant">Etc</span>.<span class="ruby-identifier">getgrnam</span>(<span class="ruby-identifier">group</span>).<span class="ruby-identifier">gid</span>)
19
- 760: <span class="ruby-keyword kw">end</span>
20
- 761:
21
- 762: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">user</span>
22
- 763: <span class="ruby-identifier">log</span> <span class="ruby-node">&quot;Changing user to #{user}.&quot;</span>
23
- 764: <span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-constant">UID</span>.<span class="ruby-identifier">change_privilege</span>(<span class="ruby-constant">Etc</span>.<span class="ruby-identifier">getpwnam</span>(<span class="ruby-identifier">user</span>).<span class="ruby-identifier">uid</span>)
24
- 765: <span class="ruby-keyword kw">end</span>
25
- 766: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPERM</span>
26
- 767: <span class="ruby-identifier">log</span> <span class="ruby-node">&quot;FAILED to change user:group #{user}:#{group}: #$!&quot;</span>
27
- 768: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
28
- 769: <span class="ruby-keyword kw">end</span>
29
- 770: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/configurator.rb, line 369</span>
14
+ 369: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">log</span>(<span class="ruby-identifier">msg</span>)
15
+ 370: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;** &quot;</span>, <span class="ruby-identifier">msg</span>, <span class="ruby-value str">&quot;\n&quot;</span>
16
+ 371: <span class="ruby-keyword kw">end</span></pre>
30
17
  </body>
31
18
  </html>
@@ -145,10 +145,15 @@ SCRIPT_NAME.
145
145
 
146
146
  </td>
147
147
  </tr>
148
+ <tr class="top-aligned-row context-row">
149
+ <td class="context-item-name">REQUEST_PATH</td>
150
+ <td>=</td>
151
+ <td class="context-item-value">'REQUEST_PATH'.freeze</td>
152
+ </tr>
148
153
  <tr class="top-aligned-row context-row">
149
154
  <td class="context-item-name">MONGREL_VERSION</td>
150
155
  <td>=</td>
151
- <td class="context-item-value">&quot;0.3.13.3&quot;.freeze</td>
156
+ <td class="context-item-value">&quot;0.3.13.4&quot;.freeze</td>
152
157
  </tr>
153
158
  <tr class="top-aligned-row context-row">
154
159
  <td class="context-item-name">MONGREL_TMP_BASE</td>
@@ -164,7 +169,7 @@ problems
164
169
  <tr class="top-aligned-row context-row">
165
170
  <td class="context-item-name">ERROR_404_RESPONSE</td>
166
171
  <td>=</td>
167
- <td class="context-item-value">&quot;HTTP/1.1 404 Not Found\r\nConnection: close\r\nServer: #{MONGREL_VERSION}\r\n\r\nNOT FOUND&quot;.freeze</td>
172
+ <td class="context-item-value">&quot;HTTP/1.1 404 Not Found\r\nConnection: close\r\nServer: Mongrel #{MONGREL_VERSION}\r\n\r\nNOT FOUND&quot;.freeze</td>
168
173
  <td width="3em">&nbsp;</td>
169
174
  <td class="context-item-desc">
170
175
  The standard empty 404 response for bad requests. Use Error4040Handler for
@@ -190,7 +195,7 @@ A common header for indicating the server is too busy. Not used yet.
190
195
  <tr class="top-aligned-row context-row">
191
196
  <td class="context-item-name">CHUNK_SIZE</td>
192
197
  <td>=</td>
193
- <td class="context-item-value">(4 * 1024)</td>
198
+ <td class="context-item-value">(16 * 1024)</td>
194
199
  <td width="3em">&nbsp;</td>
195
200
  <td class="context-item-desc">
196
201
  The basic max request size we&#8217;ll try to read.
@@ -222,7 +227,7 @@ tempfile for reading.
222
227
  <tr class="top-aligned-row context-row">
223
228
  <td class="context-item-name">STATUS_FORMAT</td>
224
229
  <td>=</td>
225
- <td class="context-item-value">&quot;HTTP/1.1 %d %s\r\nContent-Length: %d\r\nConnection: close\r\n&quot;.freeze</td>
230
+ <td class="context-item-value">&quot;HTTP/1.1 %d %s\r\nConnection: close\r\n&quot;.freeze</td>
226
231
  <td width="3em">&nbsp;</td>
227
232
  <td class="context-item-desc">
228
233
  A frozen format for this is about 15% faster
@@ -296,9 +301,9 @@ win32)
296
301
  <td class="context-item-value">&quot;HTTP_X_FORWARDED_FOR&quot;.freeze</td>
297
302
  </tr>
298
303
  <tr class="top-aligned-row context-row">
299
- <td class="context-item-name">HTTP_IF_UNMODIFIED_SINCE</td>
304
+ <td class="context-item-name">HTTP_IF_MODIFIED_SINCE</td>
300
305
  <td>=</td>
301
- <td class="context-item-value">&quot;HTTP_IF_UNMODIFIED_SINCE&quot;.freeze</td>
306
+ <td class="context-item-value">&quot;HTTP_IF_MODIFIED_SINCE&quot;.freeze</td>
302
307
  </tr>
303
308
  <tr class="top-aligned-row context-row">
304
309
  <td class="context-item-name">HTTP_IF_NONE_MATCH</td>
@@ -100,8 +100,8 @@ deflate everything even if the client can&#8217;t handle it.
100
100
  <h3 class="section-bar">Methods</h3>
101
101
 
102
102
  <div class="name-list">
103
- <a href="#M000099">new</a>&nbsp;&nbsp;
104
- <a href="#M000100">process</a>&nbsp;&nbsp;
103
+ <a href="#M000121">new</a>&nbsp;&nbsp;
104
+ <a href="#M000122">process</a>&nbsp;&nbsp;
105
105
  </div>
106
106
  </div>
107
107
 
@@ -136,12 +136,12 @@ deflate everything even if the client can&#8217;t handle it.
136
136
  <div id="methods">
137
137
  <h3 class="section-bar">Public Class methods</h3>
138
138
 
139
- <div id="method-M000099" class="method-detail">
140
- <a name="M000099"></a>
139
+ <div id="method-M000121" class="method-detail">
140
+ <a name="M000121"></a>
141
141
 
142
142
  <div class="method-heading">
143
- <a href="DeflateFilter.src/M000099.html" target="Code" class="method-signature"
144
- onclick="popupCode('DeflateFilter.src/M000099.html');return false;">
143
+ <a href="DeflateFilter.src/M000121.html" target="Code" class="method-signature"
144
+ onclick="popupCode('DeflateFilter.src/M000121.html');return false;">
145
145
  <span class="method-name">new</span><span class="method-args">(ops={})</span>
146
146
  </a>
147
147
  </div>
@@ -152,12 +152,12 @@ deflate everything even if the client can&#8217;t handle it.
152
152
 
153
153
  <h3 class="section-bar">Public Instance methods</h3>
154
154
 
155
- <div id="method-M000100" class="method-detail">
156
- <a name="M000100"></a>
155
+ <div id="method-M000122" class="method-detail">
156
+ <a name="M000122"></a>
157
157
 
158
158
  <div class="method-heading">
159
- <a href="DeflateFilter.src/M000100.html" target="Code" class="method-signature"
160
- onclick="popupCode('DeflateFilter.src/M000100.html');return false;">
159
+ <a href="DeflateFilter.src/M000122.html" target="Code" class="method-signature"
160
+ onclick="popupCode('DeflateFilter.src/M000122.html');return false;">
161
161
  <span class="method-name">process</span><span class="method-args">(request, response)</span>
162
162
  </a>
163
163
  </div>
@@ -10,10 +10,10 @@
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/handlers.rb, line 291</span>
14
- 291: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">ops</span>={})
15
- 292: <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">ops</span>
16
- 293: <span class="ruby-ivar">@always_deflate</span> = <span class="ruby-identifier">ops</span>[<span class="ruby-identifier">:always_deflate</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword kw">false</span>
17
- 294: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/handlers.rb, line 287</span>
14
+ 287: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">ops</span>={})
15
+ 288: <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">ops</span>
16
+ 289: <span class="ruby-ivar">@always_deflate</span> = <span class="ruby-identifier">ops</span>[<span class="ruby-identifier">:always_deflate</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword kw">false</span>
17
+ 290: <span class="ruby-keyword kw">end</span></pre>
18
18
  </body>
19
19
  </html>
@@ -10,19 +10,19 @@
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/handlers.rb, line 296</span>
14
- 296: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>)
15
- 297: <span class="ruby-identifier">accepts</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-constant">HTTP_ACCEPT_ENCODING</span>]
16
- 298: <span class="ruby-comment cmt"># only process if they support compression</span>
17
- 299: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@always_deflate</span> <span class="ruby-keyword kw">or</span> (<span class="ruby-identifier">accepts</span> <span class="ruby-keyword kw">and</span> (<span class="ruby-identifier">accepts</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">&quot;deflate&quot;</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body_sent</span>))
18
- 300: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">&quot;Content-Encoding&quot;</span>] = <span class="ruby-value str">&quot;deflate&quot;</span>
19
- 301: <span class="ruby-comment cmt"># we can't just rewind the body and gzip it since the body could be an attached file</span>
20
- 302: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">rewind</span>
21
- 303: <span class="ruby-identifier">gzout</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Zlib</span><span class="ruby-operator">::</span><span class="ruby-constant">Deflate</span>.<span class="ruby-identifier">deflate</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">read</span>))
22
- 304: <span class="ruby-identifier">gzout</span>.<span class="ruby-identifier">rewind</span>
23
- 305: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">close</span>
24
- 306: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">gzout</span>
25
- 307: <span class="ruby-keyword kw">end</span>
26
- 308: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/handlers.rb, line 292</span>
14
+ 292: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>)
15
+ 293: <span class="ruby-identifier">accepts</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-constant">HTTP_ACCEPT_ENCODING</span>]
16
+ 294: <span class="ruby-comment cmt"># only process if they support compression</span>
17
+ 295: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@always_deflate</span> <span class="ruby-keyword kw">or</span> (<span class="ruby-identifier">accepts</span> <span class="ruby-keyword kw">and</span> (<span class="ruby-identifier">accepts</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">&quot;deflate&quot;</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body_sent</span>))
18
+ 296: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">&quot;Content-Encoding&quot;</span>] = <span class="ruby-value str">&quot;deflate&quot;</span>
19
+ 297: <span class="ruby-comment cmt"># we can't just rewind the body and gzip it since the body could be an attached file</span>
20
+ 298: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">rewind</span>
21
+ 299: <span class="ruby-identifier">gzout</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Zlib</span><span class="ruby-operator">::</span><span class="ruby-constant">Deflate</span>.<span class="ruby-identifier">deflate</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">read</span>))
22
+ 300: <span class="ruby-identifier">gzout</span>.<span class="ruby-identifier">rewind</span>
23
+ 301: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">close</span>
24
+ 302: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">gzout</span>
25
+ 303: <span class="ruby-keyword kw">end</span>
26
+ 304: <span class="ruby-keyword kw">end</span></pre>
27
27
  </body>
28
28
  </html>
@@ -108,12 +108,12 @@ DirHandler.default_content_type attribute.
108
108
  <h3 class="section-bar">Methods</h3>
109
109
 
110
110
  <div class="name-list">
111
- <a href="#M000063">add_mime_type</a>&nbsp;&nbsp;
112
- <a href="#M000059">can_serve</a>&nbsp;&nbsp;
113
- <a href="#M000058">new</a>&nbsp;&nbsp;
114
- <a href="#M000062">process</a>&nbsp;&nbsp;
115
- <a href="#M000060">send_dir_listing</a>&nbsp;&nbsp;
116
- <a href="#M000061">send_file</a>&nbsp;&nbsp;
111
+ <a href="#M000054">add_mime_type</a>&nbsp;&nbsp;
112
+ <a href="#M000050">can_serve</a>&nbsp;&nbsp;
113
+ <a href="#M000049">new</a>&nbsp;&nbsp;
114
+ <a href="#M000053">process</a>&nbsp;&nbsp;
115
+ <a href="#M000051">send_dir_listing</a>&nbsp;&nbsp;
116
+ <a href="#M000052">send_file</a>&nbsp;&nbsp;
117
117
  </div>
118
118
  </div>
119
119
 
@@ -176,12 +176,12 @@ DirHandler.default_content_type attribute.
176
176
  <div id="methods">
177
177
  <h3 class="section-bar">Public Class methods</h3>
178
178
 
179
- <div id="method-M000063" class="method-detail">
180
- <a name="M000063"></a>
179
+ <div id="method-M000054" class="method-detail">
180
+ <a name="M000054"></a>
181
181
 
182
182
  <div class="method-heading">
183
- <a href="DirHandler.src/M000063.html" target="Code" class="method-signature"
184
- onclick="popupCode('DirHandler.src/M000063.html');return false;">
183
+ <a href="DirHandler.src/M000054.html" target="Code" class="method-signature"
184
+ onclick="popupCode('DirHandler.src/M000054.html');return false;">
185
185
  <span class="method-name">add_mime_type</span><span class="method-args">(extension, type)</span>
186
186
  </a>
187
187
  </div>
@@ -194,12 +194,12 @@ you add any others you&#8217;ll need when serving content.
194
194
  </div>
195
195
  </div>
196
196
 
197
- <div id="method-M000058" class="method-detail">
198
- <a name="M000058"></a>
197
+ <div id="method-M000049" class="method-detail">
198
+ <a name="M000049"></a>
199
199
 
200
200
  <div class="method-heading">
201
- <a href="DirHandler.src/M000058.html" target="Code" class="method-signature"
202
- onclick="popupCode('DirHandler.src/M000058.html');return false;">
201
+ <a href="DirHandler.src/M000049.html" target="Code" class="method-signature"
202
+ onclick="popupCode('DirHandler.src/M000049.html');return false;">
203
203
  <span class="method-name">new</span><span class="method-args">(path, listing_allowed=true, index_html=&quot;index.html&quot;)</span>
204
204
  </a>
205
205
  </div>
@@ -213,12 +213,12 @@ You give it the path to the directory root and an (optional)
213
213
 
214
214
  <h3 class="section-bar">Public Instance methods</h3>
215
215
 
216
- <div id="method-M000059" class="method-detail">
217
- <a name="M000059"></a>
216
+ <div id="method-M000050" class="method-detail">
217
+ <a name="M000050"></a>
218
218
 
219
219
  <div class="method-heading">
220
- <a href="DirHandler.src/M000059.html" target="Code" class="method-signature"
221
- onclick="popupCode('DirHandler.src/M000059.html');return false;">
220
+ <a href="DirHandler.src/M000050.html" target="Code" class="method-signature"
221
+ onclick="popupCode('DirHandler.src/M000050.html');return false;">
222
222
  <span class="method-name">can_serve</span><span class="method-args">(path_info)</span>
223
223
  </a>
224
224
  </div>
@@ -231,12 +231,12 @@ not).
231
231
  </div>
232
232
  </div>
233
233
 
234
- <div id="method-M000062" class="method-detail">
235
- <a name="M000062"></a>
234
+ <div id="method-M000053" class="method-detail">
235
+ <a name="M000053"></a>
236
236
 
237
237
  <div class="method-heading">
238
- <a href="DirHandler.src/M000062.html" target="Code" class="method-signature"
239
- onclick="popupCode('DirHandler.src/M000062.html');return false;">
238
+ <a href="DirHandler.src/M000053.html" target="Code" class="method-signature"
239
+ onclick="popupCode('DirHandler.src/M000053.html');return false;">
240
240
  <span class="method-name">process</span><span class="method-args">(request, response)</span>
241
241
  </a>
242
242
  </div>
@@ -249,12 +249,12 @@ allowed (based on the listing_allowed parameter to the constructor).
249
249
  </div>
250
250
  </div>
251
251
 
252
- <div id="method-M000060" class="method-detail">
253
- <a name="M000060"></a>
252
+ <div id="method-M000051" class="method-detail">
253
+ <a name="M000051"></a>
254
254
 
255
255
  <div class="method-heading">
256
- <a href="DirHandler.src/M000060.html" target="Code" class="method-signature"
257
- onclick="popupCode('DirHandler.src/M000060.html');return false;">
256
+ <a href="DirHandler.src/M000051.html" target="Code" class="method-signature"
257
+ onclick="popupCode('DirHandler.src/M000051.html');return false;">
258
258
  <span class="method-name">send_dir_listing</span><span class="method-args">(base, dir, response)</span>
259
259
  </a>
260
260
  </div>
@@ -264,18 +264,18 @@ allowed (based on the listing_allowed parameter to the constructor).
264
264
  Returns a simplistic directory listing if they&#8217;re enabled, otherwise
265
265
  a 403. Base is the base URI from the REQUEST_URI, dir is the directory to
266
266
  serve on the file system (comes from <a
267
- href="DirHandler.html#M000059">can_serve</a>()), and response is the <a
267
+ href="DirHandler.html#M000050">can_serve</a>()), and response is the <a
268
268
  href="HttpResponse.html">HttpResponse</a> object to send the results on.
269
269
  </p>
270
270
  </div>
271
271
  </div>
272
272
 
273
- <div id="method-M000061" class="method-detail">
274
- <a name="M000061"></a>
273
+ <div id="method-M000052" class="method-detail">
274
+ <a name="M000052"></a>
275
275
 
276
276
  <div class="method-heading">
277
- <a href="DirHandler.src/M000061.html" target="Code" class="method-signature"
278
- onclick="popupCode('DirHandler.src/M000061.html');return false;">
277
+ <a href="DirHandler.src/M000052.html" target="Code" class="method-signature"
278
+ onclick="popupCode('DirHandler.src/M000052.html');return false;">
279
279
  <span class="method-name">send_file</span><span class="method-args">(req_path, request, response, header_only=false)</span>
280
280
  </a>
281
281
  </div>
@@ -21,22 +21,18 @@
21
21
  173: <span class="ruby-identifier">head</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CONTENT_TYPE</span>] = <span class="ruby-value str">&quot;text/html&quot;</span>
22
22
  174: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;Directory Listing&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&quot;</span>
23
23
  175: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">entries</span>(<span class="ruby-identifier">dir</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
24
- 176: <span class="ruby-identifier">child</span> = <span class="ruby-constant">HttpRequest</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-identifier">child</span>)
25
- 177: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">child</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;.&quot;</span>
26
- 178:
27
- 179: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">child</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;..&quot;</span>
28
- 180: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;&lt;a href=\&quot;#{base}/#{child}\&quot;&gt;Up to parent..&lt;/a&gt;&lt;br/&gt;&quot;</span>
29
- 181: <span class="ruby-keyword kw">else</span>
30
- 182: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;&lt;a href=\&quot;#{base}/#{child}/\&quot;&gt;#{child}&lt;/a&gt;&lt;br/&gt;&quot;</span>
31
- 183: <span class="ruby-keyword kw">end</span>
32
- 184: <span class="ruby-keyword kw">end</span>
33
- 185: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</span>
24
+ 176: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">child</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;.&quot;</span>
25
+ 177: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;&lt;a href=\&quot;#{base}/#{ HttpRequest.escape(child)}\&quot;&gt;&quot;</span>
26
+ 178: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">child</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;..&quot;</span> <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;Up to parent..&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">child</span>)
27
+ 179: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&lt;/a&gt;&lt;br/&gt;&quot;</span>
28
+ 180: <span class="ruby-keyword kw">end</span>
29
+ 181: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</span>
30
+ 182: <span class="ruby-keyword kw">end</span>
31
+ 183: <span class="ruby-keyword kw">else</span>
32
+ 184: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">start</span>(<span class="ruby-value">403</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">head</span>,<span class="ruby-identifier">out</span><span class="ruby-operator">|</span>
33
+ 185: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">write</span>(<span class="ruby-value str">&quot;Directory listings not allowed&quot;</span>)
34
34
  186: <span class="ruby-keyword kw">end</span>
35
- 187: <span class="ruby-keyword kw">else</span>
36
- 188: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">start</span>(<span class="ruby-value">403</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">head</span>,<span class="ruby-identifier">out</span><span class="ruby-operator">|</span>
37
- 189: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">write</span>(<span class="ruby-value str">&quot;Directory listings not allowed&quot;</span>)
38
- 190: <span class="ruby-keyword kw">end</span>
39
- 191: <span class="ruby-keyword kw">end</span>
40
- 192: <span class="ruby-keyword kw">end</span></pre>
35
+ 187: <span class="ruby-keyword kw">end</span>
36
+ 188: <span class="ruby-keyword kw">end</span></pre>
41
37
  </body>
42
38
  </html>
@@ -0,0 +1,63 @@
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>send_file (Mongrel::DirHandler)</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/handlers.rb, line 193</span>
14
+ 193: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_file</span>(<span class="ruby-identifier">req_path</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>, <span class="ruby-identifier">header_only</span>=<span class="ruby-keyword kw">false</span>)
15
+ 194:
16
+ 195: <span class="ruby-identifier">stat</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">stat</span>(<span class="ruby-identifier">req_path</span>)
17
+ 196:
18
+ 197: <span class="ruby-comment cmt"># Set the last modified times as well and etag for all files</span>
19
+ 198: <span class="ruby-identifier">mtime</span> = <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">mtime</span>
20
+ 199: <span class="ruby-comment cmt"># Calculated the same as apache, not sure how well the works on win32</span>
21
+ 200: <span class="ruby-identifier">etag</span> = <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">ETAG_FORMAT</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">mtime</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">size</span>, <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">ino</span>]
22
+ 201:
23
+ 202: <span class="ruby-identifier">modified_since</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_IF_MODIFIED_SINCE</span>]
24
+ 203: <span class="ruby-identifier">none_match</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_IF_NONE_MATCH</span>]
25
+ 204:
26
+ 205: <span class="ruby-comment cmt"># test to see if this is a conditional request, and test if</span>
27
+ 206: <span class="ruby-comment cmt"># the response would be identical to the last response</span>
28
+ 207: <span class="ruby-identifier">same_response</span> = <span class="ruby-keyword kw">case</span>
29
+ 208: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">modified_since</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">last_response_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">httpdate</span>(<span class="ruby-identifier">modified_since</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
30
+ 209: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">modified_since</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">last_response_time</span> <span class="ruby-operator">&gt;</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
31
+ 210: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">modified_since</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">mtime</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">last_response_time</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
32
+ 211: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">none_match</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">none_match</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'*'</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
33
+ 212: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">none_match</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">none_match</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/\s*,\s*/</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">etag</span>) <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
34
+ 213: <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">modified_since</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">none_match</span> <span class="ruby-comment cmt"># validation successful if we get this far and at least one of the header exists</span>
35
+ 214: <span class="ruby-keyword kw">end</span>
36
+ 215:
37
+ 216: <span class="ruby-identifier">header</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>
38
+ 217: <span class="ruby-identifier">header</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">ETAG</span>] = <span class="ruby-identifier">etag</span>
39
+ 218:
40
+ 219: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">same_response</span>
41
+ 220: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">start</span>(<span class="ruby-value">304</span>) {}
42
+ 221: <span class="ruby-keyword kw">else</span>
43
+ 222: <span class="ruby-comment cmt"># first we setup the headers and status then we do a very fast send on the socket directly</span>
44
+ 223: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-value">200</span>
45
+ 224: <span class="ruby-identifier">header</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">LAST_MODIFIED</span>] = <span class="ruby-identifier">mtime</span>.<span class="ruby-identifier">httpdate</span>
46
+ 225:
47
+ 226: <span class="ruby-comment cmt"># set the mime type from our map based on the ending</span>
48
+ 227: <span class="ruby-identifier">dot_at</span> = <span class="ruby-identifier">req_path</span>.<span class="ruby-identifier">rindex</span>(<span class="ruby-value str">'.'</span>)
49
+ 228: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dot_at</span>
50
+ 229: <span class="ruby-identifier">header</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CONTENT_TYPE</span>] = <span class="ruby-constant">MIME_TYPES</span>[<span class="ruby-identifier">req_path</span>[<span class="ruby-identifier">dot_at</span> <span class="ruby-operator">..</span> <span class="ruby-value">-1</span>]] <span class="ruby-operator">||</span> <span class="ruby-ivar">@default_content_type</span>
51
+ 230: <span class="ruby-keyword kw">end</span>
52
+ 231:
53
+ 232: <span class="ruby-comment cmt"># send a status with out content length</span>
54
+ 233: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-identifier">stat</span>.<span class="ruby-identifier">size</span>)
55
+ 234: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
56
+ 235:
57
+ 236: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">header_only</span>
58
+ 237: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_file</span>(<span class="ruby-identifier">req_path</span>, <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CHUNK_SIZE</span> <span class="ruby-operator">*</span> <span class="ruby-value">2</span>)
59
+ 238: <span class="ruby-keyword kw">end</span>
60
+ 239: <span class="ruby-keyword kw">end</span>
61
+ 240: <span class="ruby-keyword kw">end</span></pre>
62
+ </body>
63
+ </html>