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
@@ -4,7 +4,7 @@
4
4
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
5
  <html>
6
6
  <head>
7
- <title>Class: Passenger::AbstractServer</title>
7
+ <title>Class: PhusionPassenger::AbstractServer</title>
8
8
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
9
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
10
 
@@ -51,13 +51,13 @@
51
51
 
52
52
  <body>
53
53
  <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
- <td class="file-title"><span class="file-title-prefix">Class</span><br />Passenger::AbstractServer</td>
54
+ <td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::AbstractServer</td>
55
55
  <td align="right">
56
56
  <table cellspacing="0" cellpadding="2">
57
57
  <tr valign="top">
58
58
  <td>In:</td>
59
59
  <td>
60
- <a href="../../files/lib/passenger/abstract_server_rb.html">lib/passenger/abstract_server.rb</a>
60
+ <a href="../../files/lib/phusion_passenger/abstract_server_rb.html">lib/phusion_passenger/abstract_server.rb</a>
61
61
  </td>
62
62
  </tr>
63
63
  <tr>
@@ -77,29 +77,29 @@ Object
77
77
 
78
78
  <div class="description"><p>
79
79
  An abstract base class for a <a
80
- href="AbstractServer.html#M000063">server</a>, with the following
80
+ href="AbstractServer.html#M000134">server</a>, with the following
81
81
  properties:
82
82
  </p>
83
83
  <ul>
84
- <li>The <a href="AbstractServer.html#M000063">server</a> has exactly one <a
85
- href="AbstractServer.html#M000064">client</a>, and is connected to that <a
86
- href="AbstractServer.html#M000064">client</a> at all times. The <a
87
- href="AbstractServer.html#M000063">server</a> will quit when the connection
84
+ <li>The <a href="AbstractServer.html#M000134">server</a> has exactly one <a
85
+ href="AbstractServer.html#M000135">client</a>, and is connected to that <a
86
+ href="AbstractServer.html#M000135">client</a> at all times. The <a
87
+ href="AbstractServer.html#M000134">server</a> will quit when the connection
88
88
  closes.
89
89
 
90
90
  </li>
91
- <li>The <a href="AbstractServer.html#M000063">server</a>&#8216;s main loop may
91
+ <li>The <a href="AbstractServer.html#M000134">server</a>&#8216;s main loop may
92
92
  be run in a child process (and so is asynchronous from the main process).
93
93
 
94
94
  </li>
95
95
  <li>One can communicate with the <a
96
- href="AbstractServer.html#M000063">server</a> through discrete messages (as
96
+ href="AbstractServer.html#M000134">server</a> through discrete messages (as
97
97
  opposed to byte streams).
98
98
 
99
99
  </li>
100
- <li>The <a href="AbstractServer.html#M000063">server</a> can pass file
100
+ <li>The <a href="AbstractServer.html#M000134">server</a> can pass file
101
101
  descriptors (<a href="../IO.html">IO</a> objects) back to the <a
102
- href="AbstractServer.html#M000064">client</a>.
102
+ href="AbstractServer.html#M000135">client</a>.
103
103
 
104
104
  </li>
105
105
  </ul>
@@ -108,24 +108,24 @@ A message is just an ordered list of strings. The first element in the
108
108
  message is the _message name_.
109
109
  </p>
110
110
  <p>
111
- The <a href="AbstractServer.html#M000063">server</a> will also reset all
111
+ The <a href="AbstractServer.html#M000134">server</a> will also reset all
112
112
  signal handlers (in the child process). That is, it will respond to all
113
113
  signals in the default manner. The only exception is SIGHUP, which is
114
114
  ignored. One may define additional signal handlers using <a
115
- href="AbstractServer.html#M000062">define_signal_handler</a>().
115
+ href="AbstractServer.html#M000133">define_signal_handler</a>().
116
116
  </p>
117
117
  <p>
118
118
  Before an <a href="AbstractServer.html">AbstractServer</a> can be used, it
119
119
  must first be started by calling <a
120
- href="AbstractServer.html#M000053">start</a>(). When it is no longer
121
- needed, <a href="AbstractServer.html#M000055">stop</a>() should be called.
120
+ href="AbstractServer.html#M000124">start</a>(). When it is no longer
121
+ needed, <a href="AbstractServer.html#M000126">stop</a>() should be called.
122
122
  </p>
123
123
  <p>
124
124
  Here&#8216;s an example on using <a
125
125
  href="AbstractServer.html">AbstractServer</a>:
126
126
  </p>
127
127
  <pre>
128
- class MyServer &lt; Passenger::AbstractServer
128
+ class MyServer &lt; PhusionPassenger::AbstractServer
129
129
  def initialize
130
130
  super()
131
131
  define_message_handler(:hello, :handle_hello)
@@ -155,20 +155,20 @@ href="AbstractServer.html">AbstractServer</a>:
155
155
 
156
156
  <div class="sectiontitle">Methods</div>
157
157
  <ul>
158
- <li><a href="#M000058">before_fork</a></li>
159
- <li><a href="#M000064">client</a></li>
160
- <li><a href="#M000061">define_message_handler</a></li>
161
- <li><a href="#M000062">define_signal_handler</a></li>
162
- <li><a href="#M000060">finalize_server</a></li>
163
- <li><a href="#M000059">initialize_server</a></li>
164
- <li><a href="#M000052">new</a></li>
165
- <li><a href="#M000065">quit_main</a></li>
166
- <li><a href="#M000063">server</a></li>
167
- <li><a href="#M000057">server_pid</a></li>
168
- <li><a href="#M000053">start</a></li>
169
- <li><a href="#M000054">start_synchronously</a></li>
170
- <li><a href="#M000056">started?</a></li>
171
- <li><a href="#M000055">stop</a></li>
158
+ <li><a href="#M000129">before_fork</a></li>
159
+ <li><a href="#M000135">client</a></li>
160
+ <li><a href="#M000132">define_message_handler</a></li>
161
+ <li><a href="#M000133">define_signal_handler</a></li>
162
+ <li><a href="#M000131">finalize_server</a></li>
163
+ <li><a href="#M000130">initialize_server</a></li>
164
+ <li><a href="#M000123">new</a></li>
165
+ <li><a href="#M000136">quit_main</a></li>
166
+ <li><a href="#M000134">server</a></li>
167
+ <li><a href="#M000128">server_pid</a></li>
168
+ <li><a href="#M000124">start</a></li>
169
+ <li><a href="#M000125">start_synchronously</a></li>
170
+ <li><a href="#M000127">started?</a></li>
171
+ <li><a href="#M000126">stop</a></li>
172
172
  </ul>
173
173
 
174
174
  <div class="sectiontitle">Included Modules</div>
@@ -178,10 +178,10 @@ href="AbstractServer.html">AbstractServer</a>:
178
178
 
179
179
 
180
180
  <div class="sectiontitle">Classes and Modules</div>
181
- Class <a href="AbstractServer/ServerAlreadyStarted.html" class="link">Passenger::AbstractServer::ServerAlreadyStarted</a><br />
182
- Class <a href="AbstractServer/ServerError.html" class="link">Passenger::AbstractServer::ServerError</a><br />
183
- Class <a href="AbstractServer/ServerNotStarted.html" class="link">Passenger::AbstractServer::ServerNotStarted</a><br />
184
- Class <a href="AbstractServer/UnknownMessage.html" class="link">Passenger::AbstractServer::UnknownMessage</a><br />
181
+ Class <a href="AbstractServer/ServerAlreadyStarted.html" class="link">PhusionPassenger::AbstractServer::ServerAlreadyStarted</a><br />
182
+ Class <a href="AbstractServer/ServerError.html" class="link">PhusionPassenger::AbstractServer::ServerError</a><br />
183
+ Class <a href="AbstractServer/ServerNotStarted.html" class="link">PhusionPassenger::AbstractServer::ServerNotStarted</a><br />
184
+ Class <a href="AbstractServer/UnknownMessage.html" class="link">PhusionPassenger::AbstractServer::UnknownMessage</a><br />
185
185
 
186
186
 
187
187
  <div class="sectiontitle">Constants</div>
@@ -193,23 +193,65 @@ Class <a href="AbstractServer/UnknownMessage.html" class="link">Passenger::Abstr
193
193
  </tr>
194
194
  </table>
195
195
 
196
+ <div class="sectiontitle">Attributes</div>
197
+ <table border='0' cellpadding='5'>
198
+ <tr valign='top'>
199
+ <td class='attr-rw'>
200
+ [RW]
201
+ </td>
202
+ <td class='attr-name'>last_activity_time</td>
203
+ <td class='attr-desc'>
204
+ The last time when this <a href="AbstractServer.html">AbstractServer</a>
205
+ had processed a message.
206
+
207
+ </td>
208
+ </tr>
209
+ <tr valign='top'>
210
+ <td class='attr-rw'>
211
+ [RW]
212
+ </td>
213
+ <td class='attr-name'>max_idle_time</td>
214
+ <td class='attr-desc'>
215
+ The maximum time that this <a href="AbstractServer.html">AbstractServer</a>
216
+ may be idle. Used by <a
217
+ href="AbstractServerCollection.html">AbstractServerCollection</a> to
218
+ determine when this object should be cleaned up. nil or 0 indicate that
219
+ this object should never be idle cleaned.
220
+
221
+ </td>
222
+ </tr>
223
+ <tr valign='top'>
224
+ <td class='attr-rw'>
225
+ [RW]
226
+ </td>
227
+ <td class='attr-name'>next_cleaning_time</td>
228
+ <td class='attr-desc'>
229
+ Used by <a
230
+ href="AbstractServerCollection.html">AbstractServerCollection</a> to
231
+ remember when this <a href="AbstractServer.html">AbstractServer</a> should
232
+ be idle cleaned.
233
+
234
+ </td>
235
+ </tr>
236
+ </table>
196
237
 
197
238
  <div class="sectiontitle">Public Class methods</div>
198
239
  <div class="method">
199
240
  <div class="title">
200
- <a name="M000052"></a><b>new</b>()
241
+ <a name="M000123"></a><b>new</b>()
201
242
  </div>
202
243
  <div class="sourcecode">
203
- <p class="source-link">[ <a href="javascript:toggleSource('M000052_source')" id="l_M000052_source">show source</a> ]</p>
204
- <div id="M000052_source" class="dyn-source">
244
+ <p class="source-link">[ <a href="javascript:toggleSource('M000123_source')" id="l_M000123_source">show source</a> ]</p>
245
+ <div id="M000123_source" class="dyn-source">
205
246
  <pre>
206
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 91</span>
207
- 91: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
208
- 92: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">false</span>
209
- 93: <span class="ruby-ivar">@message_handlers</span> = {}
210
- 94: <span class="ruby-ivar">@signal_handlers</span> = {}
211
- 95: <span class="ruby-ivar">@orig_signal_handlers</span> = {}
212
- 96: <span class="ruby-keyword kw">end</span>
247
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 103</span>
248
+ 103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
249
+ 104: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">false</span>
250
+ 105: <span class="ruby-ivar">@message_handlers</span> = {}
251
+ 106: <span class="ruby-ivar">@signal_handlers</span> = {}
252
+ 107: <span class="ruby-ivar">@orig_signal_handlers</span> = {}
253
+ 108: <span class="ruby-ivar">@last_activity_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
254
+ 109: <span class="ruby-keyword kw">end</span>
213
255
  </pre>
214
256
  </div>
215
257
  </div>
@@ -217,40 +259,40 @@ Class <a href="AbstractServer/UnknownMessage.html" class="link">Passenger::Abstr
217
259
  <div class="sectiontitle">Public Instance methods</div>
218
260
  <div class="method">
219
261
  <div class="title">
220
- <a name="M000057"></a><b>server_pid</b>()
262
+ <a name="M000128"></a><b>server_pid</b>()
221
263
  </div>
222
264
  <div class="description">
223
265
  <p>
224
266
  Return the PID of the started <a
225
- href="AbstractServer.html#M000063">server</a>. This is only valid if <a
226
- href="AbstractServer.html#M000053">start</a>() has been called.
267
+ href="AbstractServer.html#M000134">server</a>. This is only valid if <a
268
+ href="AbstractServer.html#M000124">start</a>() has been called.
227
269
  </p>
228
270
  </div>
229
271
  <div class="sourcecode">
230
- <p class="source-link">[ <a href="javascript:toggleSource('M000057_source')" id="l_M000057_source">show source</a> ]</p>
231
- <div id="M000057_source" class="dyn-source">
272
+ <p class="source-link">[ <a href="javascript:toggleSource('M000128_source')" id="l_M000128_source">show source</a> ]</p>
273
+ <div id="M000128_source" class="dyn-source">
232
274
  <pre>
233
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 216</span>
234
- 216: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">server_pid</span>
235
- 217: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@pid</span>
236
- 218: <span class="ruby-keyword kw">end</span>
275
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 230</span>
276
+ 230: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">server_pid</span>
277
+ 231: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@pid</span>
278
+ 232: <span class="ruby-keyword kw">end</span>
237
279
  </pre>
238
280
  </div>
239
281
  </div>
240
282
  </div>
241
283
  <div class="method">
242
284
  <div class="title">
243
- <a name="M000053"></a><b>start</b>()
285
+ <a name="M000124"></a><b>start</b>()
244
286
  </div>
245
287
  <div class="description">
246
288
  <p>
247
- Start the <a href="AbstractServer.html#M000063">server</a>. This method
248
- does not block since the <a href="AbstractServer.html#M000063">server</a>
289
+ Start the <a href="AbstractServer.html#M000134">server</a>. This method
290
+ does not block since the <a href="AbstractServer.html#M000134">server</a>
249
291
  runs asynchronously from the current process.
250
292
  </p>
251
293
  <p>
252
294
  You may only call this method if the <a
253
- href="AbstractServer.html#M000063">server</a> is not already started.
295
+ href="AbstractServer.html#M000134">server</a> is not already started.
254
296
  Otherwise, a <a
255
297
  href="AbstractServer/ServerAlreadyStarted.html">ServerAlreadyStarted</a>
256
298
  will be raised.
@@ -260,180 +302,181 @@ Derived classes may raise additional exceptions.
260
302
  </p>
261
303
  </div>
262
304
  <div class="sourcecode">
263
- <p class="source-link">[ <a href="javascript:toggleSource('M000053_source')" id="l_M000053_source">show source</a> ]</p>
264
- <div id="M000053_source" class="dyn-source">
305
+ <p class="source-link">[ <a href="javascript:toggleSource('M000124_source')" id="l_M000124_source">show source</a> ]</p>
306
+ <div id="M000124_source" class="dyn-source">
265
307
  <pre>
266
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 105</span>
267
- 105: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
268
- 106: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">started?</span>
269
- 107: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerAlreadyStarted</span>, <span class="ruby-value str">&quot;Server is already started&quot;</span>
270
- 108: <span class="ruby-keyword kw">end</span>
271
- 109:
272
- 110: <span class="ruby-ivar">@parent_socket</span>, <span class="ruby-ivar">@child_socket</span> = <span class="ruby-constant">UNIXSocket</span>.<span class="ruby-identifier">pair</span>
273
- 111: <span class="ruby-identifier">before_fork</span>
274
- 112: <span class="ruby-ivar">@pid</span> = <span class="ruby-identifier">fork</span> <span class="ruby-keyword kw">do</span>
275
- 113: <span class="ruby-keyword kw">begin</span>
276
- 114: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
277
- 115: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
278
- 116: <span class="ruby-ivar">@parent_socket</span>.<span class="ruby-identifier">close</span>
279
- 117:
280
- 118: <span class="ruby-comment cmt"># During Passenger's early days, we used to close file descriptors based</span>
281
- 119: <span class="ruby-comment cmt"># on a white list of file descriptors. That proved to be way too fragile:</span>
282
- 120: <span class="ruby-comment cmt"># too many file descriptors are being left open even though they shouldn't</span>
283
- 121: <span class="ruby-comment cmt"># be. So now we close file descriptors based on a black list.</span>
284
- 122: <span class="ruby-identifier">file_descriptors_to_leave_open</span> = [<span class="ruby-value">0</span>, <span class="ruby-value">1</span>, <span class="ruby-value">2</span>, <span class="ruby-ivar">@child_socket</span>.<span class="ruby-identifier">fileno</span>]
285
- 123: <span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">close_all_file_descriptors</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
286
- 124: <span class="ruby-comment cmt"># In addition to closing the file descriptors, one must also close</span>
287
- 125: <span class="ruby-comment cmt"># the associated IO objects. This is to prevent IO.close from</span>
288
- 126: <span class="ruby-comment cmt"># double-closing already closed file descriptors.</span>
289
- 127: <span class="ruby-identifier">close_all_io_objects_for_fds</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
290
- 128:
291
- 129: <span class="ruby-comment cmt"># At this point, RubyGems might have open file handles for which</span>
292
- 130: <span class="ruby-comment cmt"># the associated file descriptors have just been closed. This can</span>
293
- 131: <span class="ruby-comment cmt"># result in mysterious 'EBADFD' errors. So we force RubyGems to</span>
294
- 132: <span class="ruby-comment cmt"># clear all open file handles.</span>
295
- 133: <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">clear_paths</span>
296
- 134:
297
- 135: <span class="ruby-identifier">start_synchronously</span>(<span class="ruby-ivar">@child_socket</span>)
298
- 136: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Interrupt</span>
299
- 137: <span class="ruby-comment cmt"># Do nothing.</span>
300
- 138: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">SignalException</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">signal</span>
301
- 139: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">signal</span>.<span class="ruby-identifier">message</span> <span class="ruby-operator">==</span> <span class="ruby-constant">SERVER_TERMINATION_SIGNAL</span>
302
- 140: <span class="ruby-comment cmt"># Do nothing.</span>
303
- 141: <span class="ruby-keyword kw">else</span>
304
- 142: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">signal</span>)
305
- 143: <span class="ruby-keyword kw">end</span>
306
- 144: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
307
- 145: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>)
308
- 146: <span class="ruby-keyword kw">ensure</span>
309
- 147: <span class="ruby-identifier">exit!</span>
310
- 148: <span class="ruby-keyword kw">end</span>
311
- 149: <span class="ruby-keyword kw">end</span>
312
- 150: <span class="ruby-ivar">@child_socket</span>.<span class="ruby-identifier">close</span>
313
- 151: <span class="ruby-ivar">@parent_channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@parent_socket</span>)
314
- 152: <span class="ruby-keyword kw">end</span>
308
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 118</span>
309
+ 118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
310
+ 119: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">started?</span>
311
+ 120: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerAlreadyStarted</span>, <span class="ruby-value str">&quot;Server is already started&quot;</span>
312
+ 121: <span class="ruby-keyword kw">end</span>
313
+ 122:
314
+ 123: <span class="ruby-ivar">@parent_socket</span>, <span class="ruby-ivar">@child_socket</span> = <span class="ruby-constant">UNIXSocket</span>.<span class="ruby-identifier">pair</span>
315
+ 124: <span class="ruby-identifier">before_fork</span>
316
+ 125: <span class="ruby-ivar">@pid</span> = <span class="ruby-identifier">fork</span>
317
+ 126: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pid</span>.<span class="ruby-identifier">nil?</span>
318
+ 127: <span class="ruby-keyword kw">begin</span>
319
+ 128: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
320
+ 129: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
321
+ 130: <span class="ruby-ivar">@parent_socket</span>.<span class="ruby-identifier">close</span>
322
+ 131:
323
+ 132: <span class="ruby-comment cmt"># During Passenger's early days, we used to close file descriptors based</span>
324
+ 133: <span class="ruby-comment cmt"># on a white list of file descriptors. That proved to be way too fragile:</span>
325
+ 134: <span class="ruby-comment cmt"># too many file descriptors are being left open even though they shouldn't</span>
326
+ 135: <span class="ruby-comment cmt"># be. So now we close file descriptors based on a black list.</span>
327
+ 136: <span class="ruby-identifier">file_descriptors_to_leave_open</span> = [<span class="ruby-value">0</span>, <span class="ruby-value">1</span>, <span class="ruby-value">2</span>, <span class="ruby-ivar">@child_socket</span>.<span class="ruby-identifier">fileno</span>]
328
+ 137: <span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">close_all_file_descriptors</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
329
+ 138: <span class="ruby-comment cmt"># In addition to closing the file descriptors, one must also close</span>
330
+ 139: <span class="ruby-comment cmt"># the associated IO objects. This is to prevent IO.close from</span>
331
+ 140: <span class="ruby-comment cmt"># double-closing already closed file descriptors.</span>
332
+ 141: <span class="ruby-identifier">close_all_io_objects_for_fds</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
333
+ 142:
334
+ 143: <span class="ruby-comment cmt"># At this point, RubyGems might have open file handles for which</span>
335
+ 144: <span class="ruby-comment cmt"># the associated file descriptors have just been closed. This can</span>
336
+ 145: <span class="ruby-comment cmt"># result in mysterious 'EBADFD' errors. So we force RubyGems to</span>
337
+ 146: <span class="ruby-comment cmt"># clear all open file handles.</span>
338
+ 147: <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">clear_paths</span>
339
+ 148:
340
+ 149: <span class="ruby-identifier">start_synchronously</span>(<span class="ruby-ivar">@child_socket</span>)
341
+ 150: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Interrupt</span>
342
+ 151: <span class="ruby-comment cmt"># Do nothing.</span>
343
+ 152: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">SignalException</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">signal</span>
344
+ 153: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">signal</span>.<span class="ruby-identifier">message</span> <span class="ruby-operator">==</span> <span class="ruby-constant">SERVER_TERMINATION_SIGNAL</span>
345
+ 154: <span class="ruby-comment cmt"># Do nothing.</span>
346
+ 155: <span class="ruby-keyword kw">else</span>
347
+ 156: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">signal</span>)
348
+ 157: <span class="ruby-keyword kw">end</span>
349
+ 158: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
350
+ 159: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>)
351
+ 160: <span class="ruby-keyword kw">ensure</span>
352
+ 161: <span class="ruby-identifier">exit!</span>
353
+ 162: <span class="ruby-keyword kw">end</span>
354
+ 163: <span class="ruby-keyword kw">end</span>
355
+ 164: <span class="ruby-ivar">@child_socket</span>.<span class="ruby-identifier">close</span>
356
+ 165: <span class="ruby-ivar">@parent_channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@parent_socket</span>)
357
+ 166: <span class="ruby-keyword kw">end</span>
315
358
  </pre>
316
359
  </div>
317
360
  </div>
318
361
  </div>
319
362
  <div class="method">
320
363
  <div class="title">
321
- <a name="M000054"></a><b>start_synchronously</b>(socket)
364
+ <a name="M000125"></a><b>start_synchronously</b>(socket)
322
365
  </div>
323
366
  <div class="description">
324
367
  <p>
325
- Start the <a href="AbstractServer.html#M000063">server</a>, but in the
368
+ Start the <a href="AbstractServer.html#M000134">server</a>, but in the
326
369
  current process instead of in a child process. This method blocks until the
327
- <a href="AbstractServer.html#M000063">server</a>&#8216;s main loop has
370
+ <a href="AbstractServer.html#M000134">server</a>&#8216;s main loop has
328
371
  ended.
329
372
  </p>
330
373
  <p>
331
374
  <em>socket</em> is the socket that the <a
332
- href="AbstractServer.html#M000063">server</a> should listen on. The <a
333
- href="AbstractServer.html#M000063">server</a> main loop will end if the
375
+ href="AbstractServer.html#M000134">server</a> should listen on. The <a
376
+ href="AbstractServer.html#M000134">server</a> main loop will end if the
334
377
  socket has been closed.
335
378
  </p>
336
379
  <p>
337
380
  All hooks will be called, except <a
338
- href="AbstractServer.html#M000058">before_fork</a>().
381
+ href="AbstractServer.html#M000129">before_fork</a>().
339
382
  </p>
340
383
  </div>
341
384
  <div class="sourcecode">
342
- <p class="source-link">[ <a href="javascript:toggleSource('M000054_source')" id="l_M000054_source">show source</a> ]</p>
343
- <div id="M000054_source" class="dyn-source">
385
+ <p class="source-link">[ <a href="javascript:toggleSource('M000125_source')" id="l_M000125_source">show source</a> ]</p>
386
+ <div id="M000125_source" class="dyn-source">
344
387
  <pre>
345
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 161</span>
346
- 161: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_synchronously</span>(<span class="ruby-identifier">socket</span>)
347
- 162: <span class="ruby-ivar">@child_socket</span> = <span class="ruby-identifier">socket</span>
348
- 163: <span class="ruby-ivar">@child_channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">socket</span>)
349
- 164: <span class="ruby-keyword kw">begin</span>
350
- 165: <span class="ruby-identifier">reset_signal_handlers</span>
351
- 166: <span class="ruby-identifier">initialize_server</span>
352
- 167: <span class="ruby-keyword kw">begin</span>
353
- 168: <span class="ruby-identifier">main_loop</span>
354
- 169: <span class="ruby-keyword kw">ensure</span>
355
- 170: <span class="ruby-identifier">finalize_server</span>
356
- 171: <span class="ruby-keyword kw">end</span>
357
- 172: <span class="ruby-keyword kw">ensure</span>
358
- 173: <span class="ruby-identifier">revert_signal_handlers</span>
359
- 174: <span class="ruby-keyword kw">end</span>
360
- 175: <span class="ruby-keyword kw">end</span>
388
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 175</span>
389
+ 175: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_synchronously</span>(<span class="ruby-identifier">socket</span>)
390
+ 176: <span class="ruby-ivar">@child_socket</span> = <span class="ruby-identifier">socket</span>
391
+ 177: <span class="ruby-ivar">@child_channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">socket</span>)
392
+ 178: <span class="ruby-keyword kw">begin</span>
393
+ 179: <span class="ruby-identifier">reset_signal_handlers</span>
394
+ 180: <span class="ruby-identifier">initialize_server</span>
395
+ 181: <span class="ruby-keyword kw">begin</span>
396
+ 182: <span class="ruby-identifier">main_loop</span>
397
+ 183: <span class="ruby-keyword kw">ensure</span>
398
+ 184: <span class="ruby-identifier">finalize_server</span>
399
+ 185: <span class="ruby-keyword kw">end</span>
400
+ 186: <span class="ruby-keyword kw">ensure</span>
401
+ 187: <span class="ruby-identifier">revert_signal_handlers</span>
402
+ 188: <span class="ruby-keyword kw">end</span>
403
+ 189: <span class="ruby-keyword kw">end</span>
361
404
  </pre>
362
405
  </div>
363
406
  </div>
364
407
  </div>
365
408
  <div class="method">
366
409
  <div class="title">
367
- <a name="M000056"></a><b>started?</b>()
410
+ <a name="M000127"></a><b>started?</b>()
368
411
  </div>
369
412
  <div class="description">
370
413
  <p>
371
- Return whether the <a href="AbstractServer.html#M000063">server</a> has
414
+ Return whether the <a href="AbstractServer.html#M000134">server</a> has
372
415
  been started.
373
416
  </p>
374
417
  </div>
375
418
  <div class="sourcecode">
376
- <p class="source-link">[ <a href="javascript:toggleSource('M000056_source')" id="l_M000056_source">show source</a> ]</p>
377
- <div id="M000056_source" class="dyn-source">
419
+ <p class="source-link">[ <a href="javascript:toggleSource('M000127_source')" id="l_M000127_source">show source</a> ]</p>
420
+ <div id="M000127_source" class="dyn-source">
378
421
  <pre>
379
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 211</span>
380
- 211: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started?</span>
381
- 212: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@parent_channel</span>.<span class="ruby-identifier">nil?</span>
382
- 213: <span class="ruby-keyword kw">end</span>
422
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 225</span>
423
+ 225: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started?</span>
424
+ 226: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@parent_channel</span>.<span class="ruby-identifier">nil?</span>
425
+ 227: <span class="ruby-keyword kw">end</span>
383
426
  </pre>
384
427
  </div>
385
428
  </div>
386
429
  </div>
387
430
  <div class="method">
388
431
  <div class="title">
389
- <a name="M000055"></a><b>stop</b>()
432
+ <a name="M000126"></a><b>stop</b>()
390
433
  </div>
391
434
  <div class="description">
392
435
  <p>
393
- Stop the <a href="AbstractServer.html#M000063">server</a>. The <a
394
- href="AbstractServer.html#M000063">server</a> will quit as soon as
436
+ Stop the <a href="AbstractServer.html#M000134">server</a>. The <a
437
+ href="AbstractServer.html#M000134">server</a> will quit as soon as
395
438
  possible. This method waits until the <a
396
- href="AbstractServer.html#M000063">server</a> has been stopped.
439
+ href="AbstractServer.html#M000134">server</a> has been stopped.
397
440
  </p>
398
441
  <p>
399
442
  When calling this method, the <a
400
- href="AbstractServer.html#M000063">server</a> must already be started. If
443
+ href="AbstractServer.html#M000134">server</a> must already be started. If
401
444
  not, a <a href="AbstractServer/ServerNotStarted.html">ServerNotStarted</a>
402
445
  will be raised.
403
446
  </p>
404
447
  </div>
405
448
  <div class="sourcecode">
406
- <p class="source-link">[ <a href="javascript:toggleSource('M000055_source')" id="l_M000055_source">show source</a> ]</p>
407
- <div id="M000055_source" class="dyn-source">
449
+ <p class="source-link">[ <a href="javascript:toggleSource('M000126_source')" id="l_M000126_source">show source</a> ]</p>
450
+ <div id="M000126_source" class="dyn-source">
408
451
  <pre>
409
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 182</span>
410
- 182: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>
411
- 183: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">started?</span>
412
- 184: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerNotStarted</span>, <span class="ruby-value str">&quot;Server is not started&quot;</span>
413
- 185: <span class="ruby-keyword kw">end</span>
414
- 186:
415
- 187: <span class="ruby-ivar">@parent_socket</span>.<span class="ruby-identifier">close</span>
416
- 188: <span class="ruby-ivar">@parent_channel</span> = <span class="ruby-keyword kw">nil</span>
417
- 189:
418
- 190: <span class="ruby-comment cmt"># Wait at most 3 seconds for server to exit. If it doesn't do that,</span>
419
- 191: <span class="ruby-comment cmt"># we kill it. If that doesn't work either, we kill it forcefully with</span>
420
- 192: <span class="ruby-comment cmt"># SIGKILL.</span>
421
- 193: <span class="ruby-keyword kw">begin</span>
422
- 194: <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">3</span>) <span class="ruby-keyword kw">do</span>
423
- 195: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
424
- 196: <span class="ruby-keyword kw">end</span>
425
- 197: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
426
- 198: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-constant">SERVER_TERMINATION_SIGNAL</span>, <span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
427
- 199: <span class="ruby-keyword kw">begin</span>
428
- 200: <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">3</span>) <span class="ruby-keyword kw">do</span>
429
- 201: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
430
- 202: <span class="ruby-keyword kw">end</span>
431
- 203: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
432
- 204: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value str">'SIGKILL'</span>, <span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
433
- 205: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>, <span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-constant">WNOHANG</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
434
- 206: <span class="ruby-keyword kw">end</span>
435
- 207: <span class="ruby-keyword kw">end</span>
436
- 208: <span class="ruby-keyword kw">end</span>
452
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 196</span>
453
+ 196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>
454
+ 197: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">started?</span>
455
+ 198: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerNotStarted</span>, <span class="ruby-value str">&quot;Server is not started&quot;</span>
456
+ 199: <span class="ruby-keyword kw">end</span>
457
+ 200:
458
+ 201: <span class="ruby-ivar">@parent_socket</span>.<span class="ruby-identifier">close</span>
459
+ 202: <span class="ruby-ivar">@parent_channel</span> = <span class="ruby-keyword kw">nil</span>
460
+ 203:
461
+ 204: <span class="ruby-comment cmt"># Wait at most 3 seconds for server to exit. If it doesn't do that,</span>
462
+ 205: <span class="ruby-comment cmt"># we kill it. If that doesn't work either, we kill it forcefully with</span>
463
+ 206: <span class="ruby-comment cmt"># SIGKILL.</span>
464
+ 207: <span class="ruby-keyword kw">begin</span>
465
+ 208: <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">3</span>) <span class="ruby-keyword kw">do</span>
466
+ 209: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
467
+ 210: <span class="ruby-keyword kw">end</span>
468
+ 211: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
469
+ 212: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-constant">SERVER_TERMINATION_SIGNAL</span>, <span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
470
+ 213: <span class="ruby-keyword kw">begin</span>
471
+ 214: <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">3</span>) <span class="ruby-keyword kw">do</span>
472
+ 215: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
473
+ 216: <span class="ruby-keyword kw">end</span>
474
+ 217: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
475
+ 218: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value str">'SIGKILL'</span>, <span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
476
+ 219: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>, <span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-constant">WNOHANG</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
477
+ 220: <span class="ruby-keyword kw">end</span>
478
+ 221: <span class="ruby-keyword kw">end</span>
479
+ 222: <span class="ruby-keyword kw">end</span>
437
480
  </pre>
438
481
  </div>
439
482
  </div>
@@ -441,55 +484,55 @@ will be raised.
441
484
  <div class="sectiontitle">Protected Instance methods</div>
442
485
  <div class="method">
443
486
  <div class="title">
444
- <a name="M000058"></a><b>before_fork</b>()
487
+ <a name="M000129"></a><b>before_fork</b>()
445
488
  </div>
446
489
  <div class="description">
447
490
  <p>
448
491
  A hook which is called when the <a
449
- href="AbstractServer.html#M000063">server</a> is being started, just before
450
- forking a <a href="AbstractServer.html#M000052">new</a> process. The
492
+ href="AbstractServer.html#M000134">server</a> is being started, just before
493
+ forking a <a href="AbstractServer.html#M000123">new</a> process. The
451
494
  default implementation does nothing, this method is supposed to be
452
495
  overrided by child classes.
453
496
  </p>
454
497
  </div>
455
498
  <div class="sourcecode">
456
- <p class="source-link">[ <a href="javascript:toggleSource('M000058_source')" id="l_M000058_source">show source</a> ]</p>
457
- <div id="M000058_source" class="dyn-source">
499
+ <p class="source-link">[ <a href="javascript:toggleSource('M000129_source')" id="l_M000129_source">show source</a> ]</p>
500
+ <div id="M000129_source" class="dyn-source">
458
501
  <pre>
459
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 223</span>
460
- 223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">before_fork</span>
461
- 224: <span class="ruby-keyword kw">end</span>
502
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 237</span>
503
+ 237: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">before_fork</span>
504
+ 238: <span class="ruby-keyword kw">end</span>
462
505
  </pre>
463
506
  </div>
464
507
  </div>
465
508
  </div>
466
509
  <div class="method">
467
510
  <div class="title">
468
- <a name="M000064"></a><b>client</b>()
511
+ <a name="M000135"></a><b>client</b>()
469
512
  </div>
470
513
  <div class="description">
471
514
  <p>
472
515
  Return the communication channel with the <a
473
- href="AbstractServer.html#M000064">client</a> (i.e. the parent process that
474
- started the <a href="AbstractServer.html#M000063">server</a>). This is a <a
516
+ href="AbstractServer.html#M000135">client</a> (i.e. the parent process that
517
+ started the <a href="AbstractServer.html#M000134">server</a>). This is a <a
475
518
  href="MessageChannel.html">MessageChannel</a> object.
476
519
  </p>
477
520
  </div>
478
521
  <div class="sourcecode">
479
- <p class="source-link">[ <a href="javascript:toggleSource('M000064_source')" id="l_M000064_source">show source</a> ]</p>
480
- <div id="M000064_source" class="dyn-source">
522
+ <p class="source-link">[ <a href="javascript:toggleSource('M000135_source')" id="l_M000135_source">show source</a> ]</p>
523
+ <div id="M000135_source" class="dyn-source">
481
524
  <pre>
482
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 268</span>
483
- 268: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">client</span>
484
- 269: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@child_channel</span>
485
- 270: <span class="ruby-keyword kw">end</span>
525
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 282</span>
526
+ 282: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">client</span>
527
+ 283: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@child_channel</span>
528
+ 284: <span class="ruby-keyword kw">end</span>
486
529
  </pre>
487
530
  </div>
488
531
  </div>
489
532
  </div>
490
533
  <div class="method">
491
534
  <div class="title">
492
- <a name="M000061"></a><b>define_message_handler</b>(message_name, handler)
535
+ <a name="M000132"></a><b>define_message_handler</b>(message_name, handler)
493
536
  </div>
494
537
  <div class="description">
495
538
  <p>
@@ -504,20 +547,20 @@ the example in the class description.
504
547
  </p>
505
548
  </div>
506
549
  <div class="sourcecode">
507
- <p class="source-link">[ <a href="javascript:toggleSource('M000061_source')" id="l_M000061_source">show source</a> ]</p>
508
- <div id="M000061_source" class="dyn-source">
550
+ <p class="source-link">[ <a href="javascript:toggleSource('M000132_source')" id="l_M000132_source">show source</a> ]</p>
551
+ <div id="M000132_source" class="dyn-source">
509
552
  <pre>
510
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 243</span>
511
- 243: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">define_message_handler</span>(<span class="ruby-identifier">message_name</span>, <span class="ruby-identifier">handler</span>)
512
- 244: <span class="ruby-ivar">@message_handlers</span>[<span class="ruby-identifier">message_name</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">handler</span>
513
- 245: <span class="ruby-keyword kw">end</span>
553
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 257</span>
554
+ 257: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">define_message_handler</span>(<span class="ruby-identifier">message_name</span>, <span class="ruby-identifier">handler</span>)
555
+ 258: <span class="ruby-ivar">@message_handlers</span>[<span class="ruby-identifier">message_name</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">handler</span>
556
+ 259: <span class="ruby-keyword kw">end</span>
514
557
  </pre>
515
558
  </div>
516
559
  </div>
517
560
  </div>
518
561
  <div class="method">
519
562
  <div class="title">
520
- <a name="M000062"></a><b>define_signal_handler</b>(signal, handler)
563
+ <a name="M000133"></a><b>define_signal_handler</b>(signal, handler)
521
564
  </div>
522
565
  <div class="description">
523
566
  <p>
@@ -525,118 +568,118 @@ Define a handler for a signal.
525
568
  </p>
526
569
  </div>
527
570
  <div class="sourcecode">
528
- <p class="source-link">[ <a href="javascript:toggleSource('M000062_source')" id="l_M000062_source">show source</a> ]</p>
529
- <div id="M000062_source" class="dyn-source">
571
+ <p class="source-link">[ <a href="javascript:toggleSource('M000133_source')" id="l_M000133_source">show source</a> ]</p>
572
+ <div id="M000133_source" class="dyn-source">
530
573
  <pre>
531
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 248</span>
532
- 248: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">define_signal_handler</span>(<span class="ruby-identifier">signal</span>, <span class="ruby-identifier">handler</span>)
533
- 249: <span class="ruby-ivar">@signal_handlers</span>[<span class="ruby-identifier">signal</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">handler</span>
534
- 250: <span class="ruby-keyword kw">end</span>
574
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 262</span>
575
+ 262: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">define_signal_handler</span>(<span class="ruby-identifier">signal</span>, <span class="ruby-identifier">handler</span>)
576
+ 263: <span class="ruby-ivar">@signal_handlers</span>[<span class="ruby-identifier">signal</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">handler</span>
577
+ 264: <span class="ruby-keyword kw">end</span>
535
578
  </pre>
536
579
  </div>
537
580
  </div>
538
581
  </div>
539
582
  <div class="method">
540
583
  <div class="title">
541
- <a name="M000060"></a><b>finalize_server</b>()
584
+ <a name="M000131"></a><b>finalize_server</b>()
542
585
  </div>
543
586
  <div class="description">
544
587
  <p>
545
588
  A hook which is called when the <a
546
- href="AbstractServer.html#M000063">server</a> is being stopped. This is
589
+ href="AbstractServer.html#M000134">server</a> is being stopped. This is
547
590
  called in the child process, after the main loop has been left. The default
548
591
  implementation does nothing, this method is supposed to be overrided by
549
592
  child classes.
550
593
  </p>
551
594
  </div>
552
595
  <div class="sourcecode">
553
- <p class="source-link">[ <a href="javascript:toggleSource('M000060_source')" id="l_M000060_source">show source</a> ]</p>
554
- <div id="M000060_source" class="dyn-source">
596
+ <p class="source-link">[ <a href="javascript:toggleSource('M000131_source')" id="l_M000131_source">show source</a> ]</p>
597
+ <div id="M000131_source" class="dyn-source">
555
598
  <pre>
556
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 235</span>
557
- 235: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finalize_server</span>
558
- 236: <span class="ruby-keyword kw">end</span>
599
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 249</span>
600
+ 249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finalize_server</span>
601
+ 250: <span class="ruby-keyword kw">end</span>
559
602
  </pre>
560
603
  </div>
561
604
  </div>
562
605
  </div>
563
606
  <div class="method">
564
607
  <div class="title">
565
- <a name="M000059"></a><b>initialize_server</b>()
608
+ <a name="M000130"></a><b>initialize_server</b>()
566
609
  </div>
567
610
  <div class="description">
568
611
  <p>
569
612
  A hook which is called when the <a
570
- href="AbstractServer.html#M000063">server</a> is being started. This is
613
+ href="AbstractServer.html#M000134">server</a> is being started. This is
571
614
  called in the child process, before the main loop is entered. The default
572
615
  implementation does nothing, this method is supposed to be overrided by
573
616
  child classes.
574
617
  </p>
575
618
  </div>
576
619
  <div class="sourcecode">
577
- <p class="source-link">[ <a href="javascript:toggleSource('M000059_source')" id="l_M000059_source">show source</a> ]</p>
578
- <div id="M000059_source" class="dyn-source">
620
+ <p class="source-link">[ <a href="javascript:toggleSource('M000130_source')" id="l_M000130_source">show source</a> ]</p>
621
+ <div id="M000130_source" class="dyn-source">
579
622
  <pre>
580
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 229</span>
581
- 229: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize_server</span>
582
- 230: <span class="ruby-keyword kw">end</span>
623
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 243</span>
624
+ 243: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize_server</span>
625
+ 244: <span class="ruby-keyword kw">end</span>
583
626
  </pre>
584
627
  </div>
585
628
  </div>
586
629
  </div>
587
630
  <div class="method">
588
631
  <div class="title">
589
- <a name="M000065"></a><b>quit_main</b>()
632
+ <a name="M000136"></a><b>quit_main</b>()
590
633
  </div>
591
634
  <div class="description">
592
635
  <p>
593
- Tell the main loop to <a href="AbstractServer.html#M000055">stop</a> as
636
+ Tell the main loop to <a href="AbstractServer.html#M000126">stop</a> as
594
637
  soon as possible.
595
638
  </p>
596
639
  </div>
597
640
  <div class="sourcecode">
598
- <p class="source-link">[ <a href="javascript:toggleSource('M000065_source')" id="l_M000065_source">show source</a> ]</p>
599
- <div id="M000065_source" class="dyn-source">
641
+ <p class="source-link">[ <a href="javascript:toggleSource('M000136_source')" id="l_M000136_source">show source</a> ]</p>
642
+ <div id="M000136_source" class="dyn-source">
600
643
  <pre>
601
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 273</span>
602
- 273: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">quit_main</span>
603
- 274: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">true</span>
604
- 275: <span class="ruby-keyword kw">end</span>
644
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 287</span>
645
+ 287: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">quit_main</span>
646
+ 288: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">true</span>
647
+ 289: <span class="ruby-keyword kw">end</span>
605
648
  </pre>
606
649
  </div>
607
650
  </div>
608
651
  </div>
609
652
  <div class="method">
610
653
  <div class="title">
611
- <a name="M000063"></a><b>server</b>()
654
+ <a name="M000134"></a><b>server</b>()
612
655
  </div>
613
656
  <div class="description">
614
657
  <p>
615
658
  Return the communication channel with the <a
616
- href="AbstractServer.html#M000063">server</a>. This is a <a
659
+ href="AbstractServer.html#M000134">server</a>. This is a <a
617
660
  href="MessageChannel.html">MessageChannel</a> object.
618
661
  </p>
619
662
  <p>
620
663
  Raises <a href="AbstractServer/ServerNotStarted.html">ServerNotStarted</a>
621
- if the <a href="AbstractServer.html#M000063">server</a> hasn&#8216;t been
664
+ if the <a href="AbstractServer.html#M000134">server</a> hasn&#8216;t been
622
665
  started yet.
623
666
  </p>
624
667
  <p>
625
668
  This method may only be called in the parent process, and not in the
626
- started <a href="AbstractServer.html#M000063">server</a> process.
669
+ started <a href="AbstractServer.html#M000134">server</a> process.
627
670
  </p>
628
671
  </div>
629
672
  <div class="sourcecode">
630
- <p class="source-link">[ <a href="javascript:toggleSource('M000063_source')" id="l_M000063_source">show source</a> ]</p>
631
- <div id="M000063_source" class="dyn-source">
673
+ <p class="source-link">[ <a href="javascript:toggleSource('M000134_source')" id="l_M000134_source">show source</a> ]</p>
674
+ <div id="M000134_source" class="dyn-source">
632
675
  <pre>
633
- <span class="ruby-comment cmt"># File lib/passenger/abstract_server.rb, line 259</span>
634
- 259: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">server</span>
635
- 260: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">started?</span>
636
- 261: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerNotStarted</span>, <span class="ruby-value str">&quot;Server hasn't been started yet. Please call start() first.&quot;</span>
637
- 262: <span class="ruby-keyword kw">end</span>
638
- 263: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@parent_channel</span>
639
- 264: <span class="ruby-keyword kw">end</span>
676
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 273</span>
677
+ 273: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">server</span>
678
+ 274: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">started?</span>
679
+ 275: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerNotStarted</span>, <span class="ruby-value str">&quot;Server hasn't been started yet. Please call start() first.&quot;</span>
680
+ 276: <span class="ruby-keyword kw">end</span>
681
+ 277: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@parent_channel</span>
682
+ 278: <span class="ruby-keyword kw">end</span>
640
683
  </pre>
641
684
  </div>
642
685
  </div>