passenger 4.0.20 → 4.0.21

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 (496) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.gitignore +1 -0
  5. data/.travis.yml +1 -1
  6. data/NEWS +15 -0
  7. data/README.md +5 -3
  8. data/Rakefile +1 -0
  9. data/bin/passenger-config +1 -5
  10. data/bin/passenger-install-apache2-module +53 -5
  11. data/bin/passenger-install-nginx-module +19 -6
  12. data/bin/passenger-memory-stats +3 -3
  13. data/build/agents.rb +11 -8
  14. data/build/apache2.rb +9 -5
  15. data/build/basics.rb +15 -21
  16. data/build/common_library.rb +16 -6
  17. data/build/cplusplus_support.rb +5 -5
  18. data/build/cxx_tests.rb +3 -3
  19. data/build/documentation.rb +1 -1
  20. data/build/misc.rb +4 -37
  21. data/build/node_tests.rb +29 -0
  22. data/build/oxt_tests.rb +1 -1
  23. data/build/packaging.rb +29 -10
  24. data/build/preprocessor.rb +2 -1
  25. data/build/test_basics.rb +15 -6
  26. data/debian.template/locations.ini.template +1 -0
  27. data/debian.template/passenger.install.template +1 -0
  28. data/dev/copy_boost_headers.rb +7 -3
  29. data/dev/run_travis.sh +32 -16
  30. data/doc/Users guide Apache.idmap.txt +22 -34
  31. data/doc/Users guide Apache.txt +20 -234
  32. data/doc/Users guide Nginx.idmap.txt +84 -66
  33. data/doc/Users guide Nginx.txt +50 -1
  34. data/doc/Users guide Standalone.idmap.txt +74 -0
  35. data/doc/Users guide Standalone.txt +22 -9
  36. data/doc/Users guide.txt +51 -0
  37. data/doc/users_guide_snippets/environment_variables.txt +0 -3
  38. data/doc/users_guide_snippets/installation.txt +337 -380
  39. data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
  40. data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
  41. data/doc/users_guide_snippets/support_information.txt +2 -9
  42. data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
  43. data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
  44. data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
  45. data/ext/apache2/Bucket.h +1 -1
  46. data/ext/apache2/Configuration.hpp +0 -44
  47. data/ext/apache2/CreateDirConfig.cpp +1 -1
  48. data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
  49. data/ext/apache2/Hooks.cpp +28 -21
  50. data/ext/apache2/MergeDirConfig.cpp +1 -0
  51. data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
  52. data/ext/apache2/SetHeaders.cpp +73 -0
  53. data/ext/apache2/SetHeaders.cpp.erb +88 -0
  54. data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
  55. data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
  56. data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
  57. data/ext/boost/algorithm/string/formatter.hpp +2 -2
  58. data/ext/boost/assert.hpp +6 -1
  59. data/ext/boost/atomic.hpp +18 -0
  60. data/ext/boost/atomic/atomic.hpp +241 -0
  61. data/ext/boost/atomic/detail/base.hpp +585 -0
  62. data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
  63. data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
  64. data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
  65. data/ext/boost/atomic/detail/config.hpp +54 -0
  66. data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
  67. data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
  68. data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
  69. data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
  70. data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
  71. data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
  72. data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
  73. data/ext/boost/atomic/detail/interlocked.hpp +200 -0
  74. data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
  75. data/ext/boost/atomic/detail/lockpool.hpp +97 -0
  76. data/ext/boost/atomic/detail/platform.hpp +62 -0
  77. data/ext/boost/atomic/detail/type-classification.hpp +45 -0
  78. data/ext/boost/chrono/config.hpp +8 -3
  79. data/ext/boost/chrono/duration.hpp +9 -10
  80. data/ext/boost/chrono/system_clocks.hpp +1 -1
  81. data/ext/boost/chrono/time_point.hpp +4 -3
  82. data/ext/boost/config/auto_link.hpp +53 -52
  83. data/ext/boost/config/compiler/borland.hpp +1 -0
  84. data/ext/boost/config/compiler/clang.hpp +24 -1
  85. data/ext/boost/config/compiler/codegear.hpp +1 -0
  86. data/ext/boost/config/compiler/common_edg.hpp +1 -0
  87. data/ext/boost/config/compiler/cray.hpp +1 -0
  88. data/ext/boost/config/compiler/digitalmars.hpp +1 -0
  89. data/ext/boost/config/compiler/gcc.hpp +29 -3
  90. data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
  91. data/ext/boost/config/compiler/hp_acc.hpp +1 -0
  92. data/ext/boost/config/compiler/intel.hpp +1 -1
  93. data/ext/boost/config/compiler/metrowerks.hpp +1 -0
  94. data/ext/boost/config/compiler/mpw.hpp +1 -0
  95. data/ext/boost/config/compiler/pathscale.hpp +1 -0
  96. data/ext/boost/config/compiler/pgi.hpp +1 -0
  97. data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
  98. data/ext/boost/config/compiler/vacpp.hpp +3 -2
  99. data/ext/boost/config/compiler/visualc.hpp +25 -11
  100. data/ext/boost/config/platform/vxworks.hpp +353 -15
  101. data/ext/boost/config/select_compiler_config.hpp +4 -4
  102. data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
  103. data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
  104. data/ext/boost/config/suffix.hpp +45 -19
  105. data/ext/boost/date_time/format_date_parser.hpp +1 -11
  106. data/ext/boost/date_time/strings_from_facet.hpp +5 -3
  107. data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
  108. data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
  109. data/ext/boost/detail/endian.hpp +52 -4
  110. data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
  111. data/ext/boost/detail/select_type.hpp +36 -0
  112. data/ext/boost/exception/current_exception_cast.hpp +1 -1
  113. data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
  114. data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
  115. data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
  116. data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
  117. data/ext/boost/exception/detail/type_info.hpp +1 -1
  118. data/ext/boost/exception/diagnostic_information.hpp +15 -14
  119. data/ext/boost/exception/exception.hpp +1 -1
  120. data/ext/boost/exception/get_error_info.hpp +1 -1
  121. data/ext/boost/exception/info.hpp +12 -13
  122. data/ext/boost/exception/to_string.hpp +6 -1
  123. data/ext/boost/exception/to_string_stub.hpp +9 -1
  124. data/ext/boost/foreach.hpp +5 -5
  125. data/ext/boost/function/function_template.hpp +6 -6
  126. data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
  127. data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
  128. data/ext/boost/functional/hash/extensions.hpp +14 -2
  129. data/ext/boost/functional/hash/hash.hpp +26 -5
  130. data/ext/boost/get_pointer.hpp +17 -2
  131. data/ext/boost/integer_traits.hpp +1 -1
  132. data/ext/boost/lexical_cast.hpp +615 -395
  133. data/ext/boost/libs/atomic/lockpool.cpp +24 -0
  134. data/ext/boost/libs/system/src/error_code.cpp +25 -18
  135. data/ext/boost/libs/thread/src/future.cpp +7 -5
  136. data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
  137. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
  138. data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
  139. data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
  140. data/ext/boost/limits.hpp +1 -1
  141. data/ext/boost/math/policies/policy.hpp +10 -0
  142. data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
  143. data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
  144. data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
  145. data/ext/boost/math/special_functions/sign.hpp +13 -8
  146. data/ext/boost/math/tools/config.hpp +38 -16
  147. data/ext/boost/move/algorithm.hpp +275 -0
  148. data/ext/boost/move/core.hpp +332 -0
  149. data/ext/boost/move/detail/config_begin.hpp +23 -0
  150. data/ext/boost/move/detail/config_end.hpp +20 -0
  151. data/ext/boost/move/detail/meta_utils.hpp +158 -0
  152. data/ext/boost/move/iterator.hpp +298 -0
  153. data/ext/boost/move/move.hpp +10 -1256
  154. data/ext/boost/move/traits.hpp +142 -0
  155. data/ext/boost/move/utility.hpp +194 -0
  156. data/ext/boost/mpl/assert.hpp +72 -4
  157. data/ext/boost/noncopyable.hpp +15 -3
  158. data/ext/boost/pointer_to_other.hpp +55 -0
  159. data/ext/boost/range/concepts.hpp +4 -4
  160. data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
  161. data/ext/boost/range/empty.hpp +1 -1
  162. data/ext/boost/range/iterator_range_core.hpp +4 -1
  163. data/ext/boost/range/iterator_range_io.hpp +2 -2
  164. data/ext/boost/ratio/config.hpp +6 -0
  165. data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
  166. data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
  167. data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
  168. data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
  169. data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
  170. data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
  171. data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
  172. data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
  173. data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
  174. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
  175. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
  176. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  177. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  178. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  179. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  180. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  181. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
  182. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  183. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  184. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  185. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  186. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  187. data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
  188. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  189. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  190. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  191. data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  192. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
  193. data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
  194. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
  195. data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
  196. data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
  197. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
  198. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
  199. data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
  200. data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
  201. data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
  202. data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
  203. data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
  204. data/ext/boost/smart_ptr/shared_array.hpp +135 -20
  205. data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
  206. data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
  207. data/ext/boost/static_assert.hpp +74 -17
  208. data/ext/boost/system/error_code.hpp +76 -68
  209. data/ext/boost/system/system_error.hpp +5 -1
  210. data/ext/boost/thread/barrier.hpp +6 -2
  211. data/ext/boost/thread/completion_latch.hpp +233 -0
  212. data/ext/boost/thread/condition.hpp +6 -1
  213. data/ext/boost/thread/detail/async_func.hpp +571 -0
  214. data/ext/boost/thread/detail/config.hpp +248 -40
  215. data/ext/boost/thread/detail/counter.hpp +93 -0
  216. data/ext/boost/thread/detail/delete.hpp +12 -0
  217. data/ext/boost/thread/detail/invoke.hpp +1351 -0
  218. data/ext/boost/thread/detail/is_convertible.hpp +48 -0
  219. data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
  220. data/ext/boost/thread/detail/log.hpp +83 -0
  221. data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
  222. data/ext/boost/thread/detail/move.hpp +32 -16
  223. data/ext/boost/thread/detail/thread.hpp +236 -41
  224. data/ext/boost/thread/detail/thread_group.hpp +55 -9
  225. data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
  226. data/ext/boost/thread/exceptions.hpp +2 -0
  227. data/ext/boost/thread/externally_locked.hpp +351 -0
  228. data/ext/boost/thread/externally_locked_stream.hpp +170 -0
  229. data/ext/boost/thread/future.hpp +2517 -455
  230. data/ext/boost/thread/future_error_code.hpp +61 -0
  231. data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
  232. data/ext/boost/thread/latch.hpp +142 -0
  233. data/ext/boost/thread/lock_algorithms.hpp +468 -0
  234. data/ext/boost/thread/lock_concepts.hpp +197 -0
  235. data/ext/boost/thread/lock_factories.hpp +78 -0
  236. data/ext/boost/thread/lock_guard.hpp +88 -0
  237. data/ext/boost/thread/lock_options.hpp +31 -0
  238. data/ext/boost/thread/lock_traits.hpp +45 -0
  239. data/ext/boost/thread/lock_types.hpp +1226 -0
  240. data/ext/boost/thread/lockable_adapter.hpp +226 -0
  241. data/ext/boost/thread/lockable_concepts.hpp +157 -0
  242. data/ext/boost/thread/lockable_traits.hpp +207 -0
  243. data/ext/boost/thread/locks.hpp +5 -1816
  244. data/ext/boost/thread/mutex.hpp +33 -1
  245. data/ext/boost/thread/null_mutex.hpp +243 -0
  246. data/ext/boost/thread/once.hpp +10 -1
  247. data/ext/boost/thread/poly_lockable.hpp +68 -0
  248. data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
  249. data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
  250. data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
  251. data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
  252. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
  253. data/ext/boost/thread/pthread/mutex.hpp +101 -38
  254. data/ext/boost/thread/pthread/once.hpp +459 -44
  255. data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
  256. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
  257. data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
  258. data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
  259. data/ext/boost/thread/pthread/thread_data.hpp +53 -50
  260. data/ext/boost/thread/pthread/timespec.hpp +96 -12
  261. data/ext/boost/thread/recursive_mutex.hpp +44 -1
  262. data/ext/boost/thread/reverse_lock.hpp +3 -2
  263. data/ext/boost/thread/scoped_thread.hpp +285 -0
  264. data/ext/boost/thread/shared_lock_guard.hpp +2 -1
  265. data/ext/boost/thread/shared_mutex.hpp +23 -0
  266. data/ext/boost/thread/strict_lock.hpp +235 -0
  267. data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
  268. data/ext/boost/thread/sync_queue.hpp +516 -0
  269. data/ext/boost/thread/synchronized_value.hpp +1001 -0
  270. data/ext/boost/thread/testable_mutex.hpp +148 -0
  271. data/ext/boost/thread/thread.hpp +1 -13
  272. data/ext/boost/thread/thread_functors.hpp +57 -0
  273. data/ext/boost/thread/thread_guard.hpp +46 -0
  274. data/ext/boost/thread/thread_only.hpp +29 -0
  275. data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
  276. data/ext/boost/thread/v2/thread.hpp +37 -10
  277. data/ext/boost/thread/xtime.hpp +2 -1
  278. data/ext/boost/token_functions.hpp +16 -16
  279. data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
  280. data/ext/boost/type_traits/add_reference.hpp +1 -1
  281. data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
  282. data/ext/boost/type_traits/aligned_storage.hpp +13 -0
  283. data/ext/boost/type_traits/common_type.hpp +11 -12
  284. data/ext/boost/type_traits/config.hpp +1 -1
  285. data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
  286. data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
  287. data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
  288. data/ext/boost/type_traits/has_left_shift.hpp +49 -0
  289. data/ext/boost/type_traits/has_right_shift.hpp +49 -0
  290. data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
  291. data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
  292. data/ext/boost/type_traits/intrinsics.hpp +18 -2
  293. data/ext/boost/type_traits/is_abstract.hpp +1 -1
  294. data/ext/boost/type_traits/is_array.hpp +1 -1
  295. data/ext/boost/type_traits/is_const.hpp +1 -1
  296. data/ext/boost/type_traits/is_convertible.hpp +78 -17
  297. data/ext/boost/type_traits/is_function.hpp +6 -1
  298. data/ext/boost/type_traits/is_integral.hpp +6 -1
  299. data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
  300. data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
  301. data/ext/boost/type_traits/is_pod.hpp +3 -1
  302. data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
  303. data/ext/boost/type_traits/is_volatile.hpp +1 -1
  304. data/ext/boost/type_traits/make_signed.hpp +153 -0
  305. data/ext/boost/type_traits/make_unsigned.hpp +16 -0
  306. data/ext/boost/type_traits/remove_const.hpp +1 -1
  307. data/ext/boost/type_traits/remove_cv.hpp +1 -1
  308. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  309. data/ext/boost/type_traits/remove_volatile.hpp +1 -1
  310. data/ext/boost/unordered/detail/allocate.hpp +1120 -0
  311. data/ext/boost/unordered/detail/buckets.hpp +876 -0
  312. data/ext/boost/unordered/detail/equivalent.hpp +680 -0
  313. data/ext/boost/unordered/detail/extract_key.hpp +183 -0
  314. data/ext/boost/unordered/detail/fwd.hpp +23 -0
  315. data/ext/boost/unordered/detail/table.hpp +861 -0
  316. data/ext/boost/unordered/detail/unique.hpp +622 -0
  317. data/ext/boost/unordered/detail/util.hpp +260 -0
  318. data/ext/boost/unordered/unordered_map.hpp +1652 -0
  319. data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
  320. data/ext/boost/unordered/unordered_set.hpp +1549 -0
  321. data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
  322. data/ext/boost/unordered_map.hpp +18 -0
  323. data/ext/boost/unordered_set.hpp +18 -0
  324. data/ext/boost/utility/addressof.hpp +2 -2
  325. data/ext/boost/utility/result_of.hpp +8 -1
  326. data/ext/boost/version.hpp +2 -2
  327. data/ext/common/Account.h +1 -1
  328. data/ext/common/AccountsDatabase.h +1 -1
  329. data/ext/common/AgentsStarter.cpp +3 -1
  330. data/ext/common/AgentsStarter.h +2 -2
  331. data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
  332. data/ext/common/ApplicationPool2/AppTypes.h +17 -8
  333. data/ext/common/ApplicationPool2/Common.h +12 -12
  334. data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
  335. data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
  336. data/ext/common/ApplicationPool2/Group.h +6 -6
  337. data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
  338. data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
  339. data/ext/common/ApplicationPool2/Pool.h +21 -21
  340. data/ext/common/ApplicationPool2/Process.h +6 -6
  341. data/ext/common/ApplicationPool2/Session.h +1 -1
  342. data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
  343. data/ext/common/ApplicationPool2/Socket.h +2 -2
  344. data/ext/common/ApplicationPool2/Spawner.h +64 -14
  345. data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
  346. data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
  347. data/ext/common/BackgroundEventLoop.cpp +4 -4
  348. data/ext/common/BackgroundEventLoop.h +1 -1
  349. data/ext/common/Constants.h +13 -1
  350. data/ext/common/EventedBufferedInput.h +8 -8
  351. data/ext/common/Exceptions.cpp +71 -0
  352. data/ext/common/Exceptions.h +60 -7
  353. data/ext/common/FileDescriptor.h +4 -4
  354. data/ext/common/MessageClient.h +1 -1
  355. data/ext/common/MessageServer.h +5 -5
  356. data/ext/common/MultiLibeio.cpp +3 -3
  357. data/ext/common/MultiLibeio.h +2 -2
  358. data/ext/common/RandomGenerator.h +11 -11
  359. data/ext/common/ResourceLocator.h +8 -1
  360. data/ext/common/SafeLibev.h +12 -12
  361. data/ext/common/ServerInstanceDir.h +11 -3
  362. data/ext/common/UnionStation.h +10 -10
  363. data/ext/common/Utils.cpp +11 -13
  364. data/ext/common/Utils.h +9 -9
  365. data/ext/common/Utils/BlockingQueue.h +10 -10
  366. data/ext/common/Utils/BufferedIO.h +1 -1
  367. data/ext/common/Utils/CachedFileStat.hpp +2 -2
  368. data/ext/common/Utils/FileChangeChecker.h +1 -1
  369. data/ext/common/Utils/HashMap.h +13 -4
  370. data/ext/common/Utils/IOUtils.cpp +33 -10
  371. data/ext/common/Utils/IniFile.h +3 -3
  372. data/ext/common/Utils/Lock.h +2 -2
  373. data/ext/common/Utils/MessagePassing.h +10 -10
  374. data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
  375. data/ext/common/Utils/ScopeGuard.h +5 -5
  376. data/ext/common/Utils/jsoncpp.cpp +2 -0
  377. data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
  378. data/ext/common/agents/HelperAgent/Main.cpp +18 -18
  379. data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
  380. data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
  381. data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
  382. data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
  383. data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
  384. data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
  385. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  386. data/ext/common/agents/SpawnPreparer.cpp +1 -0
  387. data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
  388. data/ext/common/agents/Watchdog/Main.cpp +81 -73
  389. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
  390. data/ext/libev/Changes +57 -0
  391. data/ext/libev/LICENSE +2 -1
  392. data/ext/libev/Makefile.in +110 -50
  393. data/ext/libev/README +8 -8
  394. data/ext/libev/aclocal.m4 +1503 -861
  395. data/ext/libev/config.guess +290 -304
  396. data/ext/libev/config.sub +77 -198
  397. data/ext/libev/configure +1735 -890
  398. data/ext/libev/configure.ac +3 -2
  399. data/ext/libev/ev++.h +6 -6
  400. data/ext/libev/ev.c +541 -214
  401. data/ext/libev/ev.h +106 -100
  402. data/ext/libev/ev_epoll.c +1 -1
  403. data/ext/libev/ev_kqueue.c +20 -4
  404. data/ext/libev/ev_vars.h +15 -16
  405. data/ext/libev/ev_win32.c +12 -2
  406. data/ext/libev/ev_wrap.h +162 -160
  407. data/ext/libev/event.c +29 -6
  408. data/ext/libev/event.h +9 -2
  409. data/ext/libev/ltmain.sh +2632 -1384
  410. data/ext/nginx/ConfigurationCommands.c +1 -1
  411. data/ext/nginx/ConfigurationCommands.c.erb +3 -1
  412. data/ext/nginx/ContentHandler.c +25 -2
  413. data/ext/nginx/CreateLocationConfig.c +1 -0
  414. data/ext/nginx/CreateLocationConfig.c.erb +1 -1
  415. data/ext/nginx/MergeLocationConfig.c +1 -0
  416. data/ext/nginx/MergeLocationConfig.c.erb +1 -1
  417. data/ext/nginx/config +12 -0
  418. data/ext/oxt/dynamic_thread_group.hpp +7 -4
  419. data/ext/oxt/system_calls.cpp +5 -1
  420. data/ext/oxt/system_calls.hpp +3 -0
  421. data/helper-scripts/node-loader.js +117 -249
  422. data/lib/phusion_passenger.rb +27 -5
  423. data/lib/phusion_passenger/abstract_installer.rb +104 -9
  424. data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
  425. data/lib/phusion_passenger/apache2/config_options.rb +6 -3
  426. data/lib/phusion_passenger/common_library.rb +7 -1
  427. data/lib/phusion_passenger/constants.rb +6 -0
  428. data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
  429. data/lib/phusion_passenger/nginx/config_options.rb +2 -1
  430. data/lib/phusion_passenger/packaging.rb +3 -0
  431. data/lib/phusion_passenger/platform_info/apache.rb +43 -6
  432. data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
  433. data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
  434. data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
  435. data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
  436. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
  437. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  438. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
  439. data/lib/phusion_passenger/platform_info/linux.rb +2 -1
  440. data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
  441. data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
  442. data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
  443. data/lib/phusion_passenger/standalone/start_command.rb +8 -2
  444. data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
  445. data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
  446. data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
  447. data/node_lib/phusion_passenger/line_reader.js +154 -0
  448. data/node_lib/phusion_passenger/request_handler.js +65 -0
  449. data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
  450. data/resources/templates/apache2/deployment_example.txt.erb +2 -1
  451. data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
  452. data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
  453. data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  454. data/resources/templates/general_error_with_html.html.template +1 -1
  455. data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
  456. data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
  457. data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
  458. data/resources/templates/nginx/deployment_example.txt.erb +2 -1
  459. data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  460. data/resources/templates/standalone/config.erb +1 -0
  461. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
  462. data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
  463. data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
  464. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
  465. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
  466. data/test/cxx/EventedBufferedInputTest.cpp +6 -6
  467. data/test/cxx/FileBackedPipeTest.cpp +1 -1
  468. data/test/cxx/MessagePassingTest.cpp +1 -1
  469. data/test/cxx/MessageServerTest.cpp +4 -4
  470. data/test/cxx/RequestHandlerTest.cpp +7 -7
  471. data/test/cxx/UnionStationTest.cpp +2 -2
  472. data/test/node/line_reader_spec.js +338 -0
  473. data/test/node/spec_helper.js +27 -0
  474. data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
  475. metadata +131 -22
  476. metadata.gz.asc +7 -7
  477. data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
  478. data/ext/boost/lambda/core.hpp +0 -79
  479. data/ext/boost/lambda/detail/actions.hpp +0 -174
  480. data/ext/boost/lambda/detail/arity_code.hpp +0 -110
  481. data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
  482. data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
  483. data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
  484. data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
  485. data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
  486. data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
  487. data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
  488. data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
  489. data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
  490. data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
  491. data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
  492. data/ext/boost/lambda/detail/operators.hpp +0 -370
  493. data/ext/boost/lambda/detail/ret.hpp +0 -325
  494. data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
  495. data/ext/boost/lambda/detail/select_functions.hpp +0 -74
  496. data/ext/boost/lambda/lambda.hpp +0 -34
@@ -60,7 +60,7 @@ using namespace oxt;
60
60
  * Except for otherwise documented parts, this class is not thread-safe,
61
61
  * so only access within ApplicationPool lock.
62
62
  */
63
- class Group: public enable_shared_from_this<Group> {
63
+ class Group: public boost::enable_shared_from_this<Group> {
64
64
  private:
65
65
  friend class Pool;
66
66
  friend class SuperGroup;
@@ -90,7 +90,7 @@ private:
90
90
  * Groups.
91
91
  * Read-only; only set during initialization.
92
92
  */
93
- weak_ptr<SuperGroup> superGroup;
93
+ boost::weak_ptr<SuperGroup> superGroup;
94
94
  CachedFileStat cstat;
95
95
  FileChangeChecker fileChangeChecker;
96
96
  string restartFile;
@@ -150,7 +150,7 @@ private:
150
150
  * whether any of the Processes can be shut down.
151
151
  */
152
152
  bool detachedProcessesCheckerActive;
153
- condition_variable detachedProcessesCheckerCond;
153
+ boost::condition_variable detachedProcessesCheckerCond;
154
154
  Callback shutdownCallback;
155
155
  GroupPtr selfPointer;
156
156
 
@@ -329,7 +329,7 @@ private:
329
329
  return true;
330
330
  } else {
331
331
  P_WARN("Request queue is full. Returning an error");
332
- callback(SessionPtr(), make_shared<RequestQueueFullException>());
332
+ callback(SessionPtr(), boost::make_shared<RequestQueueFullException>());
333
333
  return false;
334
334
  }
335
335
  }
@@ -721,14 +721,14 @@ public:
721
721
  }
722
722
 
723
723
  if (OXT_UNLIKELY(newOptions.noop)) {
724
- ProcessPtr process = make_shared<Process>(SafeLibevPtr(),
724
+ ProcessPtr process = boost::make_shared<Process>(SafeLibevPtr(),
725
725
  0, string(), string(),
726
726
  FileDescriptor(), FileDescriptor(),
727
727
  SocketListPtr(), 0, 0);
728
728
  process->dummy = true;
729
729
  process->requiresShutdown = false;
730
730
  process->setGroup(shared_from_this());
731
- return make_shared<Session>(process, (Socket *) NULL);
731
+ return boost::make_shared<Session>(process, (Socket *) NULL);
732
732
  }
733
733
 
734
734
  if (OXT_UNLIKELY(enabledCount == 0)) {
@@ -46,7 +46,7 @@ using namespace oxt;
46
46
  do { \
47
47
  const klass *ep = dynamic_cast<const klass *>(&e); \
48
48
  if (ep != NULL) { \
49
- return make_shared<klass>(*ep); \
49
+ return boost::make_shared<klass>(*ep); \
50
50
  } \
51
51
  } while (false)
52
52
 
@@ -81,7 +81,7 @@ copyException(const tracable_exception &e) {
81
81
 
82
82
  TRY_COPY_EXCEPTION(boost::thread_interrupted);
83
83
 
84
- return make_shared<tracable_exception>(e);
84
+ return boost::make_shared<tracable_exception>(e);
85
85
  }
86
86
 
87
87
  #define TRY_RETHROW_EXCEPTION(klass) \
@@ -157,7 +157,7 @@ SuperGroup::generateSecret() const {
157
157
  }
158
158
 
159
159
  void
160
- SuperGroup::createInterruptableThread(const function<void ()> &func, const string &name,
160
+ SuperGroup::createInterruptableThread(const boost::function<void ()> &func, const string &name,
161
161
  unsigned int stackSize)
162
162
  {
163
163
  getPool()->interruptableThreads.create_thread(func, name, stackSize);
@@ -179,7 +179,7 @@ SuperGroup::realDoInitialize(const Options &options, unsigned int generation) {
179
179
  string message = "The directory " +
180
180
  options.appRoot +
181
181
  " does not seem to contain a web application.";
182
- exception = make_shared<SpawnException>(
182
+ exception = boost::make_shared<SpawnException>(
183
183
  message, message, false);
184
184
  }
185
185
 
@@ -193,7 +193,7 @@ SuperGroup::realDoInitialize(const Options &options, unsigned int generation) {
193
193
  debug->messages->recv("Proceed with initializing SuperGroup");
194
194
  }
195
195
 
196
- unique_lock<boost::mutex> lock(getPoolSyncher(pool));
196
+ boost::unique_lock<boost::mutex> lock(getPoolSyncher(pool));
197
197
  this_thread::disable_interruption di;
198
198
  this_thread::disable_syscall_interruption dsi;
199
199
  NOT_EXPECTING_EXCEPTIONS();
@@ -221,7 +221,7 @@ SuperGroup::realDoInitialize(const Options &options, unsigned int generation) {
221
221
  } else {
222
222
  for (it = componentInfos.begin(); it != componentInfos.end(); it++) {
223
223
  const ComponentInfo &info = *it;
224
- GroupPtr group = make_shared<Group>(shared_from_this(),
224
+ GroupPtr group = boost::make_shared<Group>(shared_from_this(),
225
225
  options, info);
226
226
  groups.push_back(group);
227
227
  if (info.isDefault) {
@@ -254,7 +254,7 @@ SuperGroup::realDoRestart(const Options &options, unsigned int generation) {
254
254
  debug->messages->recv("Proceed with restarting SuperGroup");
255
255
  }
256
256
 
257
- unique_lock<boost::mutex> lock(getPoolSyncher(pool));
257
+ boost::unique_lock<boost::mutex> lock(getPoolSyncher(pool));
258
258
  if (OXT_UNLIKELY(this->generation != generation)) {
259
259
  return;
260
260
  }
@@ -284,7 +284,7 @@ SuperGroup::realDoRestart(const Options &options, unsigned int generation) {
284
284
  } else {
285
285
  // This is not an existing group but a new one,
286
286
  // so create it.
287
- group = make_shared<Group>(shared_from_this(),
287
+ group = boost::make_shared<Group>(shared_from_this(),
288
288
  options, info);
289
289
  newGroups.push_back(group);
290
290
  }
@@ -330,7 +330,7 @@ Group::Group(const SuperGroupPtr &_superGroup, const Options &options, const Com
330
330
  lifeStatus = ALIVE;
331
331
  if (options.restartDir.empty()) {
332
332
  restartFile = options.appRoot + "/tmp/restart.txt";
333
- alwaysRestartFile = options.appRoot + "/always_restart.txt";
333
+ alwaysRestartFile = options.appRoot + "/tmp/always_restart.txt";
334
334
  } else if (options.restartDir[0] == '/') {
335
335
  restartFile = options.restartDir + "/restart.txt";
336
336
  alwaysRestartFile = options.restartDir + "/always_restart.txt";
@@ -364,7 +364,7 @@ Group::onSessionInitiateFailure(const ProcessPtr &process, Session *session) {
364
364
  TRACE_POINT();
365
365
  // Standard resource management boilerplate stuff...
366
366
  PoolPtr pool = getPool();
367
- unique_lock<boost::mutex> lock(pool->syncher);
367
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
368
368
  assert(process->isAlive());
369
369
  assert(isAlive() || getLifeStatus() == SHUTTING_DOWN);
370
370
 
@@ -384,7 +384,7 @@ Group::onSessionClose(const ProcessPtr &process, Session *session) {
384
384
  TRACE_POINT();
385
385
  // Standard resource management boilerplate stuff...
386
386
  PoolPtr pool = getPool();
387
- unique_lock<boost::mutex> lock(pool->syncher);
387
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
388
388
  assert(process->isAlive());
389
389
  assert(isAlive() || getLifeStatus() == SHUTTING_DOWN);
390
390
 
@@ -480,7 +480,7 @@ void
480
480
  Group::requestOOBW(const ProcessPtr &process) {
481
481
  // Standard resource management boilerplate stuff...
482
482
  PoolPtr pool = getPool();
483
- unique_lock<boost::mutex> lock(pool->syncher);
483
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
484
484
  if (isAlive() && process->isAlive() && process->oobwStatus == Process::OOBW_NOT_ACTIVE) {
485
485
  process->oobwStatus = Process::OOBW_REQUESTED;
486
486
  }
@@ -524,7 +524,7 @@ Group::lockAndMaybeInitiateOobw(const ProcessPtr &process, DisableResult result,
524
524
 
525
525
  // Standard resource management boilerplate stuff...
526
526
  PoolPtr pool = getPool();
527
- unique_lock<boost::mutex> lock(pool->syncher);
527
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
528
528
  if (OXT_UNLIKELY(!process->isAlive() || !isAlive())) {
529
529
  return;
530
530
  }
@@ -625,7 +625,7 @@ Group::spawnThreadOOBWRequest(GroupPtr self, ProcessPtr process) {
625
625
  UPDATE_TRACE_POINT();
626
626
  {
627
627
  // Standard resource management boilerplate stuff...
628
- unique_lock<boost::mutex> lock(pool->syncher);
628
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
629
629
  if (OXT_UNLIKELY(!process->isAlive()
630
630
  || process->enabled == Process::DETACHED
631
631
  || !isAlive()))
@@ -696,7 +696,7 @@ Group::spawnThreadOOBWRequest(GroupPtr self, ProcessPtr process) {
696
696
  {
697
697
  // Standard resource management boilerplate stuff...
698
698
  PoolPtr pool = getPool();
699
- unique_lock<boost::mutex> lock(pool->syncher);
699
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
700
700
  if (OXT_UNLIKELY(!process->isAlive() || !isAlive())) {
701
701
  return;
702
702
  }
@@ -798,7 +798,7 @@ Group::spawnThreadRealMain(const SpawnerPtr &spawner, const Options &options, un
798
798
 
799
799
  UPDATE_TRACE_POINT();
800
800
  ScopeGuard guard(boost::bind(Process::forceTriggerShutdownAndCleanup, process));
801
- unique_lock<boost::mutex> lock(pool->syncher);
801
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
802
802
 
803
803
  if (!isAlive()) {
804
804
  if (process != NULL) {
@@ -1006,7 +1006,7 @@ void
1006
1006
  Group::detachedProcessesCheckerMain(GroupPtr self) {
1007
1007
  TRACE_POINT();
1008
1008
  PoolPtr pool = getPool();
1009
- unique_lock<boost::mutex> lock(pool->syncher);
1009
+ boost::unique_lock<boost::mutex> lock(pool->syncher);
1010
1010
 
1011
1011
  while (true) {
1012
1012
  assert(detachedProcessesCheckerActive);
@@ -1223,7 +1223,7 @@ PipeWatcher::start() {
1223
1223
  }
1224
1224
 
1225
1225
  void
1226
- PipeWatcher::threadMain(shared_ptr<PipeWatcher> self) {
1226
+ PipeWatcher::threadMain(boost::shared_ptr<PipeWatcher> self) {
1227
1227
  TRACE_POINT();
1228
1228
  self->threadMain();
1229
1229
  }
@@ -1232,7 +1232,7 @@ void
1232
1232
  PipeWatcher::threadMain() {
1233
1233
  TRACE_POINT();
1234
1234
  {
1235
- unique_lock<boost::mutex> lock(startSyncher);
1235
+ boost::unique_lock<boost::mutex> lock(startSyncher);
1236
1236
  while (!started) {
1237
1237
  startCond.wait(lock);
1238
1238
  }
@@ -39,9 +39,9 @@ using namespace boost;
39
39
 
40
40
 
41
41
  /** A PipeWatcher lives until the file descriptor is closed. */
42
- struct PipeWatcher: public enable_shared_from_this<PipeWatcher> {
42
+ struct PipeWatcher: public boost::enable_shared_from_this<PipeWatcher> {
43
43
  // For unit tests.
44
- typedef function<void (const char *data, unsigned int size)> DataCallback;
44
+ typedef boost::function<void (const char *data, unsigned int size)> DataCallback;
45
45
  static DataCallback onData;
46
46
 
47
47
  FileDescriptor fd;
@@ -50,16 +50,16 @@ struct PipeWatcher: public enable_shared_from_this<PipeWatcher> {
50
50
  bool print;
51
51
  bool started;
52
52
  boost::mutex startSyncher;
53
- condition_variable startCond;
53
+ boost::condition_variable startCond;
54
54
 
55
55
  PipeWatcher(const FileDescriptor &_fd, const char *name, pid_t pid, bool _print);
56
56
  void initialize();
57
57
  void start();
58
- static void threadMain(shared_ptr<PipeWatcher> self);
58
+ static void threadMain(boost::shared_ptr<PipeWatcher> self);
59
59
  void threadMain();
60
60
  };
61
61
 
62
- typedef shared_ptr<PipeWatcher> PipeWatcherPtr;
62
+ typedef boost::shared_ptr<PipeWatcher> PipeWatcherPtr;
63
63
 
64
64
 
65
65
  } // namespace ApplicationPool2
@@ -66,7 +66,7 @@ using namespace boost;
66
66
  using namespace oxt;
67
67
 
68
68
 
69
- class Pool: public enable_shared_from_this<Pool> {
69
+ class Pool: public boost::enable_shared_from_this<Pool> {
70
70
  public:
71
71
  struct InspectOptions {
72
72
  bool colorize;
@@ -107,8 +107,8 @@ public:
107
107
  unsigned int spawnLoopIteration;
108
108
 
109
109
  DebugSupport() {
110
- debugger = make_shared<MessageBox>();
111
- messages = make_shared<MessageBox>();
110
+ debugger = boost::make_shared<MessageBox>();
111
+ messages = boost::make_shared<MessageBox>();
112
112
  restarting = true;
113
113
  spawning = true;
114
114
  superGroup = false;
@@ -118,7 +118,7 @@ public:
118
118
  }
119
119
  };
120
120
 
121
- typedef shared_ptr<DebugSupport> DebugSupportPtr;
121
+ typedef boost::shared_ptr<DebugSupport> DebugSupportPtr;
122
122
 
123
123
  SpawnerFactoryPtr spawnerFactory;
124
124
  LoggerFactoryPtr loggerFactory;
@@ -129,7 +129,7 @@ public:
129
129
  unsigned int max;
130
130
  unsigned long long maxIdleTime;
131
131
 
132
- condition_variable garbageCollectionCond;
132
+ boost::condition_variable garbageCollectionCond;
133
133
 
134
134
  /**
135
135
  * Code can register background threads in one of these dynamic thread groups
@@ -472,7 +472,7 @@ public:
472
472
 
473
473
  struct DetachSuperGroupWaitTicket {
474
474
  boost::mutex syncher;
475
- condition_variable cond;
475
+ boost::condition_variable cond;
476
476
  SuperGroup::ShutdownResult result;
477
477
  bool done;
478
478
 
@@ -483,7 +483,7 @@ public:
483
483
 
484
484
  struct DisableWaitTicket {
485
485
  boost::mutex syncher;
486
- condition_variable cond;
486
+ boost::condition_variable cond;
487
487
  DisableResult result;
488
488
  bool done;
489
489
 
@@ -493,7 +493,7 @@ public:
493
493
  };
494
494
 
495
495
  static void syncDetachSuperGroupCallback(SuperGroup::ShutdownResult result,
496
- shared_ptr<DetachSuperGroupWaitTicket> ticket)
496
+ boost::shared_ptr<DetachSuperGroupWaitTicket> ticket)
497
497
  {
498
498
  LockGuard l(ticket->syncher);
499
499
  ticket->done = true;
@@ -501,7 +501,7 @@ public:
501
501
  ticket->cond.notify_one();
502
502
  }
503
503
 
504
- static void waitDetachSuperGroupCallback(shared_ptr<DetachSuperGroupWaitTicket> ticket) {
504
+ static void waitDetachSuperGroupCallback(boost::shared_ptr<DetachSuperGroupWaitTicket> ticket) {
505
505
  ScopedLock l(ticket->syncher);
506
506
  while (!ticket->done) {
507
507
  ticket->cond.wait(l);
@@ -509,7 +509,7 @@ public:
509
509
  }
510
510
 
511
511
  static void syncDisableProcessCallback(const ProcessPtr &process, DisableResult result,
512
- shared_ptr<DisableWaitTicket> ticket)
512
+ boost::shared_ptr<DisableWaitTicket> ticket)
513
513
  {
514
514
  LockGuard l(ticket->syncher);
515
515
  ticket->done = true;
@@ -672,7 +672,7 @@ public:
672
672
  stringstream data;
673
673
  };
674
674
 
675
- typedef shared_ptr<ProcessAnalyticsLogEntry> ProcessAnalyticsLogEntryPtr;
675
+ typedef boost::shared_ptr<ProcessAnalyticsLogEntry> ProcessAnalyticsLogEntryPtr;
676
676
 
677
677
  static void collectAnalytics(PoolPtr self) {
678
678
  TRACE_POINT();
@@ -782,7 +782,7 @@ public:
782
782
 
783
783
  // Log to Union Station.
784
784
  if (group->options.analytics && loggerFactory != NULL) {
785
- ProcessAnalyticsLogEntryPtr entry = make_shared<ProcessAnalyticsLogEntry>();
785
+ ProcessAnalyticsLogEntryPtr entry = boost::make_shared<ProcessAnalyticsLogEntry>();
786
786
  stringstream &xml = entry->data;
787
787
 
788
788
  entry->groupName = group->name;
@@ -832,7 +832,7 @@ public:
832
832
  }
833
833
 
834
834
  SuperGroupPtr createSuperGroup(const Options &options) {
835
- SuperGroupPtr superGroup = make_shared<SuperGroup>(shared_from_this(),
835
+ SuperGroupPtr superGroup = boost::make_shared<SuperGroup>(shared_from_this(),
836
836
  options);
837
837
  superGroup->initialize();
838
838
  superGroups.set(options.getAppGroupName(), superGroup);
@@ -867,7 +867,7 @@ public:
867
867
  if (randomGenerator != NULL) {
868
868
  this->randomGenerator = randomGenerator;
869
869
  } else {
870
- this->randomGenerator = make_shared<RandomGenerator>();
870
+ this->randomGenerator = boost::make_shared<RandomGenerator>();
871
871
  }
872
872
 
873
873
  lifeStatus = ALIVE;
@@ -904,7 +904,7 @@ public:
904
904
 
905
905
  void initDebugging() {
906
906
  LockGuard l(syncher);
907
- debugSupport = make_shared<DebugSupport>();
907
+ debugSupport = boost::make_shared<DebugSupport>();
908
908
  }
909
909
 
910
910
  void destroy() {
@@ -1019,7 +1019,7 @@ public:
1019
1019
  * the missing SuperGroup.
1020
1020
  */
1021
1021
  P_DEBUG("Creating new SuperGroup");
1022
- superGroup = make_shared<SuperGroup>(shared_from_this(), options);
1022
+ superGroup = boost::make_shared<SuperGroup>(shared_from_this(), options);
1023
1023
  superGroup->initialize();
1024
1024
  superGroups.set(options.getAppGroupName(), superGroup);
1025
1025
  garbageCollectionCond.notify_all();
@@ -1053,7 +1053,7 @@ public:
1053
1053
  }
1054
1054
  }
1055
1055
 
1056
- // TODO: 'ticket' should be a shared_ptr for interruption-safety.
1056
+ // TODO: 'ticket' should be a boost::shared_ptr for interruption-safety.
1057
1057
  SessionPtr get(const Options &options, Ticket *ticket) {
1058
1058
  ticket->session.reset();
1059
1059
  ticket->exception.reset();
@@ -1236,8 +1236,8 @@ public:
1236
1236
  verifyExpensiveInvariants();
1237
1237
 
1238
1238
  vector<Callback> actions;
1239
- shared_ptr<DetachSuperGroupWaitTicket> ticket =
1240
- make_shared<DetachSuperGroupWaitTicket>();
1239
+ boost::shared_ptr<DetachSuperGroupWaitTicket> ticket =
1240
+ boost::make_shared<DetachSuperGroupWaitTicket>();
1241
1241
  ExceptionPtr exception = copyException(
1242
1242
  GetAbortedException("The containg SuperGroup was detached."));
1243
1243
 
@@ -1338,8 +1338,8 @@ public:
1338
1338
  ProcessPtr process = findProcessByGupid(gupid, false);
1339
1339
  if (process != NULL) {
1340
1340
  GroupPtr group = process->getGroup();
1341
- // Must be a shared_ptr to be interruption-safe.
1342
- shared_ptr<DisableWaitTicket> ticket = make_shared<DisableWaitTicket>();
1341
+ // Must be a boost::shared_ptr to be interruption-safe.
1342
+ boost::shared_ptr<DisableWaitTicket> ticket = boost::make_shared<DisableWaitTicket>();
1343
1343
  DisableResult result = group->disable(process,
1344
1344
  boost::bind(syncDisableProcessCallback, _1, _2, ticket));
1345
1345
  group->verifyInvariants();
@@ -125,7 +125,7 @@ public:
125
125
  * This means that a Group outlives all its Processes, a Process outlives all
126
126
  * its Sessions, and a Process also outlives the OS process.
127
127
  */
128
- class Process: public enable_shared_from_this<Process> {
128
+ class Process: public boost::enable_shared_from_this<Process> {
129
129
  private:
130
130
  friend class Group;
131
131
 
@@ -136,7 +136,7 @@ private:
136
136
  * Should never be NULL because a Group should outlive all of its Processes.
137
137
  * Read-only; only set once during initialization.
138
138
  */
139
- weak_ptr<Group> group;
139
+ boost::weak_ptr<Group> group;
140
140
 
141
141
  /** A subset of 'sockets': all sockets that speak the
142
142
  * "session" protocol, sorted by socket.utilization(). */
@@ -345,19 +345,19 @@ public:
345
345
  {
346
346
  SpawnerConfigPtr config;
347
347
  if (_config == NULL) {
348
- config = make_shared<SpawnerConfig>();
348
+ config = boost::make_shared<SpawnerConfig>();
349
349
  } else {
350
350
  config = _config;
351
351
  }
352
352
 
353
353
  if (_adminSocket != -1) {
354
- PipeWatcherPtr watcher = make_shared<PipeWatcher>(_adminSocket,
354
+ PipeWatcherPtr watcher = boost::make_shared<PipeWatcher>(_adminSocket,
355
355
  "stdout", pid, config->forwardStdout);
356
356
  watcher->initialize();
357
357
  watcher->start();
358
358
  }
359
359
  if (_errorPipe != -1) {
360
- PipeWatcherPtr watcher = make_shared<PipeWatcher>(_errorPipe,
360
+ PipeWatcherPtr watcher = boost::make_shared<PipeWatcher>(_errorPipe,
361
361
  "stderr", pid, config->forwardStderr);
362
362
  watcher->initialize();
363
363
  watcher->start();
@@ -559,7 +559,7 @@ public:
559
559
  this->sessions++;
560
560
  socket->pqHandle = sessionSockets.push(socket, socket->utilization());
561
561
  lastUsed = SystemTime::getUsec();
562
- return make_shared<Session>(shared_from_this(), socket);
562
+ return boost::make_shared<Session>(shared_from_this(), socket);
563
563
  }
564
564
  }
565
565