passenger 2.1.3 → 2.2.0

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 (398) hide show
  1. data/DEVELOPERS.TXT +2 -0
  2. data/INSTALL +3 -1
  3. data/LICENSE +19 -355
  4. data/NEWS +3 -0
  5. data/README +11 -4
  6. data/Rakefile +435 -236
  7. data/bin/passenger-config +20 -14
  8. data/bin/passenger-install-apache2-module +67 -201
  9. data/bin/passenger-install-nginx-module +477 -0
  10. data/bin/passenger-make-enterprisey +17 -12
  11. data/bin/passenger-memory-stats +33 -23
  12. data/bin/passenger-spawn-server +17 -12
  13. data/bin/passenger-status +18 -13
  14. data/bin/passenger-stress-test +17 -12
  15. data/doc/{Users guide.html → Users guide Apache.html } +79 -61
  16. data/doc/{Users guide.txt → Users guide Apache.txt } +43 -939
  17. data/doc/Users guide Nginx.html +2276 -0
  18. data/doc/Users guide Nginx.txt +776 -0
  19. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +9 -4
  20. data/doc/cxxapi/ApplicationPool_8h-source.html +9 -4
  21. data/doc/cxxapi/Application_8h-source.html +26 -21
  22. data/doc/cxxapi/Bucket_8h-source.html +54 -44
  23. data/doc/cxxapi/CachedFileStat_8h-source.html +9 -4
  24. data/doc/cxxapi/Configuration_8h-source.html +357 -339
  25. data/doc/cxxapi/DirectoryMapper_8h-source.html +294 -280
  26. data/doc/cxxapi/DummySpawnManager_8h-source.html +9 -4
  27. data/doc/cxxapi/Exceptions_8h-source.html +9 -4
  28. data/doc/cxxapi/FileChecker_8h-source.html +9 -4
  29. data/doc/cxxapi/Hooks_8h-source.html +50 -40
  30. data/doc/cxxapi/Logging_8h-source.html +9 -4
  31. data/doc/cxxapi/MessageChannel_8h-source.html +20 -15
  32. data/doc/cxxapi/PoolOptions_8h-source.html +10 -5
  33. data/doc/cxxapi/SpawnManager_8h-source.html +9 -4
  34. data/doc/cxxapi/StandardApplicationPool_8h-source.html +10 -5
  35. data/doc/cxxapi/SystemTime_8h-source.html +9 -4
  36. data/doc/cxxapi/Utils_8h-source.html +242 -214
  37. data/doc/cxxapi/annotated.html +4 -28
  38. data/doc/cxxapi/classClient-members.html +4 -4
  39. data/doc/cxxapi/classClient.html +14 -11
  40. data/doc/cxxapi/classHooks-members.html +4 -5
  41. data/doc/cxxapi/classHooks.html +26 -24
  42. data/doc/cxxapi/classPassenger_1_1Application-members.html +4 -4
  43. data/doc/cxxapi/classPassenger_1_1Application.html +40 -37
  44. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
  45. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +95 -92
  46. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +4 -4
  47. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +26 -23
  48. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +1 -1
  49. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +1 -1
  50. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  51. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +17 -17
  52. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +139 -136
  53. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +4 -4
  54. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +13 -10
  55. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +4 -4
  56. data/doc/cxxapi/classPassenger_1_1BusyException.html +11 -8
  57. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +4 -4
  58. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +11 -8
  59. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +4 -5
  60. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +45 -43
  61. data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +4 -4
  62. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +13 -10
  63. data/doc/cxxapi/classPassenger_1_1FileChecker-members.html +4 -4
  64. data/doc/cxxapi/classPassenger_1_1FileChecker.html +22 -19
  65. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +4 -4
  66. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +12 -9
  67. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +1 -1
  68. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +1 -1
  69. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  70. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +4 -4
  71. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +14 -11
  72. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +1 -1
  73. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +1 -1
  74. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  75. data/doc/cxxapi/classPassenger_1_1IOException-members.html +4 -4
  76. data/doc/cxxapi/classPassenger_1_1IOException.html +12 -9
  77. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +1 -1
  78. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -1
  79. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  80. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +4 -4
  81. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +228 -225
  82. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +4 -4
  83. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +11 -8
  84. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +4 -4
  85. data/doc/cxxapi/classPassenger_1_1SpawnException.html +14 -11
  86. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +4 -4
  87. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +50 -47
  88. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +4 -4
  89. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +73 -70
  90. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +1 -1
  91. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +1 -1
  92. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  93. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +4 -4
  94. data/doc/cxxapi/classPassenger_1_1SystemException.html +17 -14
  95. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +1 -1
  96. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -1
  97. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  98. data/doc/cxxapi/classPassenger_1_1SystemTime-members.html +4 -4
  99. data/doc/cxxapi/classPassenger_1_1SystemTime.html +14 -11
  100. data/doc/cxxapi/classes.html +35 -0
  101. data/doc/cxxapi/definitions_8h-source.html +9 -4
  102. data/doc/cxxapi/doxygen.css +311 -303
  103. data/doc/cxxapi/files.html +9 -18
  104. data/doc/cxxapi/functions.html +5 -224
  105. data/doc/cxxapi/functions_func.html +5 -185
  106. data/doc/cxxapi/functions_type.html +4 -4
  107. data/doc/cxxapi/functions_vars.html +4 -4
  108. data/doc/cxxapi/graph_legend.dot +19 -19
  109. data/doc/cxxapi/graph_legend.html +5 -5
  110. data/doc/cxxapi/graph_legend.png +0 -0
  111. data/doc/cxxapi/group__Configuration.html +11 -13
  112. data/doc/cxxapi/group__Configuration.png +0 -0
  113. data/doc/cxxapi/group__Core.html +10 -12
  114. data/doc/cxxapi/group__Core.png +0 -0
  115. data/doc/cxxapi/group__Exceptions.html +5 -7
  116. data/doc/cxxapi/group__Hooks.html +5 -7
  117. data/doc/cxxapi/group__Hooks.png +0 -0
  118. data/doc/cxxapi/group__Support.html +5 -624
  119. data/doc/cxxapi/hierarchy.html +6 -6
  120. data/doc/cxxapi/inherit__graph__0.map +1 -1
  121. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  122. data/doc/cxxapi/inherit__graph__0.png +0 -0
  123. data/doc/cxxapi/inherit__graph__1.map +1 -1
  124. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  125. data/doc/cxxapi/inherit__graph__1.png +0 -0
  126. data/doc/cxxapi/inherit__graph__10.map +1 -1
  127. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  128. data/doc/cxxapi/inherit__graph__10.png +0 -0
  129. data/doc/cxxapi/inherit__graph__11.map +1 -1
  130. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  131. data/doc/cxxapi/inherit__graph__11.png +0 -0
  132. data/doc/cxxapi/inherit__graph__12.map +1 -1
  133. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  134. data/doc/cxxapi/inherit__graph__12.png +0 -0
  135. data/doc/cxxapi/inherit__graph__13.map +1 -2
  136. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  137. data/doc/cxxapi/inherit__graph__13.png +0 -0
  138. data/doc/cxxapi/inherit__graph__14.map +2 -1
  139. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  140. data/doc/cxxapi/inherit__graph__14.png +0 -0
  141. data/doc/cxxapi/inherit__graph__15.map +1 -1
  142. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  143. data/doc/cxxapi/inherit__graph__15.png +0 -0
  144. data/doc/cxxapi/inherit__graph__16.map +1 -1
  145. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  146. data/doc/cxxapi/inherit__graph__16.png +0 -0
  147. data/doc/cxxapi/inherit__graph__17.map +1 -1
  148. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  149. data/doc/cxxapi/inherit__graph__17.png +0 -0
  150. data/doc/cxxapi/inherit__graph__18.map +1 -1
  151. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  152. data/doc/cxxapi/inherit__graph__18.png +0 -0
  153. data/doc/cxxapi/inherit__graph__19.map +1 -1
  154. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  155. data/doc/cxxapi/inherit__graph__19.png +0 -0
  156. data/doc/cxxapi/inherit__graph__2.map +1 -1
  157. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  158. data/doc/cxxapi/inherit__graph__2.png +0 -0
  159. data/doc/cxxapi/inherit__graph__20.map +2 -2
  160. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  161. data/doc/cxxapi/inherit__graph__20.png +0 -0
  162. data/doc/cxxapi/inherit__graph__21.map +1 -1
  163. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  164. data/doc/cxxapi/inherit__graph__21.png +0 -0
  165. data/doc/cxxapi/inherit__graph__3.map +1 -1
  166. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  167. data/doc/cxxapi/inherit__graph__3.png +0 -0
  168. data/doc/cxxapi/inherit__graph__4.map +1 -1
  169. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  170. data/doc/cxxapi/inherit__graph__4.png +0 -0
  171. data/doc/cxxapi/inherit__graph__5.map +1 -2
  172. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  173. data/doc/cxxapi/inherit__graph__5.png +0 -0
  174. data/doc/cxxapi/inherit__graph__6.map +2 -1
  175. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  176. data/doc/cxxapi/inherit__graph__6.png +0 -0
  177. data/doc/cxxapi/inherit__graph__7.map +1 -1
  178. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  179. data/doc/cxxapi/inherit__graph__7.png +0 -0
  180. data/doc/cxxapi/inherit__graph__8.map +1 -1
  181. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  182. data/doc/cxxapi/inherit__graph__8.png +0 -0
  183. data/doc/cxxapi/inherit__graph__9.map +1 -1
  184. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  185. data/doc/cxxapi/inherit__graph__9.png +0 -0
  186. data/doc/cxxapi/inherits.html +41 -41
  187. data/doc/cxxapi/main.html +4 -4
  188. data/doc/cxxapi/modules.html +4 -5
  189. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +4 -4
  190. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +13 -10
  191. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +5 -5
  192. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +16 -13
  193. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +4 -4
  194. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +63 -60
  195. data/doc/cxxapi/tabs.css +5 -2
  196. data/doc/cxxapi/tree.html +7 -81
  197. data/doc/rdoc/classes/ConditionVariable.html +59 -59
  198. data/doc/rdoc/classes/Exception.html +11 -11
  199. data/doc/rdoc/classes/GC.html +4 -4
  200. data/doc/rdoc/classes/IO.html +14 -14
  201. data/doc/rdoc/classes/PhusionPassenger.html +75 -20
  202. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +153 -0
  203. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +125 -130
  204. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +236 -236
  205. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +213 -213
  206. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +28 -28
  207. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +91 -75
  208. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +10 -10
  209. data/doc/rdoc/classes/PhusionPassenger/Application.html +64 -64
  210. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +34 -34
  211. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +13 -13
  212. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +30 -30
  213. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +10 -10
  214. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +136 -136
  215. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +24 -24
  216. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +42 -42
  217. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +55 -53
  218. data/doc/rdoc/classes/PhusionPassenger/Railz.html +1 -1
  219. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +25 -30
  220. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +23 -23
  221. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +116 -117
  222. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +22 -22
  223. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +118 -124
  224. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +10 -10
  225. data/doc/rdoc/classes/PhusionPassenger/Utils.html +354 -354
  226. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +9 -9
  227. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +37 -37
  228. data/doc/rdoc/classes/PlatformInfo.html +282 -261
  229. data/doc/rdoc/classes/RakeExtensions.html +7 -7
  230. data/doc/rdoc/classes/Signal.html +26 -26
  231. data/doc/rdoc/created.rid +1 -1
  232. data/doc/rdoc/files/DEVELOPERS_TXT.html +6 -1
  233. data/doc/rdoc/files/README.html +15 -6
  234. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +1 -1
  235. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +129 -0
  236. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +20 -13
  237. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +19 -13
  238. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +19 -13
  239. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +31 -1
  240. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +31 -1
  241. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +19 -13
  242. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +19 -13
  243. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +21 -12
  244. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +19 -13
  245. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +19 -13
  246. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +19 -13
  247. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +19 -13
  248. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +19 -13
  249. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  250. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +19 -13
  251. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +22 -12
  252. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +21 -12
  253. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +19 -13
  254. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +1 -1
  255. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +19 -13
  256. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +21 -12
  257. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +19 -13
  258. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +19 -13
  259. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +27 -21
  260. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +21 -12
  261. data/doc/rdoc/files/misc/rake/extensions_rb.html +21 -12
  262. data/doc/rdoc/fr_class_index.html +1 -0
  263. data/doc/rdoc/fr_file_index.html +2 -0
  264. data/doc/rdoc/fr_method_index.html +116 -112
  265. data/doc/users_guide_snippets/analysis_and_system_maintenance_tools.txt +144 -0
  266. data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
  267. data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
  268. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +304 -0
  269. data/doc/users_guide_snippets/global_queueing_explained.txt +78 -0
  270. data/doc/users_guide_snippets/rackup_specifications.txt +75 -0
  271. data/doc/users_guide_snippets/rails_spawn_method.txt +48 -0
  272. data/doc/users_guide_snippets/tips.txt +173 -0
  273. data/ext/apache2/Bucket.cpp +17 -12
  274. data/ext/apache2/Bucket.h +17 -12
  275. data/ext/apache2/Configuration.cpp +17 -12
  276. data/ext/apache2/Configuration.h +27 -14
  277. data/ext/apache2/DirectoryMapper.h +21 -12
  278. data/ext/apache2/Hooks.cpp +67 -21
  279. data/ext/apache2/Hooks.h +17 -12
  280. data/ext/apache2/mod_passenger.c +17 -12
  281. data/ext/{apache2 → common}/Application.h +19 -14
  282. data/ext/{apache2 → common}/ApplicationPool.h +17 -12
  283. data/ext/{apache2 → common}/ApplicationPoolServer.h +18 -72
  284. data/ext/{apache2 → common}/ApplicationPoolServerExecutable.cpp +45 -104
  285. data/ext/common/ApplicationPoolStatusReporter.h +212 -0
  286. data/ext/{apache2 → common}/CachedFileStat.cpp +17 -12
  287. data/ext/{apache2 → common}/CachedFileStat.h +17 -12
  288. data/ext/{apache2 → common}/DummySpawnManager.h +17 -12
  289. data/ext/{apache2 → common}/Exceptions.h +17 -12
  290. data/ext/{apache2 → common}/FileChecker.h +17 -12
  291. data/ext/common/Logging.cpp +65 -0
  292. data/ext/{apache2 → common}/Logging.h +17 -12
  293. data/ext/{apache2 → common}/MessageChannel.h +17 -12
  294. data/ext/{apache2 → common}/PoolOptions.h +17 -12
  295. data/ext/{apache2 → common}/SpawnManager.h +17 -12
  296. data/ext/{apache2 → common}/StandardApplicationPool.h +17 -12
  297. data/ext/common/StaticString.h +147 -0
  298. data/ext/common/SystemTime.cpp +33 -0
  299. data/ext/{apache2 → common}/SystemTime.h +17 -12
  300. data/ext/{apache2 → common}/Utils.cpp +69 -12
  301. data/ext/{apache2 → common}/Utils.h +41 -12
  302. data/ext/nginx/Configuration.c +1091 -0
  303. data/ext/nginx/Configuration.h +71 -0
  304. data/ext/nginx/ContentHandler.c +1154 -0
  305. data/ext/nginx/ContentHandler.h +64 -0
  306. data/ext/nginx/HelperServer.cpp +857 -0
  307. data/ext/nginx/HttpStatusExtractor.h +161 -0
  308. data/ext/nginx/ScgiRequestParser.h +317 -0
  309. data/ext/nginx/StaticContentHandler.c +222 -0
  310. data/ext/nginx/StaticContentHandler.h +37 -0
  311. data/ext/nginx/config +41 -0
  312. data/ext/nginx/ngx_http_passenger_module.c +572 -0
  313. data/ext/nginx/ngx_http_passenger_module.h +72 -0
  314. data/ext/oxt/backtrace.cpp +8 -1
  315. data/ext/oxt/system_calls.cpp +40 -0
  316. data/ext/oxt/system_calls.hpp +14 -7
  317. data/ext/phusion_passenger/extconf.rb +17 -12
  318. data/ext/phusion_passenger/native_support.c +19 -12
  319. data/lib/phusion_passenger/abstract_installer.rb +196 -0
  320. data/lib/phusion_passenger/abstract_request_handler.rb +19 -24
  321. data/lib/phusion_passenger/abstract_server.rb +17 -12
  322. data/lib/phusion_passenger/abstract_server_collection.rb +17 -12
  323. data/lib/phusion_passenger/admin_tools.rb +23 -0
  324. data/lib/phusion_passenger/admin_tools/control_process.rb +39 -13
  325. data/lib/phusion_passenger/application.rb +17 -12
  326. data/lib/phusion_passenger/console_text_template.rb +17 -12
  327. data/lib/phusion_passenger/constants.rb +22 -11
  328. data/lib/phusion_passenger/dependencies.rb +47 -12
  329. data/lib/phusion_passenger/events.rb +17 -12
  330. data/lib/phusion_passenger/exceptions.rb +17 -12
  331. data/lib/phusion_passenger/html_template.rb +17 -12
  332. data/lib/phusion_passenger/message_channel.rb +17 -12
  333. data/lib/phusion_passenger/packaging.rb +39 -0
  334. data/lib/phusion_passenger/platform_info.rb +48 -22
  335. data/lib/phusion_passenger/rack/application_spawner.rb +22 -11
  336. data/lib/phusion_passenger/rack/request_handler.rb +21 -12
  337. data/lib/phusion_passenger/railz/application_spawner.rb +23 -23
  338. data/lib/phusion_passenger/railz/framework_spawner.rb +18 -14
  339. data/lib/phusion_passenger/railz/request_handler.rb +18 -11
  340. data/lib/phusion_passenger/simple_benchmarking.rb +17 -12
  341. data/lib/phusion_passenger/spawn_manager.rb +17 -20
  342. data/lib/phusion_passenger/templates/{apache_must_be_compiled_with_compatible_mpm.txt.erb → apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb} +0 -0
  343. data/lib/phusion_passenger/templates/{apache2_config_snippets.txt.erb → apache2/config_snippets.txt.erb} +0 -0
  344. data/lib/phusion_passenger/templates/{deployment_example.txt.erb → apache2/deployment_example.txt.erb} +0 -0
  345. data/lib/phusion_passenger/templates/{no_write_permission_to_passenger_root.txt.erb → apache2/no_write_permission_to_passenger_root.txt.erb} +0 -0
  346. data/lib/phusion_passenger/templates/{possible_solutions_for_compilation_and_installation_problems.txt.erb → apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb} +0 -0
  347. data/lib/phusion_passenger/templates/{run_installer_as_root.txt.erb → apache2/run_installer_as_root.txt.erb} +0 -0
  348. data/lib/phusion_passenger/templates/{welcome.txt.erb → apache2/welcome.txt.erb} +0 -0
  349. data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
  350. data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
  351. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
  352. data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
  353. data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
  354. data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
  355. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
  356. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
  357. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  358. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
  359. data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
  360. data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
  361. data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
  362. data/lib/phusion_passenger/utils.rb +20 -15
  363. data/lib/phusion_passenger/wsgi/application_spawner.rb +18 -11
  364. data/lib/phusion_passenger/wsgi/request_handler.py +23 -0
  365. data/misc/copy_boost_headers.rb +23 -0
  366. data/misc/find_owner_pipe_leaks.rb +18 -11
  367. data/misc/rake/cplusplus.rb +18 -11
  368. data/misc/rake/extensions.rb +21 -14
  369. data/misc/render_error_pages.rb +18 -11
  370. data/test/ApplicationPoolServerTest.cpp +1 -3
  371. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +1 -1
  372. data/test/CxxTestMain.cpp +19 -3
  373. data/test/HttpStatusExtractorTest.cpp +181 -0
  374. data/test/ScgiRequestParserTest.cpp +337 -0
  375. data/test/StaticStringTest.cpp +51 -0
  376. data/test/UtilsTest.cpp +32 -0
  377. data/test/config.yml.example +5 -0
  378. data/test/{integration_tests.rb → integration_tests/apache2_tests.rb} +7 -299
  379. data/test/integration_tests/hello_world_rack_spec.rb +36 -0
  380. data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
  381. data/test/integration_tests/mycook_spec.rb +192 -0
  382. data/test/integration_tests/nginx_tests.rb +98 -0
  383. data/test/ruby/rack/application_spawner_spec.rb +40 -0
  384. data/test/stub/nginx/koi-utf +109 -0
  385. data/test/stub/nginx/koi-win +103 -0
  386. data/test/stub/nginx/mime.types +70 -0
  387. data/test/stub/nginx/nginx.conf.erb +57 -0
  388. data/test/stub/nginx/win-utf +126 -0
  389. data/test/stub/rails_apps/mycook/app/controllers/uploads_controller.rb +4 -0
  390. data/test/stub/rails_apps/mycook/config/routes.rb +1 -1
  391. data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
  392. data/test/support/Support.h +40 -0
  393. data/test/support/nginx_controller.rb +98 -0
  394. data/test/support/test_helper.rb +79 -0
  395. metadata +1091 -1028
  396. data/benchmark/DummyRequestHandler.cpp +0 -101
  397. data/ext/apache2/Logging.cpp +0 -60
  398. data/ext/apache2/SystemTime.cpp +0 -28
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Member List</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -25,8 +25,8 @@
25
25
  <div class="contents">
26
26
  <h1>Passenger::AnythingToString&lt; T &gt; Member List</h1>This is the complete list of members for <a class="el" href="structPassenger_1_1AnythingToString.html">Passenger::AnythingToString&lt; T &gt;</a>, including all inherited members.<p><table>
27
27
  </table></div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
30
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
32
32
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Passenger::AnythingToString&lt; T &gt; Struct Template Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -25,24 +25,27 @@
25
25
  </div>
26
26
  </div>
27
27
  <div class="contents">
28
- <h1>Passenger::AnythingToString&lt; T &gt; Struct Template Reference</h1><!-- doxytag: class="Passenger::AnythingToString" --><code>#include &lt;<a class="el" href="Utils_8h-source.html">Utils.h</a>&gt;</code>
28
+ <h1>Passenger::AnythingToString&lt; T &gt; Struct Template Reference</h1><!-- doxytag: class="Passenger::AnythingToString" -->Used internally by <a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString()</a>.
29
+ <a href="#_details">More...</a>
30
+ <p>
31
+ <code>#include &lt;<a class="el" href="Utils_8h-source.html">Utils.h</a>&gt;</code>
29
32
  <p>
30
33
 
31
34
  <p>
32
- <a href="structPassenger_1_1AnythingToString-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
35
+ <a href="structPassenger_1_1AnythingToString-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
36
+ <tr><td></td></tr>
37
+ </table>
38
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
33
39
  <h3>template&lt;typename T&gt;<br>
34
40
  struct Passenger::AnythingToString&lt; T &gt;</h3>
35
41
 
36
42
  Used internally by <a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString()</a>.
37
43
  <p>
38
- Do not use directly. <table border="0" cellpadding="0" cellspacing="0">
39
- <tr><td></td></tr>
40
- </table>
41
- <hr>The documentation for this struct was generated from the following file:<ul>
44
+ Do not use directly. <hr>The documentation for this struct was generated from the following file:<ul>
42
45
  <li><a class="el" href="Utils_8h-source.html">Utils.h</a></ul>
43
46
  </div>
44
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
47
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
45
48
  <a href="http://www.doxygen.org/index.html">
46
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
49
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
47
50
  </body>
48
51
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Member List</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -23,10 +23,10 @@
23
23
  </div>
24
24
  </div>
25
25
  <div class="contents">
26
- <h1>Passenger::Passenger::AnythingToString&lt; vector&lt; string &gt; &gt; Member List</h1>This is the complete list of members for <a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">Passenger::Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</a>, including all inherited members.<p><table>
26
+ <h1>Passenger::AnythingToString&lt; vector&lt; string &gt; &gt; Member List</h1>This is the complete list of members for <a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</a>, including all inherited members.<p><table>
27
27
  </table></div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
30
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
32
32
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
- <title>Passenger: Passenger::Passenger::AnythingToString&lt; vector&lt; string &gt; &gt; Struct Template Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
3
+ <title>Passenger: Passenger::AnythingToString&lt; vector&lt; string &gt; &gt; Struct Template Reference</title>
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -21,28 +21,31 @@
21
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
22
  </ul>
23
23
  </div>
24
- <div class="navpath"><b>Passenger</b>::<a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">AnythingToString&lt; vector&lt; string &gt; &gt;</a>
25
25
  </div>
26
26
  </div>
27
27
  <div class="contents">
28
- <h1>Passenger::Passenger::AnythingToString&lt; vector&lt; string &gt; &gt; Struct Template Reference</h1><!-- doxytag: class="Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;" --><code>#include &lt;<a class="el" href="Utils_8h-source.html">Utils.h</a>&gt;</code>
28
+ <h1>Passenger::AnythingToString&lt; vector&lt; string &gt; &gt; Struct Template Reference</h1><!-- doxytag: class="Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;" -->Used internally by <a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString()</a>.
29
+ <a href="#_details">More...</a>
30
+ <p>
31
+ <code>#include &lt;<a class="el" href="Utils_8h-source.html">Utils.h</a>&gt;</code>
29
32
  <p>
30
33
 
31
34
  <p>
32
- <a href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
35
+ <a href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
36
+ <tr><td></td></tr>
37
+ </table>
38
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
33
39
  <h3>template&lt;&gt;<br>
34
- struct Passenger::Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</h3>
40
+ struct Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</h3>
35
41
 
36
42
  Used internally by <a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString()</a>.
37
43
  <p>
38
- Do not use directly. <table border="0" cellpadding="0" cellspacing="0">
39
- <tr><td></td></tr>
40
- </table>
41
- <hr>The documentation for this struct was generated from the following file:<ul>
44
+ Do not use directly. <hr>The documentation for this struct was generated from the following file:<ul>
42
45
  <li><a class="el" href="Utils_8h-source.html">Utils.h</a></ul>
43
46
  </div>
44
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
47
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
45
48
  <a href="http://www.doxygen.org/index.html">
46
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
49
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
47
50
  </body>
48
51
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Member List</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -42,8 +42,8 @@
42
42
  <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#b5e62e9abf7b89b8d3e5cdfb14e9d2af">toVector</a>(vector&lt; string &gt; &amp;vec) const </td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td><code> [inline]</code></td></tr>
43
43
  <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">useGlobalQueue</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
44
44
  </table></div>
45
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
45
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
46
46
  <a href="http://www.doxygen.org/index.html">
47
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
47
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
48
48
  </body>
49
49
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Passenger::PoolOptions Struct Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -25,24 +25,20 @@
25
25
  </div>
26
26
  </div>
27
27
  <div class="contents">
28
- <h1>Passenger::PoolOptions Struct Reference</h1><!-- doxytag: class="Passenger::PoolOptions" --><code>#include &lt;<a class="el" href="PoolOptions_8h-source.html">PoolOptions.h</a>&gt;</code>
28
+ <h1>Passenger::PoolOptions Struct Reference</h1><!-- doxytag: class="Passenger::PoolOptions" -->This struct encapsulates information for <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> and for <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">SpawnManager::spawn()</a>, such as which application is to be spawned.
29
+ <a href="#_details">More...</a>
29
30
  <p>
30
-
31
+ <code>#include &lt;<a class="el" href="PoolOptions_8h-source.html">PoolOptions.h</a>&gt;</code>
31
32
  <p>
32
- <a href="structPassenger_1_1PoolOptions-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
33
- This struct encapsulates information for <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> and for <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">SpawnManager::spawn()</a>, such as which application is to be spawned.
34
- <p>
35
- <h2>Notes on privilege lowering support</h2>
33
+
36
34
  <p>
37
- If <code>lowerPrivilege</code> is true, then it will be attempt to switch the spawned application instance to the user who owns the application's <code>config/environment.rb</code>, and to the default group of that user.<p>
38
- If that user doesn't exist on the system, or if that user is root, then it will be attempted to switch to the username given by <code>lowestUser</code> (and to the default group of that user). If <code>lowestUser</code> doesn't exist either, or if switching user failed (because the spawn server process does not have the privilege to do so), then the application will be spawned anyway, without reporting an error.<p>
39
- It goes without saying that lowering privilege is only possible if the spawn server is running as root (and thus, by induction, that Phusion Passenger and Apache's control process are also running as root). Note that if Apache is listening on port 80, then its control process must be running as root. See "doc/Security of user switching.txt" for a detailed explanation. <table border="0" cellpadding="0" cellspacing="0">
35
+ <a href="structPassenger_1_1PoolOptions-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
40
36
  <tr><td></td></tr>
41
37
  <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
42
38
  <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4">PoolOptions</a> ()</td></tr>
43
39
 
44
40
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object with the default values filled in. <a href="#b2b7c72144c108657e3ad4ac9f6e26f4"></a><br></td></tr>
45
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="038861a1ee8bda738325c38ce511347d"></a><!-- doxytag: member="Passenger::PoolOptions::PoolOptions" ref="038861a1ee8bda738325c38ce511347d" args="(const string &amp;appRoot, bool lowerPrivilege=true, const string &amp;lowestUser=&quot;nobody&quot;, const string &amp;environment=&quot;production&quot;, const string &amp;spawnMethod=&quot;smart&quot;, const string &amp;appType=&quot;rails&quot;, long frameworkSpawnerTimeout=-1, long appSpawnerTimeout=-1, unsigned long maxRequests=0, unsigned long memoryLimit=0, bool useGlobalQueue=false, unsigned long statThrottleRate=0, const string &amp;restartDir=&quot;&quot;)" -->
41
+ <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="038861a1ee8bda738325c38ce511347d"></a><!-- doxytag: member="Passenger::PoolOptions::PoolOptions" ref="038861a1ee8bda738325c38ce511347d" args="(const string &amp;appRoot, bool lowerPrivilege=true, const string &amp;lowestUser=&quot;nobody&quot;, const string &amp;environment=&quot;production&quot;, const string &amp;spawnMethod=&quot;smart&quot;, const string &amp;appType=&quot;rails&quot;, long frameworkSpawnerTimeout=&#45;1, long appSpawnerTimeout=&#45;1, unsigned long maxRequests=0, unsigned long memoryLimit=0, bool useGlobalQueue=false, unsigned long statThrottleRate=0, const string &amp;restartDir=&quot;&quot;)" -->
46
42
  &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#038861a1ee8bda738325c38ce511347d">PoolOptions</a> (const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3">appRoot</a>, bool <a class="el" href="structPassenger_1_1PoolOptions.html#7feed1c0a150ffc9bd003f5535d675db">lowerPrivilege</a>=true, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#ec92a9f5d0a265a77fbfdb549f39557a">lowestUser</a>=&quot;nobody&quot;, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc">environment</a>=&quot;production&quot;, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e">spawnMethod</a>=&quot;smart&quot;, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9">appType</a>=&quot;rails&quot;, long <a class="el" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70">frameworkSpawnerTimeout</a>=-1, long <a class="el" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf">appSpawnerTimeout</a>=-1, unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0">maxRequests</a>=0, unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#f61aa527e17a4f2bb5d66260749d17cd">memoryLimit</a>=0, bool <a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">useGlobalQueue</a>=false, unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d">statThrottleRate</a>=0, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5">restartDir</a>=&quot;&quot;)</td></tr>
47
43
 
48
44
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object with the given values. <br></td></tr>
@@ -94,7 +90,14 @@ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="st
94
90
 
95
91
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The directory which contains restart.txt and always_restart.txt. <a href="#b0f889f70a3ed22f2423d110ddaf26f5"></a><br></td></tr>
96
92
  </table>
97
- <hr><h2>Constructor &amp; Destructor Documentation</h2>
93
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
94
+ This struct encapsulates information for <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> and for <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">SpawnManager::spawn()</a>, such as which application is to be spawned.
95
+ <p>
96
+ <h2>Notes on privilege lowering support</h2>
97
+ <p>
98
+ If <code>lowerPrivilege</code> is true, then it will be attempt to switch the spawned application instance to the user who owns the application's <code>config/environment.rb</code>, and to the default group of that user.<p>
99
+ If that user doesn't exist on the system, or if that user is root, then it will be attempted to switch to the username given by <code>lowestUser</code> (and to the default group of that user). If <code>lowestUser</code> doesn't exist either, or if switching user failed (because the spawn server process does not have the privilege to do so), then the application will be spawned anyway, without reporting an error.<p>
100
+ It goes without saying that lowering privilege is only possible if the spawn server is running as root (and thus, by induction, that Phusion Passenger and Apache's control process are also running as root). Note that if Apache is listening on port 80, then its control process must be running as root. See "doc/Security of user switching.txt" for a detailed explanation. <hr><h2>Constructor &amp; Destructor Documentation</h2>
98
101
  <a class="anchor" name="b2b7c72144c108657e3ad4ac9f6e26f4"></a><!-- doxytag: member="Passenger::PoolOptions::PoolOptions" ref="b2b7c72144c108657e3ad4ac9f6e26f4" args="()" -->
99
102
  <div class="memitem">
100
103
  <div class="memproto">
@@ -104,7 +107,7 @@ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="st
104
107
  <td>(</td>
105
108
  <td class="paramname"> </td>
106
109
  <td>&nbsp;)&nbsp;</td>
107
- <td width="100%"><code> [inline]</code></td>
110
+ <td><code> [inline]</code></td>
108
111
  </tr>
109
112
  </table>
110
113
  </div>
@@ -135,7 +138,7 @@ One must still set appRoot manually, after having used this constructor.
135
138
  <tr>
136
139
  <td></td>
137
140
  <td>)</td>
138
- <td></td><td></td><td width="100%"><code> [inline]</code></td>
141
+ <td></td><td></td><td><code> [inline]</code></td>
139
142
  </tr>
140
143
  </table>
141
144
  </div>
@@ -174,7 +177,7 @@ For example: <div class="fragment"><pre class="fragment"> <a class="code" href
174
177
  <td class="paramtype">vector&lt; string &gt; &amp;&nbsp;</td>
175
178
  <td class="paramname"> <em>vec</em> </td>
176
179
  <td>&nbsp;)&nbsp;</td>
177
- <td width="100%"> const<code> [inline]</code></td>
180
+ <td> const<code> [inline]</code></td>
178
181
  </tr>
179
182
  </table>
180
183
  </div>
@@ -204,160 +207,159 @@ The root directory of the application to spawn.
204
207
  In case of a Ruby on Rails application, this is the folder that contains 'app/', 'public/', 'config/', etc. This must be a valid directory, but the path does not have to be absolute.
205
208
  </div>
206
209
  </div><p>
207
- <a class="anchor" name="7feed1c0a150ffc9bd003f5535d675db"></a><!-- doxytag: member="Passenger::PoolOptions::lowerPrivilege" ref="7feed1c0a150ffc9bd003f5535d675db" args="" -->
210
+ <a class="anchor" name="5a2f27a853e33c22da71430216d798cf"></a><!-- doxytag: member="Passenger::PoolOptions::appSpawnerTimeout" ref="5a2f27a853e33c22da71430216d798cf" args="" -->
208
211
  <div class="memitem">
209
212
  <div class="memproto">
210
213
  <table class="memname">
211
214
  <tr>
212
- <td class="memname">bool <a class="el" href="structPassenger_1_1PoolOptions.html#7feed1c0a150ffc9bd003f5535d675db">Passenger::PoolOptions::lowerPrivilege</a> </td>
215
+ <td class="memname">long <a class="el" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf">Passenger::PoolOptions::appSpawnerTimeout</a> </td>
213
216
  </tr>
214
217
  </table>
215
218
  </div>
216
219
  <div class="memdoc">
217
220
 
218
221
  <p>
219
- Whether to lower the application's privileges.
222
+ The idle timeout, in seconds, of Rails application spawners.
220
223
  <p>
221
-
224
+ A timeout of 0 means that the application spawner should never idle timeout. A timeout of -1 means that the default timeout value should be used.<p>
225
+ For more details about Rails application spawners, please read the documentation on the Railz::ApplicationSpawner Ruby class.
222
226
  </div>
223
227
  </div><p>
224
- <a class="anchor" name="4324bb724859905f9991faa9b90aedbc"></a><!-- doxytag: member="Passenger::PoolOptions::environment" ref="4324bb724859905f9991faa9b90aedbc" args="" -->
228
+ <a class="anchor" name="5e1c129ae0b8be350c7ed238eec8a8c9"></a><!-- doxytag: member="Passenger::PoolOptions::appType" ref="5e1c129ae0b8be350c7ed238eec8a8c9" args="" -->
225
229
  <div class="memitem">
226
230
  <div class="memproto">
227
231
  <table class="memname">
228
232
  <tr>
229
- <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc">Passenger::PoolOptions::environment</a> </td>
233
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9">Passenger::PoolOptions::appType</a> </td>
230
234
  </tr>
231
235
  </table>
232
236
  </div>
233
237
  <div class="memdoc">
234
238
 
235
239
  <p>
236
- The RAILS_ENV/RACK_ENV environment that should be used.
240
+ The application type.
237
241
  <p>
238
- May not be an empty string.
242
+ Either "rails", "rack" or "wsgi".
239
243
  </div>
240
244
  </div><p>
241
- <a class="anchor" name="feb629e3ced79f5a2dbccc1beeeeab9e"></a><!-- doxytag: member="Passenger::PoolOptions::spawnMethod" ref="feb629e3ced79f5a2dbccc1beeeeab9e" args="" -->
245
+ <a class="anchor" name="4324bb724859905f9991faa9b90aedbc"></a><!-- doxytag: member="Passenger::PoolOptions::environment" ref="4324bb724859905f9991faa9b90aedbc" args="" -->
242
246
  <div class="memitem">
243
247
  <div class="memproto">
244
248
  <table class="memname">
245
249
  <tr>
246
- <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e">Passenger::PoolOptions::spawnMethod</a> </td>
250
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc">Passenger::PoolOptions::environment</a> </td>
247
251
  </tr>
248
252
  </table>
249
253
  </div>
250
254
  <div class="memdoc">
251
255
 
252
256
  <p>
253
- The spawn method to use.
257
+ The RAILS_ENV/RACK_ENV environment that should be used.
254
258
  <p>
255
- Either "smart" or "conservative". See the Ruby class <code><a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a></code> for details.
259
+ May not be an empty string.
256
260
  </div>
257
261
  </div><p>
258
- <a class="anchor" name="5e1c129ae0b8be350c7ed238eec8a8c9"></a><!-- doxytag: member="Passenger::PoolOptions::appType" ref="5e1c129ae0b8be350c7ed238eec8a8c9" args="" -->
262
+ <a class="anchor" name="cbbea86958b42ffa7989680ed1587c70"></a><!-- doxytag: member="Passenger::PoolOptions::frameworkSpawnerTimeout" ref="cbbea86958b42ffa7989680ed1587c70" args="" -->
259
263
  <div class="memitem">
260
264
  <div class="memproto">
261
265
  <table class="memname">
262
266
  <tr>
263
- <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9">Passenger::PoolOptions::appType</a> </td>
267
+ <td class="memname">long <a class="el" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70">Passenger::PoolOptions::frameworkSpawnerTimeout</a> </td>
264
268
  </tr>
265
269
  </table>
266
270
  </div>
267
271
  <div class="memdoc">
268
272
 
269
273
  <p>
270
- The application type.
274
+ The idle timeout, in seconds, of Rails framework spawners.
271
275
  <p>
272
- Either "rails", "rack" or "wsgi".
276
+ A timeout of 0 means that the framework spawner should never idle timeout. A timeout of -1 means that the default timeout value should be used.<p>
277
+ For more details about Rails framework spawners, please read the documentation on the Railz::FrameworkSpawner Ruby class.
273
278
  </div>
274
279
  </div><p>
275
- <a class="anchor" name="cbbea86958b42ffa7989680ed1587c70"></a><!-- doxytag: member="Passenger::PoolOptions::frameworkSpawnerTimeout" ref="cbbea86958b42ffa7989680ed1587c70" args="" -->
280
+ <a class="anchor" name="7feed1c0a150ffc9bd003f5535d675db"></a><!-- doxytag: member="Passenger::PoolOptions::lowerPrivilege" ref="7feed1c0a150ffc9bd003f5535d675db" args="" -->
276
281
  <div class="memitem">
277
282
  <div class="memproto">
278
283
  <table class="memname">
279
284
  <tr>
280
- <td class="memname">long <a class="el" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70">Passenger::PoolOptions::frameworkSpawnerTimeout</a> </td>
285
+ <td class="memname">bool <a class="el" href="structPassenger_1_1PoolOptions.html#7feed1c0a150ffc9bd003f5535d675db">Passenger::PoolOptions::lowerPrivilege</a> </td>
281
286
  </tr>
282
287
  </table>
283
288
  </div>
284
289
  <div class="memdoc">
285
290
 
286
291
  <p>
287
- The idle timeout, in seconds, of Rails framework spawners.
292
+ Whether to lower the application's privileges.
288
293
  <p>
289
- A timeout of 0 means that the framework spawner should never idle timeout. A timeout of -1 means that the default timeout value should be used.<p>
290
- For more details about Rails framework spawners, please read the documentation on the Railz::FrameworkSpawner Ruby class.
294
+
291
295
  </div>
292
296
  </div><p>
293
- <a class="anchor" name="5a2f27a853e33c22da71430216d798cf"></a><!-- doxytag: member="Passenger::PoolOptions::appSpawnerTimeout" ref="5a2f27a853e33c22da71430216d798cf" args="" -->
297
+ <a class="anchor" name="70251ed3cb3713cb26a0b166c6b015c0"></a><!-- doxytag: member="Passenger::PoolOptions::maxRequests" ref="70251ed3cb3713cb26a0b166c6b015c0" args="" -->
294
298
  <div class="memitem">
295
299
  <div class="memproto">
296
300
  <table class="memname">
297
301
  <tr>
298
- <td class="memname">long <a class="el" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf">Passenger::PoolOptions::appSpawnerTimeout</a> </td>
302
+ <td class="memname">unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0">Passenger::PoolOptions::maxRequests</a> </td>
299
303
  </tr>
300
304
  </table>
301
305
  </div>
302
306
  <div class="memdoc">
303
307
 
304
308
  <p>
305
- The idle timeout, in seconds, of Rails application spawners.
309
+ The maximum number of requests that the spawned application may process before exiting.
306
310
  <p>
307
- A timeout of 0 means that the application spawner should never idle timeout. A timeout of -1 means that the default timeout value should be used.<p>
308
- For more details about Rails application spawners, please read the documentation on the Railz::ApplicationSpawner Ruby class.
311
+ A value of 0 means unlimited.
309
312
  </div>
310
313
  </div><p>
311
- <a class="anchor" name="70251ed3cb3713cb26a0b166c6b015c0"></a><!-- doxytag: member="Passenger::PoolOptions::maxRequests" ref="70251ed3cb3713cb26a0b166c6b015c0" args="" -->
314
+ <a class="anchor" name="f61aa527e17a4f2bb5d66260749d17cd"></a><!-- doxytag: member="Passenger::PoolOptions::memoryLimit" ref="f61aa527e17a4f2bb5d66260749d17cd" args="" -->
312
315
  <div class="memitem">
313
316
  <div class="memproto">
314
317
  <table class="memname">
315
318
  <tr>
316
- <td class="memname">unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0">Passenger::PoolOptions::maxRequests</a> </td>
319
+ <td class="memname">unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#f61aa527e17a4f2bb5d66260749d17cd">Passenger::PoolOptions::memoryLimit</a> </td>
317
320
  </tr>
318
321
  </table>
319
322
  </div>
320
323
  <div class="memdoc">
321
324
 
322
325
  <p>
323
- The maximum number of requests that the spawned application may process before exiting.
326
+ The maximum amount of memory (in MB) the spawned application may use.
324
327
  <p>
325
328
  A value of 0 means unlimited.
326
329
  </div>
327
330
  </div><p>
328
- <a class="anchor" name="f61aa527e17a4f2bb5d66260749d17cd"></a><!-- doxytag: member="Passenger::PoolOptions::memoryLimit" ref="f61aa527e17a4f2bb5d66260749d17cd" args="" -->
331
+ <a class="anchor" name="b0f889f70a3ed22f2423d110ddaf26f5"></a><!-- doxytag: member="Passenger::PoolOptions::restartDir" ref="b0f889f70a3ed22f2423d110ddaf26f5" args="" -->
329
332
  <div class="memitem">
330
333
  <div class="memproto">
331
334
  <table class="memname">
332
335
  <tr>
333
- <td class="memname">unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#f61aa527e17a4f2bb5d66260749d17cd">Passenger::PoolOptions::memoryLimit</a> </td>
336
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5">Passenger::PoolOptions::restartDir</a> </td>
334
337
  </tr>
335
338
  </table>
336
339
  </div>
337
340
  <div class="memdoc">
338
341
 
339
342
  <p>
340
- The maximum amount of memory (in MB) the spawned application may use.
343
+ The directory which contains restart.txt and always_restart.txt.
341
344
  <p>
342
- A value of 0 means unlimited.
345
+ An empty string means that the default directory should be used.
343
346
  </div>
344
347
  </div><p>
345
- <a class="anchor" name="b610e568a7b5d3bb27460d6e35952b7e"></a><!-- doxytag: member="Passenger::PoolOptions::useGlobalQueue" ref="b610e568a7b5d3bb27460d6e35952b7e" args="" -->
348
+ <a class="anchor" name="feb629e3ced79f5a2dbccc1beeeeab9e"></a><!-- doxytag: member="Passenger::PoolOptions::spawnMethod" ref="feb629e3ced79f5a2dbccc1beeeeab9e" args="" -->
346
349
  <div class="memitem">
347
350
  <div class="memproto">
348
351
  <table class="memname">
349
352
  <tr>
350
- <td class="memname">bool <a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">Passenger::PoolOptions::useGlobalQueue</a> </td>
353
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e">Passenger::PoolOptions::spawnMethod</a> </td>
351
354
  </tr>
352
355
  </table>
353
356
  </div>
354
357
  <div class="memdoc">
355
358
 
356
359
  <p>
357
- Whether to use a global queue instead of a per-backend process queue.
360
+ The spawn method to use.
358
361
  <p>
359
- This option is only used by <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a>.<p>
360
- If enabled, when all backend processes are active, get() will wait until there's at least one backend process that's idle, instead of queuing the request into a random process's private queue. This is especially useful if a website has one or more long-running requests.
362
+ Either "smart" or "conservative". See the Ruby class <code><a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a></code> for details.
361
363
  </div>
362
364
  </div><p>
363
365
  <a class="anchor" name="eaf5a998b4a5da2246685c2dfb8a8c6d"></a><!-- doxytag: member="Passenger::PoolOptions::statThrottleRate" ref="eaf5a998b4a5da2246685c2dfb8a8c6d" args="" -->
@@ -377,28 +379,29 @@ A throttling rate for file stats.
377
379
  When set to a non-zero value N, restart.txt and other files which are usually stat()ted on every <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> call will be stat()ed at most every N seconds.
378
380
  </div>
379
381
  </div><p>
380
- <a class="anchor" name="b0f889f70a3ed22f2423d110ddaf26f5"></a><!-- doxytag: member="Passenger::PoolOptions::restartDir" ref="b0f889f70a3ed22f2423d110ddaf26f5" args="" -->
382
+ <a class="anchor" name="b610e568a7b5d3bb27460d6e35952b7e"></a><!-- doxytag: member="Passenger::PoolOptions::useGlobalQueue" ref="b610e568a7b5d3bb27460d6e35952b7e" args="" -->
381
383
  <div class="memitem">
382
384
  <div class="memproto">
383
385
  <table class="memname">
384
386
  <tr>
385
- <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5">Passenger::PoolOptions::restartDir</a> </td>
387
+ <td class="memname">bool <a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">Passenger::PoolOptions::useGlobalQueue</a> </td>
386
388
  </tr>
387
389
  </table>
388
390
  </div>
389
391
  <div class="memdoc">
390
392
 
391
393
  <p>
392
- The directory which contains restart.txt and always_restart.txt.
394
+ Whether to use a global queue instead of a per-backend process queue.
393
395
  <p>
394
- An empty string means that the default directory should be used.
396
+ This option is only used by <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a>.<p>
397
+ If enabled, when all backend processes are active, get() will wait until there's at least one backend process that's idle, instead of queuing the request into a random process's private queue. This is especially useful if a website has one or more long-running requests.
395
398
  </div>
396
399
  </div><p>
397
400
  <hr>The documentation for this struct was generated from the following file:<ul>
398
401
  <li><a class="el" href="PoolOptions_8h-source.html">PoolOptions.h</a></ul>
399
402
  </div>
400
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
403
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
401
404
  <a href="http://www.doxygen.org/index.html">
402
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
405
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
403
406
  </body>
404
407
  </html>