passenger 2.0.6 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (497) hide show
  1. data/DEVELOPERS.TXT +10 -4
  2. data/LICENSE +1 -1
  3. data/NEWS +0 -0
  4. data/Rakefile +183 -117
  5. data/benchmark/dispatcher.rb +5 -9
  6. data/bin/passenger-install-apache2-module +52 -18
  7. data/bin/passenger-memory-stats +67 -13
  8. data/bin/passenger-spawn-server +8 -4
  9. data/bin/passenger-status +21 -46
  10. data/bin/passenger-stress-test +5 -5
  11. data/debian/postinst +1 -1
  12. data/doc/ApplicationPool algorithm.txt +180 -128
  13. data/doc/Architectural overview.html +1 -778
  14. data/doc/Security of user switching support.html +1 -643
  15. data/doc/Users guide Apache.html +3127 -0
  16. data/doc/Users guide Nginx.html +1458 -0
  17. data/doc/Users guide.html +1404 -467
  18. data/doc/Users guide.txt +843 -105
  19. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +751 -641
  20. data/doc/cxxapi/ApplicationPool_8h-source.html +168 -171
  21. data/doc/cxxapi/Application_8h-source.html +494 -394
  22. data/doc/cxxapi/Bucket_8h-source.html +21 -15
  23. data/doc/cxxapi/CachedFileStat_8h-source.html +191 -0
  24. data/doc/cxxapi/Configuration_8h-source.html +311 -149
  25. data/doc/cxxapi/DirectoryMapper_8h-source.html +309 -0
  26. data/doc/cxxapi/DummySpawnManager_8h-source.html +3 -4
  27. data/doc/cxxapi/Exceptions_8h-source.html +182 -165
  28. data/doc/cxxapi/FileChecker_8h-source.html +130 -0
  29. data/doc/cxxapi/Hooks_8h-source.html +2 -3
  30. data/doc/cxxapi/Logging_8h-source.html +92 -89
  31. data/doc/cxxapi/MessageChannel_8h-source.html +585 -477
  32. data/doc/cxxapi/PoolOptions_8h-source.html +305 -0
  33. data/doc/cxxapi/SpawnManager_8h-source.html +515 -540
  34. data/doc/cxxapi/StandardApplicationPool_8h-source.html +779 -679
  35. data/doc/cxxapi/SystemTime_8h-source.html +104 -0
  36. data/doc/cxxapi/Utils_8h-source.html +331 -227
  37. data/doc/cxxapi/annotated.html +6 -7
  38. data/doc/cxxapi/classClient-members.html +1 -2
  39. data/doc/cxxapi/classClient.html +1 -2
  40. data/doc/cxxapi/classHooks-members.html +5 -2
  41. data/doc/cxxapi/classHooks.html +112 -2
  42. data/doc/cxxapi/classPassenger_1_1Application-members.html +2 -3
  43. data/doc/cxxapi/classPassenger_1_1Application.html +8 -9
  44. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
  45. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +42 -81
  46. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +1 -2
  47. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +3 -4
  48. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  49. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +3 -2
  50. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +74 -3
  51. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +1 -2
  52. data/doc/cxxapi/classPassenger_1_1BusyException.html +2 -3
  53. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +1 -2
  54. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +2 -3
  55. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +38 -0
  56. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +256 -0
  57. data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +1 -2
  58. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +2 -3
  59. data/doc/cxxapi/{classPassenger_1_1Thread-members.html → classPassenger_1_1FileChecker-members.html} +4 -5
  60. data/doc/cxxapi/classPassenger_1_1FileChecker.html +121 -0
  61. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +1 -2
  62. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +2 -3
  63. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  64. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -3
  65. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +2 -3
  66. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  67. data/doc/cxxapi/classPassenger_1_1IOException-members.html +1 -2
  68. data/doc/cxxapi/classPassenger_1_1IOException.html +2 -3
  69. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  70. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +5 -2
  71. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +155 -5
  72. data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption-members.html → classPassenger_1_1RuntimeException-members.html} +2 -3
  73. data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption.html → classPassenger_1_1RuntimeException.html} +10 -8
  74. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -2
  75. data/doc/cxxapi/classPassenger_1_1SpawnException.html +2 -3
  76. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +2 -3
  77. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +15 -56
  78. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +5 -4
  79. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +20 -81
  80. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  81. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -3
  82. data/doc/cxxapi/classPassenger_1_1SystemException.html +9 -10
  83. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  84. data/doc/cxxapi/{classboost_1_1this__thread_1_1disable__syscall__interruption-members.html → classPassenger_1_1SystemTime-members.html} +5 -3
  85. data/doc/cxxapi/classPassenger_1_1SystemTime.html +86 -0
  86. data/doc/cxxapi/classPassenger_1_1TempFile-members.html +2 -3
  87. data/doc/cxxapi/classPassenger_1_1TempFile.html +17 -9
  88. data/doc/cxxapi/definitions_8h-source.html +1 -2
  89. data/doc/cxxapi/files.html +6 -3
  90. data/doc/cxxapi/functions.html +98 -35
  91. data/doc/cxxapi/functions_func.html +60 -32
  92. data/doc/cxxapi/functions_type.html +1 -2
  93. data/doc/cxxapi/functions_vars.html +27 -2
  94. data/doc/cxxapi/graph_legend.html +1 -2
  95. data/doc/cxxapi/graph_legend.png +0 -0
  96. data/doc/cxxapi/group__Configuration.html +3 -4
  97. data/doc/cxxapi/group__Configuration.png +0 -0
  98. data/doc/cxxapi/group__Core.html +3 -4
  99. data/doc/cxxapi/group__Core.png +0 -0
  100. data/doc/cxxapi/group__Exceptions.html +4 -2
  101. data/doc/cxxapi/group__Hooks.html +1 -6
  102. data/doc/cxxapi/group__Hooks.png +0 -0
  103. data/doc/cxxapi/group__Support.html +259 -36
  104. data/doc/cxxapi/hierarchy.html +6 -7
  105. data/doc/cxxapi/inherit__graph__0.map +1 -1
  106. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  107. data/doc/cxxapi/inherit__graph__0.png +0 -0
  108. data/doc/cxxapi/inherit__graph__1.map +1 -1
  109. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  110. data/doc/cxxapi/inherit__graph__1.png +0 -0
  111. data/doc/cxxapi/inherit__graph__10.map +1 -1
  112. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  113. data/doc/cxxapi/inherit__graph__10.png +0 -0
  114. data/doc/cxxapi/inherit__graph__11.map +1 -1
  115. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  116. data/doc/cxxapi/inherit__graph__11.png +0 -0
  117. data/doc/cxxapi/inherit__graph__12.map +2 -1
  118. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  119. data/doc/cxxapi/inherit__graph__12.png +0 -0
  120. data/doc/cxxapi/inherit__graph__13.map +1 -1
  121. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  122. data/doc/cxxapi/inherit__graph__13.png +0 -0
  123. data/doc/cxxapi/inherit__graph__14.map +1 -2
  124. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  125. data/doc/cxxapi/inherit__graph__14.png +0 -0
  126. data/doc/cxxapi/inherit__graph__15.map +1 -1
  127. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  128. data/doc/cxxapi/inherit__graph__15.png +0 -0
  129. data/doc/cxxapi/inherit__graph__16.map +1 -1
  130. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  131. data/doc/cxxapi/inherit__graph__16.png +0 -0
  132. data/doc/cxxapi/inherit__graph__17.png +0 -0
  133. data/doc/cxxapi/inherit__graph__18.png +0 -0
  134. data/doc/cxxapi/inherit__graph__19.png +0 -0
  135. data/doc/cxxapi/inherit__graph__2.map +1 -1
  136. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  137. data/doc/cxxapi/inherit__graph__2.png +0 -0
  138. data/doc/cxxapi/inherit__graph__20.map +1 -1
  139. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  140. data/doc/cxxapi/inherit__graph__20.png +0 -0
  141. data/doc/cxxapi/inherit__graph__21.map +1 -1
  142. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  143. data/doc/cxxapi/inherit__graph__21.png +0 -0
  144. data/doc/cxxapi/inherit__graph__3.map +1 -1
  145. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  146. data/doc/cxxapi/inherit__graph__3.png +0 -0
  147. data/doc/cxxapi/inherit__graph__4.map +1 -1
  148. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  149. data/doc/cxxapi/inherit__graph__4.png +0 -0
  150. data/doc/cxxapi/inherit__graph__5.map +2 -1
  151. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  152. data/doc/cxxapi/inherit__graph__5.png +0 -0
  153. data/doc/cxxapi/inherit__graph__6.map +1 -1
  154. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  155. data/doc/cxxapi/inherit__graph__6.png +0 -0
  156. data/doc/cxxapi/inherit__graph__7.map +1 -1
  157. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  158. data/doc/cxxapi/inherit__graph__7.png +0 -0
  159. data/doc/cxxapi/inherit__graph__8.map +1 -1
  160. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  161. data/doc/cxxapi/inherit__graph__8.png +0 -0
  162. data/doc/cxxapi/inherit__graph__9.map +1 -2
  163. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  164. data/doc/cxxapi/inherit__graph__9.png +0 -0
  165. data/doc/cxxapi/inherits.html +30 -31
  166. data/doc/cxxapi/main.html +1 -2
  167. data/doc/cxxapi/modules.html +1 -2
  168. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +1 -2
  169. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +2 -3
  170. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +1 -2
  171. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +2 -3
  172. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +49 -0
  173. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +404 -0
  174. data/doc/cxxapi/tree.html +18 -20
  175. data/doc/images/conservative_spawning.png +0 -0
  176. data/doc/images/conservative_spawning.svg +248 -0
  177. data/doc/images/smart-lv2.png +0 -0
  178. data/doc/images/smart-lv2.svg +320 -0
  179. data/doc/rdoc/classes/ConditionVariable.html +68 -34
  180. data/doc/rdoc/classes/Exception.html +16 -16
  181. data/doc/rdoc/classes/GC.html +9 -9
  182. data/doc/rdoc/classes/IO.html +36 -17
  183. data/doc/rdoc/classes/PhusionPassenger.html +183 -0
  184. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +511 -0
  185. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer.html +285 -242
  186. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerAlreadyStarted.html +3 -3
  187. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerError.html +3 -3
  188. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerNotStarted.html +3 -3
  189. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/UnknownMessage.html +3 -3
  190. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +598 -0
  191. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +140 -0
  192. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +247 -0
  193. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +138 -0
  194. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AppInitError.html +36 -19
  195. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/Application.html +81 -96
  196. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/ConsoleTextTemplate.html +18 -18
  197. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/FrameworkInitError.html +20 -18
  198. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/HTMLTemplate.html +18 -18
  199. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/InitializationError.html +9 -9
  200. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  201. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/MessageChannel.html +93 -92
  202. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/NativeSupport.html +55 -25
  203. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  204. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +185 -0
  205. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +182 -0
  206. data/doc/rdoc/classes/PhusionPassenger/Railz.html +95 -0
  207. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +424 -0
  208. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +98 -0
  209. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +200 -0
  210. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +444 -0
  211. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +98 -0
  212. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +154 -0
  213. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +408 -0
  214. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/UnknownError.html +13 -13
  215. data/doc/rdoc/classes/PhusionPassenger/Utils.html +687 -0
  216. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/VersionNotFound.html +8 -8
  217. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  218. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +188 -0
  219. data/doc/rdoc/classes/PlatformInfo.html +663 -159
  220. data/doc/rdoc/classes/RakeExtensions.html +4 -4
  221. data/doc/rdoc/classes/Signal.html +134 -0
  222. data/doc/rdoc/created.rid +1 -1
  223. data/doc/rdoc/files/DEVELOPERS_TXT.html +15 -10
  224. data/doc/rdoc/files/README.html +5 -7
  225. data/doc/rdoc/files/ext/{passenger → phusion_passenger}/native_support_c.html +2 -2
  226. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_request_handler_rb.html +7 -9
  227. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +120 -0
  228. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_server_rb.html +7 -10
  229. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +99 -0
  230. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +92 -0
  231. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/application_rb.html +6 -8
  232. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/console_text_template_rb.html +5 -7
  233. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/constants_rb.html +4 -5
  234. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/dependencies_rb.html +6 -8
  235. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +116 -0
  236. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/exceptions_rb.html +5 -7
  237. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/html_template_rb.html +5 -7
  238. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/message_channel_rb.html +5 -7
  239. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/platform_info_rb.html +6 -7
  240. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +123 -0
  241. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +117 -0
  242. data/doc/rdoc/files/lib/{passenger/utils_rb.html → phusion_passenger/railz/application_spawner_rb.html} +24 -17
  243. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +126 -0
  244. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +139 -0
  245. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +118 -0
  246. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/simple_benchmarking_rb.html +5 -7
  247. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/spawn_manager_rb.html +40 -24
  248. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +169 -0
  249. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +120 -0
  250. data/doc/rdoc/files/lib/rake/extensions_rb.html +3 -4
  251. data/doc/rdoc/fr_class_index.html +37 -19
  252. data/doc/rdoc/fr_file_index.html +25 -14
  253. data/doc/rdoc/fr_method_index.html +145 -74
  254. data/ext/apache2/Application.h +145 -44
  255. data/ext/apache2/ApplicationPool.h +27 -29
  256. data/ext/apache2/ApplicationPoolServer.h +183 -72
  257. data/ext/apache2/ApplicationPoolServerExecutable.cpp +249 -42
  258. data/ext/apache2/Bucket.cpp +61 -9
  259. data/ext/apache2/Bucket.h +15 -8
  260. data/ext/apache2/CachedFileStat.cpp +114 -0
  261. data/ext/apache2/CachedFileStat.h +169 -0
  262. data/ext/apache2/Configuration.cpp +213 -22
  263. data/ext/apache2/Configuration.h +176 -13
  264. data/ext/apache2/DirectoryMapper.h +287 -0
  265. data/ext/apache2/Exceptions.h +30 -12
  266. data/ext/apache2/FileChecker.h +108 -0
  267. data/ext/apache2/Hooks.cpp +709 -493
  268. data/ext/apache2/LICENSE-CNRI.TXT +15 -0
  269. data/ext/apache2/Logging.h +26 -22
  270. data/ext/apache2/MessageChannel.h +124 -15
  271. data/ext/apache2/PoolOptions.h +283 -0
  272. data/ext/apache2/SpawnManager.h +75 -99
  273. data/ext/apache2/StandardApplicationPool.h +296 -195
  274. data/ext/apache2/SystemTime.cpp +28 -0
  275. data/ext/apache2/SystemTime.h +82 -0
  276. data/ext/apache2/Utils.cpp +172 -18
  277. data/ext/apache2/Utils.h +124 -19
  278. data/ext/boost/cstdint.hpp +4 -2
  279. data/ext/boost/current_function.hpp +67 -0
  280. data/ext/boost/detail/sp_counted_base.hpp +4 -4
  281. data/ext/boost/thread/exceptions.hpp +2 -1
  282. data/ext/boost/thread/pthread/thread.hpp +11 -3
  283. data/ext/boost/thread/pthread/thread_data.hpp +2 -1
  284. data/ext/oxt/backtrace.cpp +172 -0
  285. data/ext/oxt/backtrace.hpp +135 -0
  286. data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
  287. data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
  288. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
  289. data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
  290. data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
  291. data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
  292. data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
  293. data/ext/oxt/macros.hpp +58 -0
  294. data/ext/oxt/spin_lock.hpp +55 -0
  295. data/ext/{apache2/System.cpp → oxt/system_calls.cpp} +87 -52
  296. data/ext/oxt/system_calls.hpp +234 -0
  297. data/ext/oxt/thread.cpp +32 -0
  298. data/ext/oxt/thread.hpp +223 -0
  299. data/ext/oxt/tracable_exception.cpp +87 -0
  300. data/ext/oxt/tracable_exception.hpp +35 -0
  301. data/{lib/passenger/constants.rb → ext/phusion_passenger/extconf.rb} +14 -9
  302. data/ext/{passenger → phusion_passenger}/native_support.c +33 -6
  303. data/lib/{passenger → phusion_passenger}/abstract_request_handler.rb +209 -93
  304. data/lib/{passenger → phusion_passenger}/abstract_server.rb +23 -8
  305. data/lib/phusion_passenger/abstract_server_collection.rb +301 -0
  306. data/lib/phusion_passenger/admin_tools.rb +25 -0
  307. data/lib/phusion_passenger/admin_tools/control_process.rb +107 -0
  308. data/lib/{passenger → phusion_passenger}/application.rb +13 -16
  309. data/lib/{passenger → phusion_passenger}/console_text_template.rb +2 -2
  310. data/{ext/passenger/extconf.rb → lib/phusion_passenger/constants.rb} +5 -5
  311. data/lib/{passenger → phusion_passenger}/dependencies.rb +38 -32
  312. data/lib/phusion_passenger/events.rb +45 -0
  313. data/lib/{passenger → phusion_passenger}/exceptions.rb +12 -5
  314. data/lib/{passenger → phusion_passenger}/html_template.rb +2 -2
  315. data/lib/{passenger → phusion_passenger}/message_channel.rb +3 -2
  316. data/lib/phusion_passenger/platform_info.rb +500 -0
  317. data/lib/{passenger → phusion_passenger}/rack/application_spawner.rb +29 -22
  318. data/lib/{passenger → phusion_passenger}/rack/request_handler.rb +14 -9
  319. data/lib/{passenger → phusion_passenger}/railz/application_spawner.rb +94 -74
  320. data/lib/{passenger → phusion_passenger}/railz/cgi_fixed.rb +2 -2
  321. data/lib/{passenger → phusion_passenger}/railz/framework_spawner.rb +86 -98
  322. data/lib/{passenger → phusion_passenger}/railz/request_handler.rb +6 -6
  323. data/lib/{passenger → phusion_passenger}/simple_benchmarking.rb +0 -0
  324. data/lib/{passenger → phusion_passenger}/spawn_manager.rb +136 -128
  325. data/lib/{passenger → phusion_passenger}/templates/apache2_config_snippets.txt.erb +0 -0
  326. data/lib/{passenger → phusion_passenger}/templates/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
  327. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
  328. data/lib/{passenger → phusion_passenger}/templates/app_init_error.html.erb +0 -0
  329. data/lib/{passenger → phusion_passenger}/templates/database_error.html.erb +0 -0
  330. data/lib/{passenger → phusion_passenger}/templates/deployment_example.txt.erb +1 -1
  331. data/lib/{passenger → phusion_passenger}/templates/error_layout.css +0 -0
  332. data/lib/{passenger → phusion_passenger}/templates/error_layout.html.erb +0 -0
  333. data/lib/{passenger → phusion_passenger}/templates/framework_init_error.html.erb +0 -0
  334. data/lib/{passenger → phusion_passenger}/templates/general_error.html.erb +0 -0
  335. data/lib/{passenger → phusion_passenger}/templates/invalid_app_root.html.erb +1 -1
  336. data/lib/{passenger → phusion_passenger}/templates/load_error.html.erb +0 -0
  337. data/lib/{passenger → phusion_passenger}/templates/no_write_permission_to_passenger_root.txt.erb +0 -0
  338. data/lib/{passenger → phusion_passenger}/templates/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
  339. data/lib/{passenger → phusion_passenger}/templates/run_installer_as_root.txt.erb +0 -0
  340. data/lib/{passenger → phusion_passenger}/templates/version_not_found.html.erb +0 -0
  341. data/lib/{passenger → phusion_passenger}/templates/welcome.txt.erb +0 -0
  342. data/lib/{passenger → phusion_passenger}/utils.rb +210 -44
  343. data/lib/{passenger → phusion_passenger}/wsgi/application_spawner.rb +18 -15
  344. data/lib/{passenger → phusion_passenger}/wsgi/request_handler.py +7 -1
  345. data/man/passenger-memory-stats.8 +1 -1
  346. data/misc/render_error_pages.rb +1 -1
  347. data/test/ApplicationPoolServerTest.cpp +0 -28
  348. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +4 -0
  349. data/test/ApplicationPoolTest.cpp +307 -69
  350. data/test/CachedFileStatTest.cpp +262 -0
  351. data/test/FileCheckerTest.cpp +79 -0
  352. data/test/MessageChannelTest.cpp +3 -3
  353. data/test/PoolOptionsTest.cpp +37 -0
  354. data/test/SpawnManagerTest.cpp +4 -4
  355. data/test/StandardApplicationPoolTest.cpp +4 -0
  356. data/test/SystemTimeTest.cpp +37 -0
  357. data/test/UtilsTest.cpp +137 -0
  358. data/test/integration_tests.rb +270 -23
  359. data/test/oxt/backtrace_test.cpp +128 -0
  360. data/test/oxt/oxt_test_main.cpp +25 -0
  361. data/test/oxt/syscall_interruption_test.cpp +50 -0
  362. data/test/ruby/abstract_request_handler_spec.rb +83 -0
  363. data/test/ruby/abstract_server_collection_spec.rb +246 -0
  364. data/test/ruby/application_spec.rb +3 -3
  365. data/test/ruby/message_channel_spec.rb +2 -2
  366. data/test/ruby/rack/application_spawner_spec.rb +3 -5
  367. data/test/ruby/rails/application_spawner_spec.rb +54 -15
  368. data/test/ruby/rails/framework_spawner_spec.rb +6 -8
  369. data/test/ruby/rails/minimal_spawner_spec.rb +29 -0
  370. data/test/ruby/rails/spawner_error_handling_spec.rb +1 -1
  371. data/test/ruby/rails/spawner_privilege_lowering_spec.rb +3 -3
  372. data/test/ruby/spawn_manager_spec.rb +23 -12
  373. data/test/ruby/utils_spec.rb +36 -2
  374. data/test/ruby/wsgi/application_spawner_spec.rb +47 -0
  375. data/test/stub/apache2/httpd.conf.erb +3 -5
  376. data/test/stub/message_channel.rb +2 -2
  377. data/test/stub/message_channel_2.rb +2 -2
  378. data/test/stub/message_channel_3.rb +3 -3
  379. data/test/stub/minimal-railsapp/README +0 -0
  380. data/test/stub/minimal-railsapp/config/application.rb +0 -0
  381. data/test/stub/minimal-railsapp/config/environment.rb +0 -0
  382. data/test/stub/minimal-railsapp/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
  383. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_controller.rb +0 -0
  384. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_pack.rb +0 -0
  385. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_view.rb +0 -0
  386. data/test/stub/minimal-railsapp/vendor/rails/activerecord/lib/active_record.rb +0 -0
  387. data/test/stub/minimal-railsapp/vendor/rails/activeresource/lib/active_resource.rb +0 -0
  388. data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support.rb +0 -0
  389. data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
  390. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/dispatcher.rb +0 -0
  391. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/initializer.rb +0 -0
  392. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/ruby_version_check.rb +0 -0
  393. data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +8 -0
  394. data/test/stub/rails_apps/foobar/config/environments/development.rb +1 -2
  395. data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +21 -1
  396. data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
  397. data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
  398. data/test/stub/railsapp/app/controllers/application.rb +0 -0
  399. data/test/stub/railsapp/app/controllers/bar_controller_1.rb +0 -0
  400. data/test/stub/railsapp/app/controllers/bar_controller_2.rb +1 -1
  401. data/test/stub/railsapp/app/controllers/foo_controller.rb +4 -0
  402. data/test/stub/railsapp/app/helpers/application_helper.rb +0 -0
  403. data/test/stub/railsapp/config/boot.rb +0 -0
  404. data/test/stub/railsapp/config/database.yml +0 -0
  405. data/test/stub/railsapp/config/environment.rb +0 -0
  406. data/test/stub/railsapp/config/environments/development.rb +0 -0
  407. data/test/stub/railsapp/config/environments/production.rb +0 -0
  408. data/test/stub/railsapp/config/initializers/inflections.rb +0 -0
  409. data/test/stub/railsapp/config/initializers/mime_types.rb +0 -0
  410. data/test/stub/railsapp/config/routes.rb +0 -0
  411. data/test/stub/railsapp/public/useless.txt +0 -0
  412. data/test/stub/spawn_server.rb +3 -4
  413. data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
  414. data/test/support/apache2_controller.rb +57 -7
  415. data/test/support/tut.h +15 -0
  416. data/vendor/README +12 -0
  417. data/vendor/README_FOR_PACKAGERS +1 -0
  418. data/vendor/rack-0.9.1/AUTHORS +8 -0
  419. data/vendor/rack-0.9.1/COPYING +18 -0
  420. data/vendor/rack-0.9.1/ChangeLog +1423 -0
  421. data/vendor/rack-0.9.1/KNOWN-ISSUES +18 -0
  422. data/vendor/rack-0.9.1/README +306 -0
  423. data/vendor/rack-0.9.1/Rakefile +188 -0
  424. data/vendor/rack-0.9.1/SPEC +129 -0
  425. data/vendor/rack-0.9.1/lib/rack.rb +86 -0
  426. data/vendor/rack-0.9.1/lib/rack/adapter/camping.rb +22 -0
  427. data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +28 -0
  428. data/vendor/rack-0.9.1/lib/rack/auth/abstract/request.rb +37 -0
  429. data/vendor/rack-0.9.1/lib/rack/auth/basic.rb +58 -0
  430. data/vendor/rack-0.9.1/lib/rack/auth/digest/md5.rb +124 -0
  431. data/vendor/rack-0.9.1/lib/rack/auth/digest/nonce.rb +51 -0
  432. data/vendor/rack-0.9.1/lib/rack/auth/digest/params.rb +55 -0
  433. data/vendor/rack-0.9.1/lib/rack/auth/digest/request.rb +40 -0
  434. data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +438 -0
  435. data/vendor/rack-0.9.1/lib/rack/builder.rb +67 -0
  436. data/vendor/rack-0.9.1/lib/rack/cascade.rb +36 -0
  437. data/vendor/rack-0.9.1/lib/rack/commonlogger.rb +61 -0
  438. data/vendor/rack-0.9.1/lib/rack/conditionalget.rb +43 -0
  439. data/vendor/rack-0.9.1/lib/rack/content_length.rb +25 -0
  440. data/vendor/rack-0.9.1/lib/rack/deflater.rb +87 -0
  441. data/vendor/rack-0.9.1/lib/rack/directory.rb +150 -0
  442. data/vendor/rack-0.9.1/lib/rack/file.rb +85 -0
  443. data/vendor/rack-0.9.1/lib/rack/handler.rb +48 -0
  444. data/vendor/rack-0.9.1/lib/rack/handler/cgi.rb +57 -0
  445. data/vendor/rack-0.9.1/lib/rack/handler/evented_mongrel.rb +8 -0
  446. data/vendor/rack-0.9.1/lib/rack/handler/fastcgi.rb +86 -0
  447. data/vendor/rack-0.9.1/lib/rack/handler/lsws.rb +52 -0
  448. data/vendor/rack-0.9.1/lib/rack/handler/mongrel.rb +82 -0
  449. data/vendor/rack-0.9.1/lib/rack/handler/scgi.rb +57 -0
  450. data/vendor/rack-0.9.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  451. data/vendor/rack-0.9.1/lib/rack/handler/thin.rb +15 -0
  452. data/vendor/rack-0.9.1/lib/rack/handler/webrick.rb +61 -0
  453. data/vendor/rack-0.9.1/lib/rack/head.rb +19 -0
  454. data/vendor/rack-0.9.1/lib/rack/lint.rb +465 -0
  455. data/vendor/rack-0.9.1/lib/rack/lobster.rb +65 -0
  456. data/vendor/rack-0.9.1/lib/rack/methodoverride.rb +27 -0
  457. data/vendor/rack-0.9.1/lib/rack/mime.rb +204 -0
  458. data/vendor/rack-0.9.1/lib/rack/mock.rb +160 -0
  459. data/vendor/rack-0.9.1/lib/rack/recursive.rb +57 -0
  460. data/vendor/rack-0.9.1/lib/rack/reloader.rb +64 -0
  461. data/vendor/rack-0.9.1/lib/rack/request.rb +218 -0
  462. data/vendor/rack-0.9.1/lib/rack/response.rb +171 -0
  463. data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +153 -0
  464. data/vendor/rack-0.9.1/lib/rack/session/cookie.rb +89 -0
  465. data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +97 -0
  466. data/vendor/rack-0.9.1/lib/rack/session/pool.rb +73 -0
  467. data/vendor/rack-0.9.1/lib/rack/showexceptions.rb +348 -0
  468. data/vendor/rack-0.9.1/lib/rack/showstatus.rb +106 -0
  469. data/vendor/rack-0.9.1/lib/rack/static.rb +38 -0
  470. data/vendor/rack-0.9.1/lib/rack/urlmap.rb +48 -0
  471. data/vendor/rack-0.9.1/lib/rack/utils.rb +347 -0
  472. metadata +1197 -1055
  473. data/doc/cxxapi/System_8h-source.html +0 -251
  474. data/doc/cxxapi/classDirectoryMapper-members.html +0 -38
  475. data/doc/cxxapi/classDirectoryMapper.html +0 -203
  476. data/doc/cxxapi/classPassenger_1_1Thread.html +0 -100
  477. data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption.html +0 -46
  478. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption-members.html +0 -33
  479. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption.html +0 -44
  480. data/doc/cxxapi/namespacePassenger.html +0 -208
  481. data/doc/cxxapi/namespacePassenger_1_1InterruptableCalls.html +0 -43
  482. data/doc/cxxapi/namespacemembers.html +0 -70
  483. data/doc/cxxapi/namespacemembers_func.html +0 -66
  484. data/doc/cxxapi/namespacemembers_type.html +0 -46
  485. data/doc/cxxapi/namespaces.html +0 -35
  486. data/doc/rdoc/classes/Passenger.html +0 -136
  487. data/doc/rdoc/classes/Passenger/AbstractRequestHandler.html +0 -402
  488. data/doc/rdoc/classes/Passenger/SpawnManager.html +0 -379
  489. data/doc/rdoc/classes/Passenger/Utils.html +0 -578
  490. data/ext/apache2/System.h +0 -228
  491. data/lib/passenger/platform_info.rb +0 -302
  492. data/lib/passenger/templates/app_exited_during_initialization.html.erb +0 -19
  493. data/test/stub/apache2/httpd.conf +0 -75
  494. data/test/stub/rails_apps/foobar/config/environments/test.rb +0 -22
  495. data/test/stub/rails_apps/mycook/config/environments/test.rb +0 -22
  496. data/test/stub/railsapp/config/environments/test.rb +0 -22
  497. data/test/stub/railsapp2/config/environments/test.rb +0 -22
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -29,7 +28,7 @@
29
28
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468">connect</a>()</td><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html">Passenger::ApplicationPoolServer</a></td><td><code> [inline]</code></td></tr>
30
29
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce">detach</a>()</td><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html">Passenger::ApplicationPoolServer</a></td><td><code> [inline]</code></td></tr>
31
30
  </table></div>
32
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
31
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
33
32
  <a href="http://www.doxygen.org/index.html">
34
33
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
35
34
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1ApplicationPoolServer.html">ApplicationPoolServer</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1ApplicationPoolServer.html">ApplicationPoolServer</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -68,7 +67,7 @@ Multi-process usage support for <a class="el" href="classPassenger_1_1Applicatio
68
67
  <p>
69
68
  The actual server is implemented in ApplicationPoolServerExecutable.cpp, this class is just a convenience class for starting/stopping the server executable and connecting to it.<p>
70
69
  In the past, the server logic itself was implemented in this class. This implies that the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server ran inside the Apache process. This presented us with several problems:<ul>
71
- <li>Because of the usage of threads in the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server, the Apache VM size would go way up. This gave people the (wrong) impression that <a class="el" href="namespacePassenger.html" title="Support for interruption of blocking system calls and C library calls.">Passenger</a> uses a lot of memory, or that it leaks memory.</li><li>Although it's not entirely confirmed, we suspect that it caused heap fragmentation as well. Apache allocates lots and lots of small objects on the heap, and <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server isn't exactly helping. This too gave people the (wrong) impression that <a class="el" href="namespacePassenger.html" title="Support for interruption of blocking system calls and C library calls.">Passenger</a> leaks memory.</li><li>It would unnecessarily bloat the VM size of Apache worker processes.</li><li>We had to resort to all kinds of tricks to make sure that fork()ing a process doesn't result in file descriptor leaks.</li><li>Despite everything, there was still a small chance that file descriptor leaks would occur, and this could not be fixed. The reason for this is that the Apache control process may call fork() right after the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server has established a new connection with a client.</li></ul>
70
+ <li>Because of the usage of threads in the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server, the Apache VM size would go way up. This gave people the (wrong) impression that Passenger uses a lot of memory, or that it leaks memory.</li><li>Although it's not entirely confirmed, we suspect that it caused heap fragmentation as well. Apache allocates lots and lots of small objects on the heap, and <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server isn't exactly helping. This too gave people the (wrong) impression that Passenger leaks memory.</li><li>It would unnecessarily bloat the VM size of Apache worker processes.</li><li>We had to resort to all kinds of tricks to make sure that fork()ing a process doesn't result in file descriptor leaks.</li><li>Despite everything, there was still a small chance that file descriptor leaks would occur, and this could not be fixed. The reason for this is that the Apache control process may call fork() right after the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server has established a new connection with a client.</li></ul>
72
71
  <p>
73
72
  Because of these problems, it was decided to split the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server to a separate executable. This comes with no performance hit.<p>
74
73
  <h3>Anonymous server socket</h3>
@@ -218,7 +217,7 @@ This method may only be called once. The <a class="el" href="classPassenger_1_1A
218
217
  <hr>The documentation for this class was generated from the following file:<ul>
219
218
  <li><a class="el" href="ApplicationPoolServer_8h-source.html">ApplicationPoolServer.h</a></ul>
220
219
  </div>
221
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
220
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
222
221
  <a href="http://www.doxygen.org/index.html">
223
222
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
224
223
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -32,11 +31,13 @@
32
31
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#2091e4b60dcbe42ab80fa387610fd669">sendBodyBlock</a>(const char *block, unsigned int size)</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
33
32
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#78a4c93fd80f6d913f092c488ea4d360">sendHeaders</a>(const char *headers, unsigned int size)</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
34
33
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#4fee03667f626d68c565495bcb19771a">sendHeaders</a>(const string &amp;headers)</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
34
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#17b4b6e4c47ec8941a099e229d2944f2">setReaderTimeout</a>(unsigned int msec)=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
35
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#4236abbdf69e10ded00c756de24433e9">setWriterTimeout</a>(unsigned int msec)=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
35
36
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#45ad442dc1f4e7b73782bb3395d9e97d">shutdownReader</a>()=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
36
37
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#dff449398adb872c93a9572ae4b701fb">shutdownWriter</a>()=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
37
38
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#4fcaf0670234f7fb2ea6de4b8d8ef38c">~Session</a>()</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
38
39
  </table></div>
39
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
40
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
40
41
  <a href="http://www.doxygen.org/index.html">
41
42
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
42
43
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1Application.html">Application</a>::<a class="el" href="classPassenger_1_1Application_1_1Session.html">Session</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1Application.html">Application</a>::<a class="el" href="classPassenger_1_1Application_1_1Session.html">Session</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -59,6 +58,12 @@ virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="c
59
58
  <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#2631b6d6b4927ec66b1f620df15d8c6e">getStream</a> () const =0</td></tr>
60
59
 
61
60
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the I/O stream's file descriptor. <a href="#2631b6d6b4927ec66b1f620df15d8c6e"></a><br></td></tr>
61
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#17b4b6e4c47ec8941a099e229d2944f2">setReaderTimeout</a> (unsigned int msec)=0</td></tr>
62
+
63
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for reading data from the I/O stream. <a href="#17b4b6e4c47ec8941a099e229d2944f2"></a><br></td></tr>
64
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#4236abbdf69e10ded00c756de24433e9">setWriterTimeout</a> (unsigned int msec)=0</td></tr>
65
+
66
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for writing data from the I/O stream. <a href="#4236abbdf69e10ded00c756de24433e9"></a><br></td></tr>
62
67
  <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#45ad442dc1f4e7b73782bb3395d9e97d">shutdownReader</a> ()=0</td></tr>
63
68
 
64
69
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicate that we don't want to read data anymore from the I/O stream. <a href="#45ad442dc1f4e7b73782bb3395d9e97d"></a><br></td></tr>
@@ -234,6 +239,72 @@ Get the I/O stream's file descriptor.
234
239
  This steam is full-duplex, and will be automatically closed upon Session's destruction, unless <a class="el" href="classPassenger_1_1Application_1_1Session.html#7f9ad70e75d21130d914d2134061c757" title="Discard the I/O stream&#39;s file descriptor, so that Session won&#39;t automatically...">discardStream()</a> is called.<p>
235
240
  <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>The stream has not been fully closed. </dd></dl>
236
241
 
242
+ </div>
243
+ </div><p>
244
+ <a class="anchor" name="17b4b6e4c47ec8941a099e229d2944f2"></a><!-- doxytag: member="Passenger::Application::Session::setReaderTimeout" ref="17b4b6e4c47ec8941a099e229d2944f2" args="(unsigned int msec)=0" -->
245
+ <div class="memitem">
246
+ <div class="memproto">
247
+ <table class="memname">
248
+ <tr>
249
+ <td class="memname">virtual void Passenger::Application::Session::setReaderTimeout </td>
250
+ <td>(</td>
251
+ <td class="paramtype">unsigned int&nbsp;</td>
252
+ <td class="paramname"> <em>msec</em> </td>
253
+ <td>&nbsp;)&nbsp;</td>
254
+ <td width="100%"><code> [pure virtual]</code></td>
255
+ </tr>
256
+ </table>
257
+ </div>
258
+ <div class="memdoc">
259
+
260
+ <p>
261
+ Set the timeout value for reading data from the I/O stream.
262
+ <p>
263
+ If no data can be read within the timeout period, then the read call will fail with error EAGAIN or EWOULDBLOCK.<p>
264
+ <dl compact><dt><b>Parameters:</b></dt><dd>
265
+ <table border="0" cellspacing="2" cellpadding="0">
266
+ <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
267
+ </table>
268
+ </dl>
269
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
270
+ <table border="0" cellspacing="2" cellpadding="0">
271
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Cannot set the timeout. </td></tr>
272
+ </table>
273
+ </dl>
274
+
275
+ </div>
276
+ </div><p>
277
+ <a class="anchor" name="4236abbdf69e10ded00c756de24433e9"></a><!-- doxytag: member="Passenger::Application::Session::setWriterTimeout" ref="4236abbdf69e10ded00c756de24433e9" args="(unsigned int msec)=0" -->
278
+ <div class="memitem">
279
+ <div class="memproto">
280
+ <table class="memname">
281
+ <tr>
282
+ <td class="memname">virtual void Passenger::Application::Session::setWriterTimeout </td>
283
+ <td>(</td>
284
+ <td class="paramtype">unsigned int&nbsp;</td>
285
+ <td class="paramname"> <em>msec</em> </td>
286
+ <td>&nbsp;)&nbsp;</td>
287
+ <td width="100%"><code> [pure virtual]</code></td>
288
+ </tr>
289
+ </table>
290
+ </div>
291
+ <div class="memdoc">
292
+
293
+ <p>
294
+ Set the timeout value for writing data from the I/O stream.
295
+ <p>
296
+ If no data can be written within the timeout period, then the write call will fail with error EAGAIN or EWOULDBLOCK.<p>
297
+ <dl compact><dt><b>Parameters:</b></dt><dd>
298
+ <table border="0" cellspacing="2" cellpadding="0">
299
+ <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
300
+ </table>
301
+ </dl>
302
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
303
+ <table border="0" cellspacing="2" cellpadding="0">
304
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Cannot set the timeout. </td></tr>
305
+ </table>
306
+ </dl>
307
+
237
308
  </div>
238
309
  </div><p>
239
310
  <a class="anchor" name="45ad442dc1f4e7b73782bb3395d9e97d"></a><!-- doxytag: member="Passenger::Application::Session::shutdownReader" ref="45ad442dc1f4e7b73782bb3395d9e97d" args="()=0" -->
@@ -322,7 +393,7 @@ Close the I/O stream.
322
393
  <hr>The documentation for this class was generated from the following file:<ul>
323
394
  <li><a class="el" href="Application_8h-source.html">Application.h</a></ul>
324
395
  </div>
325
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
396
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
326
397
  <a href="http://www.doxygen.org/index.html">
327
398
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
328
399
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -26,7 +25,7 @@
26
25
  <div class="contents">
27
26
  <h1>Passenger::BusyException Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1BusyException.html">Passenger::BusyException</a>, including all inherited members.<p><table>
28
27
  </table></div>
29
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
30
29
  <a href="http://www.doxygen.org/index.html">
31
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
32
31
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1BusyException.html">BusyException</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1BusyException.html">BusyException</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -40,7 +39,7 @@ The application pool is too busy and cannot fulfill a get() request. <table bord
40
39
  <hr>The documentation for this class was generated from the following file:<ul>
41
40
  <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
42
41
  </div>
43
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
42
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
44
43
  <a href="http://www.doxygen.org/index.html">
45
44
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
46
45
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -26,7 +25,7 @@
26
25
  <div class="contents">
27
26
  <h1>Passenger::ConfigurationException Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1ConfigurationException.html">Passenger::ConfigurationException</a>, including all inherited members.<p><table>
28
27
  </table></div>
29
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
30
29
  <a href="http://www.doxygen.org/index.html">
31
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
32
31
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1ConfigurationException.html">ConfigurationException</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1ConfigurationException.html">ConfigurationException</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -37,7 +36,7 @@ Thrown when an invalid configuration is given. <table border="0" cellpadding="0"
37
36
  <hr>The documentation for this class was generated from the following file:<ul>
38
37
  <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
39
38
  </div>
40
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
39
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
41
40
  <a href="http://www.doxygen.org/index.html">
42
41
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
43
42
  </body>
@@ -0,0 +1,38 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Member List</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
14
+ <li><a href="files.html"><span>Files</span></a></li>
15
+ </ul>
16
+ </div>
17
+ <div class="tabs">
18
+ <ul>
19
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
+ </ul>
23
+ </div>
24
+ </div>
25
+ <div class="contents">
26
+ <h1>Passenger::DirectoryMapper Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a>, including all inherited members.<p><table>
27
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#e2725c3280a5e5d63dbc099fe3c3d82a">DirectoryMapper</a>(request_rec *r, DirConfig *config, CachedMultiFileStat *mstat, unsigned int throttleRate)</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
28
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#ba438d86ca263972a47540956bf11ec1">getApplicationType</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
29
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#c46f0e74ffd05b7fe9924dd99a057cf7">getApplicationTypeString</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
30
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#2da887c077fc2460dea204783470e821">getBaseURI</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
31
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#f5091e3cef3878e160e5d3b2181d82fb">getEnvironment</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
32
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#ef969f27622fb215990a870076648aa1">getPublicDirectory</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
33
+ </table></div>
34
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
35
+ <a href="http://www.doxygen.org/index.html">
36
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
37
+ </body>
38
+ </html>
@@ -0,0 +1,256 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Passenger::DirectoryMapper Class Reference</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
14
+ <li><a href="files.html"><span>Files</span></a></li>
15
+ </ul>
16
+ </div>
17
+ <div class="tabs">
18
+ <ul>
19
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
+ </ul>
23
+ </div>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1DirectoryMapper.html">DirectoryMapper</a>
25
+ </div>
26
+ </div>
27
+ <div class="contents">
28
+ <h1>Passenger::DirectoryMapper Class Reference<br>
29
+ <small>
30
+ [<a class="el" href="group__Core.html">Core Apache-related classes and functions</a>]</small>
31
+ </h1><!-- doxytag: class="Passenger::DirectoryMapper" --><code>#include &lt;<a class="el" href="DirectoryMapper_8h-source.html">DirectoryMapper.h</a>&gt;</code>
32
+ <p>
33
+
34
+ <p>
35
+ <a href="classPassenger_1_1DirectoryMapper-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
36
+ Utility class for determining URI-to-application directory mappings.
37
+ <p>
38
+ Given a URI, it will determine whether that URI belongs to a Phusion Passenger-handled application, what the base URI of that application is, and what the associated 'public' directory is.<p>
39
+ <dl class="note" compact><dt><b>Note:</b></dt><dd>This class is not thread-safe, but is reentrant. </dd></dl>
40
+ <table border="0" cellpadding="0" cellspacing="0">
41
+ <tr><td></td></tr>
42
+ <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
43
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html#e2725c3280a5e5d63dbc099fe3c3d82a">DirectoryMapper</a> (request_rec *r, DirConfig *config, CachedMultiFileStat *mstat, unsigned int throttleRate)</td></tr>
44
+
45
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new <a class="el" href="classPassenger_1_1DirectoryMapper.html" title="Utility class for determining URI-to-application directory mappings.">DirectoryMapper</a> object. <a href="#e2725c3280a5e5d63dbc099fe3c3d82a"></a><br></td></tr>
46
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html#2da887c077fc2460dea204783470e821">getBaseURI</a> ()</td></tr>
47
+
48
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine whether the given HTTP request falls under one of the specified RailsBaseURIs or RackBaseURIs. <a href="#2da887c077fc2460dea204783470e821"></a><br></td></tr>
49
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html#ef969f27622fb215990a870076648aa1">getPublicDirectory</a> ()</td></tr>
50
+
51
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the filename of the 'public' directory of the Rails/Rack application that's associated with the HTTP request. <a href="#ef969f27622fb215990a870076648aa1"></a><br></td></tr>
52
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">ApplicationType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html#ba438d86ca263972a47540956bf11ec1">getApplicationType</a> ()</td></tr>
53
+
54
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the application type that's associated with the HTTP request. <a href="#ba438d86ca263972a47540956bf11ec1"></a><br></td></tr>
55
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html#c46f0e74ffd05b7fe9924dd99a057cf7">getApplicationTypeString</a> ()</td></tr>
56
+
57
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the application type (as a string) that's associated with the HTTP request. <a href="#c46f0e74ffd05b7fe9924dd99a057cf7"></a><br></td></tr>
58
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html#f5091e3cef3878e160e5d3b2181d82fb">getEnvironment</a> ()</td></tr>
59
+
60
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the environment under which the application should be spawned. <a href="#f5091e3cef3878e160e5d3b2181d82fb"></a><br></td></tr>
61
+ </table>
62
+ <hr><h2>Constructor &amp; Destructor Documentation</h2>
63
+ <a class="anchor" name="e2725c3280a5e5d63dbc099fe3c3d82a"></a><!-- doxytag: member="Passenger::DirectoryMapper::DirectoryMapper" ref="e2725c3280a5e5d63dbc099fe3c3d82a" args="(request_rec *r, DirConfig *config, CachedMultiFileStat *mstat, unsigned int throttleRate)" -->
64
+ <div class="memitem">
65
+ <div class="memproto">
66
+ <table class="memname">
67
+ <tr>
68
+ <td class="memname">Passenger::DirectoryMapper::DirectoryMapper </td>
69
+ <td>(</td>
70
+ <td class="paramtype">request_rec *&nbsp;</td>
71
+ <td class="paramname"> <em>r</em>, </td>
72
+ </tr>
73
+ <tr>
74
+ <td class="paramkey"></td>
75
+ <td></td>
76
+ <td class="paramtype">DirConfig *&nbsp;</td>
77
+ <td class="paramname"> <em>config</em>, </td>
78
+ </tr>
79
+ <tr>
80
+ <td class="paramkey"></td>
81
+ <td></td>
82
+ <td class="paramtype">CachedMultiFileStat *&nbsp;</td>
83
+ <td class="paramname"> <em>mstat</em>, </td>
84
+ </tr>
85
+ <tr>
86
+ <td class="paramkey"></td>
87
+ <td></td>
88
+ <td class="paramtype">unsigned int&nbsp;</td>
89
+ <td class="paramname"> <em>throttleRate</em></td><td>&nbsp;</td>
90
+ </tr>
91
+ <tr>
92
+ <td></td>
93
+ <td>)</td>
94
+ <td></td><td></td><td width="100%"><code> [inline]</code></td>
95
+ </tr>
96
+ </table>
97
+ </div>
98
+ <div class="memdoc">
99
+
100
+ <p>
101
+ Create a new <a class="el" href="classPassenger_1_1DirectoryMapper.html" title="Utility class for determining URI-to-application directory mappings.">DirectoryMapper</a> object.
102
+ <p>
103
+ <dl compact><dt><b>Parameters:</b></dt><dd>
104
+ <table border="0" cellspacing="2" cellpadding="0">
105
+ <tr><td valign="top"></td><td valign="top"><em>mstat</em>&nbsp;</td><td>A CachedMultiFileStat object used for statting files. </td></tr>
106
+ <tr><td valign="top"></td><td valign="top"><em>throttleRate</em>&nbsp;</td><td>A throttling rate for mstat. </td></tr>
107
+ </table>
108
+ </dl>
109
+ <dl class="warning" compact><dt><b>Warning:</b></dt><dd>Do not use this object after the destruction of <code>r</code>, <code>config</code> or <code>mstat</code>. </dd></dl>
110
+
111
+ </div>
112
+ </div><p>
113
+ <hr><h2>Member Function Documentation</h2>
114
+ <a class="anchor" name="2da887c077fc2460dea204783470e821"></a><!-- doxytag: member="Passenger::DirectoryMapper::getBaseURI" ref="2da887c077fc2460dea204783470e821" args="()" -->
115
+ <div class="memitem">
116
+ <div class="memproto">
117
+ <table class="memname">
118
+ <tr>
119
+ <td class="memname">const char* Passenger::DirectoryMapper::getBaseURI </td>
120
+ <td>(</td>
121
+ <td class="paramname"> </td>
122
+ <td>&nbsp;)&nbsp;</td>
123
+ <td width="100%"><code> [inline]</code></td>
124
+ </tr>
125
+ </table>
126
+ </div>
127
+ <div class="memdoc">
128
+
129
+ <p>
130
+ Determine whether the given HTTP request falls under one of the specified RailsBaseURIs or RackBaseURIs.
131
+ <p>
132
+ If yes, then the first matching base URI will be returned.<p>
133
+ If Rails/Rack autodetection was enabled in the configuration, and the document root seems to be a valid Rails/Rack 'public' folder, then this method will return "/".<p>
134
+ Otherwise, NULL will be returned.<p>
135
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
136
+ <table border="0" cellspacing="2" cellpadding="0">
137
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a></em>&nbsp;</td><td>This method might also examine the filesystem in order to detect the application's type. During that process, a <a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a> might be thrown. </td></tr>
138
+ </table>
139
+ </dl>
140
+ <dl class="warning" compact><dt><b>Warning:</b></dt><dd>The return value may only be used as long as <code>config</code> hasn't been destroyed. </dd></dl>
141
+
142
+ </div>
143
+ </div><p>
144
+ <a class="anchor" name="ef969f27622fb215990a870076648aa1"></a><!-- doxytag: member="Passenger::DirectoryMapper::getPublicDirectory" ref="ef969f27622fb215990a870076648aa1" args="()" -->
145
+ <div class="memitem">
146
+ <div class="memproto">
147
+ <table class="memname">
148
+ <tr>
149
+ <td class="memname">string Passenger::DirectoryMapper::getPublicDirectory </td>
150
+ <td>(</td>
151
+ <td class="paramname"> </td>
152
+ <td>&nbsp;)&nbsp;</td>
153
+ <td width="100%"><code> [inline]</code></td>
154
+ </tr>
155
+ </table>
156
+ </div>
157
+ <div class="memdoc">
158
+
159
+ <p>
160
+ Returns the filename of the 'public' directory of the Rails/Rack application that's associated with the HTTP request.
161
+ <p>
162
+ Returns an empty string if the document root of the HTTP request cannot be determined, or if it isn't a valid folder.<p>
163
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
164
+ <table border="0" cellspacing="2" cellpadding="0">
165
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a></em>&nbsp;</td><td>An error occured while examening the filesystem. </td></tr>
166
+ </table>
167
+ </dl>
168
+
169
+ </div>
170
+ </div><p>
171
+ <a class="anchor" name="ba438d86ca263972a47540956bf11ec1"></a><!-- doxytag: member="Passenger::DirectoryMapper::getApplicationType" ref="ba438d86ca263972a47540956bf11ec1" args="()" -->
172
+ <div class="memitem">
173
+ <div class="memproto">
174
+ <table class="memname">
175
+ <tr>
176
+ <td class="memname">ApplicationType Passenger::DirectoryMapper::getApplicationType </td>
177
+ <td>(</td>
178
+ <td class="paramname"> </td>
179
+ <td>&nbsp;)&nbsp;</td>
180
+ <td width="100%"><code> [inline]</code></td>
181
+ </tr>
182
+ </table>
183
+ </div>
184
+ <div class="memdoc">
185
+
186
+ <p>
187
+ Returns the application type that's associated with the HTTP request.
188
+ <p>
189
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
190
+ <table border="0" cellspacing="2" cellpadding="0">
191
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a></em>&nbsp;</td><td>An error occured while examening the filesystem. </td></tr>
192
+ </table>
193
+ </dl>
194
+
195
+ </div>
196
+ </div><p>
197
+ <a class="anchor" name="c46f0e74ffd05b7fe9924dd99a057cf7"></a><!-- doxytag: member="Passenger::DirectoryMapper::getApplicationTypeString" ref="c46f0e74ffd05b7fe9924dd99a057cf7" args="()" -->
198
+ <div class="memitem">
199
+ <div class="memproto">
200
+ <table class="memname">
201
+ <tr>
202
+ <td class="memname">const char* Passenger::DirectoryMapper::getApplicationTypeString </td>
203
+ <td>(</td>
204
+ <td class="paramname"> </td>
205
+ <td>&nbsp;)&nbsp;</td>
206
+ <td width="100%"><code> [inline]</code></td>
207
+ </tr>
208
+ </table>
209
+ </div>
210
+ <div class="memdoc">
211
+
212
+ <p>
213
+ Returns the application type (as a string) that's associated with the HTTP request.
214
+ <p>
215
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
216
+ <table border="0" cellspacing="2" cellpadding="0">
217
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a></em>&nbsp;</td><td>An error occured while examening the filesystem. </td></tr>
218
+ </table>
219
+ </dl>
220
+
221
+ </div>
222
+ </div><p>
223
+ <a class="anchor" name="f5091e3cef3878e160e5d3b2181d82fb"></a><!-- doxytag: member="Passenger::DirectoryMapper::getEnvironment" ref="f5091e3cef3878e160e5d3b2181d82fb" args="()" -->
224
+ <div class="memitem">
225
+ <div class="memproto">
226
+ <table class="memname">
227
+ <tr>
228
+ <td class="memname">const char* Passenger::DirectoryMapper::getEnvironment </td>
229
+ <td>(</td>
230
+ <td class="paramname"> </td>
231
+ <td>&nbsp;)&nbsp;</td>
232
+ <td width="100%"><code> [inline]</code></td>
233
+ </tr>
234
+ </table>
235
+ </div>
236
+ <div class="memdoc">
237
+
238
+ <p>
239
+ Returns the environment under which the application should be spawned.
240
+ <p>
241
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
242
+ <table border="0" cellspacing="2" cellpadding="0">
243
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a></em>&nbsp;</td><td>An error occured while examening the filesystem. </td></tr>
244
+ </table>
245
+ </dl>
246
+
247
+ </div>
248
+ </div><p>
249
+ <hr>The documentation for this class was generated from the following file:<ul>
250
+ <li><a class="el" href="DirectoryMapper_8h-source.html">DirectoryMapper.h</a></ul>
251
+ </div>
252
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
253
+ <a href="http://www.doxygen.org/index.html">
254
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
255
+ </body>
256
+ </html>