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
@@ -84,7 +84,7 @@ private:
84
84
 
85
85
  typedef MessageServer::CommonClientContext CommonClientContext;
86
86
 
87
- shared_ptr<RequestHandler> requestHandler;
87
+ boost::shared_ptr<RequestHandler> requestHandler;
88
88
  PoolPtr pool;
89
89
 
90
90
 
@@ -166,13 +166,13 @@ private:
166
166
  }
167
167
 
168
168
  public:
169
- RemoteController(const shared_ptr<RequestHandler> &requestHandler, const PoolPtr &pool) {
169
+ RemoteController(const boost::shared_ptr<RequestHandler> &requestHandler, const PoolPtr &pool) {
170
170
  this->requestHandler = requestHandler;
171
171
  this->pool = pool;
172
172
  }
173
173
 
174
174
  virtual MessageServer::ClientContextPtr newClient(CommonClientContext &commonContext) {
175
- return make_shared<SpecificContext>();
175
+ return boost::make_shared<SpecificContext>();
176
176
  }
177
177
 
178
178
  virtual bool processMessage(CommonClientContext &commonContext,
@@ -259,10 +259,10 @@ private:
259
259
  AccountsDatabasePtr accountsDatabase;
260
260
  MessageServerPtr messageServer;
261
261
  ResourceLocator resourceLocator;
262
- shared_ptr<RequestHandler> requestHandler;
263
- shared_ptr<oxt::thread> prestarterThread;
264
- shared_ptr<oxt::thread> messageServerThread;
265
- shared_ptr<oxt::thread> eventLoopThread;
262
+ boost::shared_ptr<RequestHandler> requestHandler;
263
+ boost::shared_ptr<oxt::thread> prestarterThread;
264
+ boost::shared_ptr<oxt::thread> messageServerThread;
265
+ boost::shared_ptr<oxt::thread> eventLoopThread;
266
266
  EventFd exitEvent;
267
267
 
268
268
  /**
@@ -421,12 +421,12 @@ public:
421
421
  UPDATE_TRACE_POINT();
422
422
  generation = serverInstanceDir.getGeneration(options.generationNumber);
423
423
  startListening();
424
- accountsDatabase = make_shared<AccountsDatabase>();
424
+ accountsDatabase = boost::make_shared<AccountsDatabase>();
425
425
  accountsDatabase->add("_passenger-status", options.adminToolStatusPassword, false,
426
426
  Account::INSPECT_BASIC_INFO | Account::INSPECT_SENSITIVE_INFO |
427
427
  Account::INSPECT_BACKTRACES | Account::INSPECT_REQUESTS);
428
428
  accountsDatabase->add("_web_server", options.exitPassword, false, Account::EXIT);
429
- messageServer = make_shared<MessageServer>(
429
+ messageServer = boost::make_shared<MessageServer>(
430
430
  parseUnixSocketAddress(options.adminSocketAddress), accountsDatabase);
431
431
 
432
432
  createFile(generation->getPath() + "/helper_agent.pid",
@@ -437,7 +437,7 @@ public:
437
437
  }
438
438
 
439
439
  UPDATE_TRACE_POINT();
440
- randomGenerator = make_shared<RandomGenerator>();
440
+ randomGenerator = boost::make_shared<RandomGenerator>();
441
441
  // Check whether /dev/urandom is actually random.
442
442
  // https://code.google.com/p/phusion-passenger/issues/detail?id=516
443
443
  if (randomGenerator->generateByteString(16) == randomGenerator->generateByteString(16)) {
@@ -446,21 +446,21 @@ public:
446
446
  }
447
447
 
448
448
  UPDATE_TRACE_POINT();
449
- loggerFactory = make_shared<UnionStation::LoggerFactory>(options.loggingAgentAddress,
449
+ loggerFactory = boost::make_shared<UnionStation::LoggerFactory>(options.loggingAgentAddress,
450
450
  "logging", options.loggingAgentPassword);
451
- spawnerFactory = make_shared<SpawnerFactory>(poolLoop.safe,
452
- resourceLocator, generation, make_shared<SpawnerConfig>(randomGenerator));
453
- pool = make_shared<Pool>(poolLoop.safe.get(), spawnerFactory, loggerFactory,
451
+ spawnerFactory = boost::make_shared<SpawnerFactory>(poolLoop.safe,
452
+ resourceLocator, generation, boost::make_shared<SpawnerConfig>(randomGenerator));
453
+ pool = boost::make_shared<Pool>(poolLoop.safe.get(), spawnerFactory, loggerFactory,
454
454
  randomGenerator);
455
455
  pool->initialize();
456
456
  pool->setMax(options.maxPoolSize);
457
457
  //pool->setMaxPerApp(maxInstancesPerApp);
458
458
  pool->setMaxIdleTime(options.poolIdleTime * 1000000);
459
459
 
460
- requestHandler = make_shared<RequestHandler>(requestLoop.safe,
460
+ requestHandler = boost::make_shared<RequestHandler>(requestLoop.safe,
461
461
  requestSocket, pool, options);
462
462
 
463
- messageServer->addHandler(make_shared<RemoteController>(requestHandler, pool));
463
+ messageServer->addHandler(boost::make_shared<RemoteController>(requestHandler, pool));
464
464
  messageServer->addHandler(ptr(new ExitHandler(exitEvent)));
465
465
 
466
466
  sigquitWatcher.set(requestLoop.loop);
@@ -475,7 +475,7 @@ public:
475
475
  messageServer->getSocketFilename().c_str(),
476
476
  NULL);
477
477
 
478
- function<void ()> func = boost::bind(prestartWebApps,
478
+ boost::function<void ()> func = boost::bind(prestartWebApps,
479
479
  resourceLocator,
480
480
  options.defaultRubyCommand,
481
481
  options.prestartUrls
@@ -531,7 +531,7 @@ public:
531
531
 
532
532
  void mainLoop() {
533
533
  TRACE_POINT();
534
- function<void ()> func;
534
+ boost::function<void ()> func;
535
535
 
536
536
  func = boost::bind(&MessageServer::mainLoop, messageServer.get());
537
537
  messageServerThread = ptr(new oxt::thread(
@@ -244,7 +244,7 @@ main() {
244
244
  setLogLevel(3);
245
245
  MultiLibeio::init();
246
246
  loop = EV_DEFAULT;
247
- libev = make_shared<SafeLibev>(loop);
247
+ libev = boost::make_shared<SafeLibev>(loop);
248
248
  AgentOptions options;
249
249
  ServerInstanceDir serverInstanceDir(getpid());
250
250
  char root[PATH_MAX];
@@ -258,12 +258,12 @@ main() {
258
258
  options.loggingAgentAddress = "unix:/tmp/agent";
259
259
  options.loggingAgentPassword = "1234";
260
260
 
261
- SpawnerFactoryPtr spawnerFactory = make_shared<SpawnerFactory>(libev,
261
+ SpawnerFactoryPtr spawnerFactory = boost::make_shared<SpawnerFactory>(libev,
262
262
  ResourceLocator(root),
263
263
  serverInstanceDir.newGeneration(true, "nobody", nogroup, getpid(), getgid()));
264
- UnionStation::LoggerFactoryPtr loggerFactory = make_shared<UnionStation::LoggerFactory>(options.loggingAgentAddress,
264
+ UnionStation::LoggerFactoryPtr loggerFactory = boost::make_shared<UnionStation::LoggerFactory>(options.loggingAgentAddress,
265
265
  "logging", options.loggingAgentPassword);
266
- pool = make_shared<Pool>(libev.get(), spawnerFactory, loggerFactory);
266
+ pool = boost::make_shared<Pool>(libev.get(), spawnerFactory, loggerFactory);
267
267
  FileDescriptor requestSocket(createTcpServer("127.0.0.1", 3000));
268
268
  setNonBlocking(requestSocket);
269
269
  handler = new RequestHandler(libev, requestSocket, pool, options);
@@ -120,6 +120,8 @@ using namespace ApplicationPool2;
120
120
 
121
121
  class RequestHandler;
122
122
 
123
+ #define MAX_STATUS_HEADER_SIZE 64
124
+
123
125
  #define RH_ERROR(client, x) P_ERROR("[Client " << client->name() << "] " << x)
124
126
  #define RH_WARN(client, x) P_WARN("[Client " << client->name() << "] " << x)
125
127
  #define RH_DEBUG(client, x) P_DEBUG("[Client " << client->name() << "] " << x)
@@ -132,7 +134,7 @@ class RequestHandler;
132
134
  RH_TRACE(client, 3, "Event: " eventName)
133
135
 
134
136
 
135
- class Client: public enable_shared_from_this<Client> {
137
+ class Client: public boost::enable_shared_from_this<Client> {
136
138
  private:
137
139
  struct ev_loop *getLoop() const;
138
140
  const SafeLibevPtr &getSafeLibev() const;
@@ -290,19 +292,19 @@ public:
290
292
  Client() {
291
293
  fdnum = -1;
292
294
 
293
- clientInput = make_shared< EventedBufferedInput<> >();
295
+ clientInput = boost::make_shared< EventedBufferedInput<> >();
294
296
  clientInput->onData = onClientInputData;
295
297
  clientInput->onError = onClientInputError;
296
298
  clientInput->userData = this;
297
299
 
298
- clientBodyBuffer = make_shared<FileBackedPipe>("/tmp");
300
+ clientBodyBuffer = boost::make_shared<FileBackedPipe>("/tmp");
299
301
  clientBodyBuffer->userData = this;
300
302
  clientBodyBuffer->onData = onClientBodyBufferData;
301
303
  clientBodyBuffer->onEnd = onClientBodyBufferEnd;
302
304
  clientBodyBuffer->onError = onClientBodyBufferError;
303
305
  clientBodyBuffer->onCommit = onClientBodyBufferCommit;
304
306
 
305
- clientOutputPipe = make_shared<FileBackedPipe>("/tmp");
307
+ clientOutputPipe = boost::make_shared<FileBackedPipe>("/tmp");
306
308
  clientOutputPipe->userData = this;
307
309
  clientOutputPipe->onData = onClientOutputPipeData;
308
310
  clientOutputPipe->onEnd = onClientOutputPipeEnd;
@@ -312,7 +314,7 @@ public:
312
314
  clientOutputWatcher.set<Client, &Client::onClientOutputWritable>(this);
313
315
 
314
316
 
315
- appInput = make_shared< EventedBufferedInput<> >();
317
+ appInput = boost::make_shared< EventedBufferedInput<> >();
316
318
  appInput->onData = onAppInputData;
317
319
  appInput->onError = onAppInputError;
318
320
  appInput->userData = this;
@@ -541,7 +543,7 @@ public:
541
543
  }
542
544
  };
543
545
 
544
- typedef shared_ptr<Client> ClientPtr;
546
+ typedef boost::shared_ptr<Client> ClientPtr;
545
547
 
546
548
 
547
549
  class RequestHandler {
@@ -897,15 +899,22 @@ private:
897
899
  }
898
900
  if (begin != string::npos && end != string::npos) {
899
901
  StaticString statusValue(headerData.data() + begin + 1, end - begin);
900
- char header[statusValue.size() + 20];
901
- char *pos = header;
902
- const char *end = header + statusValue.size() + 20;
902
+ if (statusValue.size() <= MAX_STATUS_HEADER_SIZE) {
903
+ char header[MAX_STATUS_HEADER_SIZE + sizeof("Status: \r\n")];
904
+ char *pos = header;
905
+ const char *end = header + sizeof(header);
903
906
 
904
- pos = appendData(pos, end, "Status: ");
905
- pos = appendData(pos, end, statusValue);
906
- pos = appendData(pos, end, "\r\n");
907
- headerData.append(StaticString(header, pos - header));
908
- return true;
907
+ pos = appendData(pos, end, "Status: ");
908
+ pos = appendData(pos, end, statusValue);
909
+ pos = appendData(pos, end, "\r\n");
910
+ headerData.append(StaticString(header, pos - header));
911
+ return true;
912
+ } else {
913
+ disconnectWithError(client, "application sent malformed response: the Status header's (" +
914
+ statusValue + ") exceeds the allowed limit of " +
915
+ toString(MAX_STATUS_HEADER_SIZE) + " bytes.");
916
+ return false;
917
+ }
909
918
  } else {
910
919
  disconnectWithError(client, "application sent malformed response: the HTTP status line is invalid.");
911
920
  return false;
@@ -1319,7 +1328,7 @@ private:
1319
1328
  "\r\n"
1320
1329
  "Benchmark point: after_accept\n");
1321
1330
  } else {
1322
- ClientPtr client = make_shared<Client>();
1331
+ ClientPtr client = boost::make_shared<Client>();
1323
1332
  client->associate(this, fd);
1324
1333
  clients.insert(make_pair<int, ClientPtr>(fd, client));
1325
1334
  acceptedClients[count] = client;
@@ -1931,14 +1940,14 @@ private:
1931
1940
  if (e != NULL) {
1932
1941
  client->endScopeLog(&client->scopeLogs.getFromPool, false);
1933
1942
  {
1934
- shared_ptr<RequestQueueFullException> e2 = dynamic_pointer_cast<RequestQueueFullException>(e);
1943
+ boost::shared_ptr<RequestQueueFullException> e2 = dynamic_pointer_cast<RequestQueueFullException>(e);
1935
1944
  if (e2 != NULL) {
1936
1945
  writeRequestQueueFullExceptionErrorResponse(client);
1937
1946
  return;
1938
1947
  }
1939
1948
  }
1940
1949
  {
1941
- shared_ptr<SpawnException> e2 = dynamic_pointer_cast<SpawnException>(e);
1950
+ boost::shared_ptr<SpawnException> e2 = dynamic_pointer_cast<SpawnException>(e);
1942
1951
  if (e2 != NULL) {
1943
1952
  writeSpawnExceptionErrorResponse(client, e2);
1944
1953
  return;
@@ -1966,13 +1975,13 @@ private:
1966
1975
  requestQueueOverflowStatusCode);
1967
1976
  }
1968
1977
 
1969
- void writeSpawnExceptionErrorResponse(const ClientPtr &client, const shared_ptr<SpawnException> &e) {
1978
+ void writeSpawnExceptionErrorResponse(const ClientPtr &client, const boost::shared_ptr<SpawnException> &e) {
1970
1979
  if (strip(e->getErrorPage()).empty()) {
1971
1980
  RH_WARN(client, "Cannot checkout session. " << e->what());
1972
1981
  writeErrorResponse(client, e->what());
1973
1982
  } else {
1974
- RH_WARN(client, "Cannot checkout session. " << e->what() <<
1975
- "\nError page:\n" << e->getErrorPage());
1983
+ RH_WARN(client, "Cannot checkout session.\nError page:\n" <<
1984
+ e->getErrorPage());
1976
1985
  writeErrorResponse(client, e->getErrorPage(), e.get());
1977
1986
  }
1978
1987
  }
@@ -2000,7 +2009,7 @@ private:
2000
2009
  response.append(typeName);
2001
2010
  response.append("\nError message: ");
2002
2011
  response.append(e->what());
2003
- shared_ptr<tracable_exception> e3 = dynamic_pointer_cast<tracable_exception>(e);
2012
+ boost::shared_ptr<tracable_exception> e3 = dynamic_pointer_cast<tracable_exception>(e);
2004
2013
  if (e3 != NULL) {
2005
2014
  response.append("\nBacktrace:\n");
2006
2015
  response.append(e3->backtrace());
@@ -67,7 +67,7 @@ public:
67
67
  }
68
68
 
69
69
  virtual MessageServer::ClientContextPtr newClient(CommonClientContext &commonContext) {
70
- return make_shared<SpecificContext>();
70
+ return boost::make_shared<SpecificContext>();
71
71
  }
72
72
 
73
73
  virtual bool processMessage(CommonClientContext &commonContext,
@@ -38,6 +38,8 @@
38
38
  #endif
39
39
  #include <cstdio>
40
40
  #include <cstring>
41
+ #include <string.h>
42
+ #include <stdlib.h>
41
43
 
42
44
  #include <StaticString.h>
43
45
  #include <Exceptions.h>
@@ -834,10 +836,10 @@ private:
834
836
  struct MultiExpression;
835
837
  struct Comparison;
836
838
  struct FunctionCall;
837
- typedef shared_ptr<BooleanComponent> BooleanComponentPtr;
838
- typedef shared_ptr<MultiExpression> MultiExpressionPtr;
839
- typedef shared_ptr<Comparison> ComparisonPtr;
840
- typedef shared_ptr<FunctionCall> FunctionCallPtr;
839
+ typedef boost::shared_ptr<BooleanComponent> BooleanComponentPtr;
840
+ typedef boost::shared_ptr<MultiExpression> MultiExpressionPtr;
841
+ typedef boost::shared_ptr<Comparison> ComparisonPtr;
842
+ typedef boost::shared_ptr<FunctionCall> FunctionCallPtr;
841
843
 
842
844
  struct BooleanComponent {
843
845
  virtual ~BooleanComponent() { }
@@ -1380,7 +1382,7 @@ private:
1380
1382
 
1381
1383
  BooleanComponentPtr matchMultiExpression(int level) {
1382
1384
  logMatch(level, "matchMultiExpression()");
1383
- MultiExpressionPtr result = make_shared<MultiExpression>();
1385
+ MultiExpressionPtr result = boost::make_shared<MultiExpression>();
1384
1386
 
1385
1387
  result->firstExpression = matchExpression(level + 1);
1386
1388
  while (isLogicalOperatorToken(peek())) {
@@ -1408,7 +1410,7 @@ private:
1408
1410
  BooleanComponentPtr expression = matchMultiExpression(level + 1);
1409
1411
  match(Tokenizer::RPARENTHESIS);
1410
1412
  if (negate) {
1411
- return make_shared<Negation>(expression);
1413
+ return boost::make_shared<Negation>(expression);
1412
1414
  } else {
1413
1415
  return expression;
1414
1416
  }
@@ -1428,7 +1430,7 @@ private:
1428
1430
  }
1429
1431
 
1430
1432
  if (negate) {
1431
- return make_shared<Negation>(component);
1433
+ return boost::make_shared<Negation>(component);
1432
1434
  } else {
1433
1435
  return component;
1434
1436
  }
@@ -1440,12 +1442,12 @@ private:
1440
1442
 
1441
1443
  BooleanComponentPtr matchSingleValueComponent(int level, const Token &token) {
1442
1444
  logMatch(level, "matchSingleValueComponent()");
1443
- return make_shared<SingleValueComponent>(matchLiteral(level + 1, token));
1445
+ return boost::make_shared<SingleValueComponent>(matchLiteral(level + 1, token));
1444
1446
  }
1445
1447
 
1446
1448
  ComparisonPtr matchComparison(int level, const Token &subjectToken) {
1447
1449
  logMatch(level, "matchComparison()");
1448
- ComparisonPtr comparison = make_shared<Comparison>();
1450
+ ComparisonPtr comparison = boost::make_shared<Comparison>();
1449
1451
  comparison->subject = matchValue(level + 1, subjectToken);
1450
1452
  comparison->comparator = matchComparator(level + 1);
1451
1453
  comparison->object = matchValue(level + 1, match());
@@ -1460,9 +1462,9 @@ private:
1460
1462
  FunctionCallPtr function;
1461
1463
 
1462
1464
  if (id.rawValue == "starts_with") {
1463
- function = make_shared<StartsWithFunctionCall>();
1465
+ function = boost::make_shared<StartsWithFunctionCall>();
1464
1466
  } else if (id.rawValue == "has_hint") {
1465
- function = make_shared<HasHintFunctionCall>();
1467
+ function = boost::make_shared<HasHintFunctionCall>();
1466
1468
  } else {
1467
1469
  raiseSyntaxError("unknown function '" + id.rawValue + "'", id);
1468
1470
  }
@@ -74,7 +74,7 @@ private:
74
74
  static const int GARBAGE_COLLECTION_TIMEOUT = 4500; // 1 hour 15 minutes
75
75
 
76
76
  struct LogSink;
77
- typedef shared_ptr<LogSink> LogSinkPtr;
77
+ typedef boost::shared_ptr<LogSink> LogSinkPtr;
78
78
  typedef map<string, LogSinkPtr> LogSinkCache;
79
79
 
80
80
  struct LogSink {
@@ -183,7 +183,7 @@ private:
183
183
  }
184
184
  };
185
185
 
186
- typedef shared_ptr<LogFileSink> LogFileSinkPtr;
186
+ typedef boost::shared_ptr<LogFileSink> LogFileSinkPtr;
187
187
 
188
188
  struct RemoteSink: public LogSink {
189
189
  /* RemoteSender compresses the data with zlib before sending it
@@ -363,7 +363,7 @@ private:
363
363
  }
364
364
  };
365
365
 
366
- typedef shared_ptr<Transaction> TransactionPtr;
366
+ typedef boost::shared_ptr<Transaction> TransactionPtr;
367
367
 
368
368
  enum ClientType {
369
369
  UNINITIALIZED,
@@ -407,10 +407,10 @@ private:
407
407
  }
408
408
  };
409
409
 
410
- typedef shared_ptr<Client> ClientPtr;
410
+ typedef boost::shared_ptr<Client> ClientPtr;
411
411
  typedef map<string, TransactionPtr> TransactionMap;
412
412
 
413
- typedef shared_ptr<FilterSupport::Filter> FilterPtr;
413
+ typedef boost::shared_ptr<FilterSupport::Filter> FilterPtr;
414
414
 
415
415
  RemoteSender remoteSender;
416
416
  ev::timer garbageCollectionTimer;
@@ -543,7 +543,7 @@ private:
543
543
  LogSinkCache::iterator it = logSinkCache.find(cacheKey);
544
544
  if (it == logSinkCache.end()) {
545
545
  trimLogSinkCache(MAX_LOG_SINK_CACHE_SIZE - 1);
546
- result = make_shared<LogFileSink>(this, dumpFile);
546
+ result = boost::make_shared<LogFileSink>(this, dumpFile);
547
547
  pair<LogSinkCache::iterator, bool> p =
548
548
  logSinkCache.insert(make_pair(cacheKey, result));
549
549
  result->cacheIterator = p.first;
@@ -573,7 +573,7 @@ private:
573
573
  LogSinkCache::iterator it = logSinkCache.find(cacheKey);
574
574
  if (it == logSinkCache.end()) {
575
575
  trimLogSinkCache(MAX_LOG_SINK_CACHE_SIZE - 1);
576
- result = make_shared<RemoteSink>(this, unionStationKey,
576
+ result = boost::make_shared<RemoteSink>(this, unionStationKey,
577
577
  nodeName, category);
578
578
  pair<LogSinkCache::iterator, bool> p =
579
579
  logSinkCache.insert(make_pair(cacheKey, result));
@@ -625,7 +625,7 @@ private:
625
625
  // TODO: garbage collect filters based on time
626
626
  FilterPtr filter = filters.get(source);
627
627
  if (filter == NULL) {
628
- filter = make_shared<FilterSupport::Filter>(source);
628
+ filter = boost::make_shared<FilterSupport::Filter>(source);
629
629
  filters.set(source, filter);
630
630
  }
631
631
  return *filter;
@@ -694,7 +694,7 @@ private:
694
694
  }
695
695
 
696
696
  bool isDirectory(const string &dir, struct dirent *entry) const {
697
- #if defined(__sun__) || defined(_AIX)
697
+ #if defined(__sun__) || defined(sun) || defined(_AIX)
698
698
  string path = dir;
699
699
  path.append("/");
700
700
  path.append(entry->d_name);
@@ -869,7 +869,7 @@ protected:
869
869
  return true;
870
870
  }
871
871
 
872
- transaction = make_shared<Transaction>(this, ev_now(getLoop()));
872
+ transaction = boost::make_shared<Transaction>(this, ev_now(getLoop()));
873
873
  if (unionStationKey.empty() || unionStationKey == "-") {
874
874
  char tempNodeId[MD5_HEX_SIZE];
875
875
 
@@ -1196,7 +1196,7 @@ public:
1196
1196
  }
1197
1197
  };
1198
1198
 
1199
- typedef shared_ptr<LoggingServer> LoggingServerPtr;
1199
+ typedef boost::shared_ptr<LoggingServer> LoggingServerPtr;
1200
1200
 
1201
1201
 
1202
1202
  } // namespace Passenger
@@ -75,7 +75,7 @@ struct WorkingObjects {
75
75
  FileDescriptor serverSocketFd;
76
76
  AccountsDatabasePtr adminAccountsDatabase;
77
77
  MessageServerPtr adminServer;
78
- shared_ptr<oxt::thread> adminServerThread;
78
+ boost::shared_ptr<oxt::thread> adminServerThread;
79
79
  AccountsDatabasePtr accountsDatabase;
80
80
  LoggingServerPtr loggingServer;
81
81
 
@@ -155,7 +155,7 @@ initializeOptions(WorkingObjects &wo) {
155
155
  groupname = agentsOptions.get("analytics_log_group", false);
156
156
  adminToolStatusPassword = agentsOptions.get("admin_tool_status_password");
157
157
 
158
- wo.resourceLocator = make_shared<ResourceLocator>(passengerRoot);
158
+ wo.resourceLocator = boost::make_shared<ResourceLocator>(passengerRoot);
159
159
  agentsOptions.set("union_station_gateway_cert", findUnionStationGatewayCert(
160
160
  *wo.resourceLocator, agentsOptions.get("union_station_gateway_cert", false)));
161
161
  }
@@ -175,9 +175,9 @@ initializePrivilegedWorkingObjects(WorkingObjects &wo) {
175
175
  } while (ret == -1 && errno == EINTR);
176
176
  }
177
177
 
178
- wo.adminAccountsDatabase = make_shared<AccountsDatabase>();
178
+ wo.adminAccountsDatabase = boost::make_shared<AccountsDatabase>();
179
179
  wo.adminAccountsDatabase->add("_passenger-status", adminToolStatusPassword, false);
180
- wo.adminServer = make_shared<MessageServer>(parseUnixSocketAddress(adminSocketAddress),
180
+ wo.adminServer = boost::make_shared<MessageServer>(parseUnixSocketAddress(adminSocketAddress),
181
181
  wo.adminAccountsDatabase);
182
182
  }
183
183
 
@@ -266,16 +266,16 @@ createEventLoop() {
266
266
  static void
267
267
  initializeUnprivilegedWorkingObjects(WorkingObjects &wo) {
268
268
  eventLoop = createEventLoop();
269
- wo.accountsDatabase = make_shared<AccountsDatabase>();
269
+ wo.accountsDatabase = boost::make_shared<AccountsDatabase>();
270
270
  wo.accountsDatabase->add("logging", password, false);
271
271
 
272
- wo.loggingServer = make_shared<LoggingServer>(eventLoop, wo.serverSocketFd,
272
+ wo.loggingServer = boost::make_shared<LoggingServer>(eventLoop, wo.serverSocketFd,
273
273
  wo.accountsDatabase, agentsOptions);
274
274
  loggingServer = wo.loggingServer.get();
275
275
 
276
- wo.adminServer->addHandler(make_shared<AdminController>(wo.loggingServer));
277
- function<void ()> adminServerFunc = boost::bind(&MessageServer::mainLoop, wo.adminServer.get());
278
- wo.adminServerThread = make_shared<oxt::thread>(
276
+ wo.adminServer->addHandler(boost::make_shared<AdminController>(wo.loggingServer));
277
+ boost::function<void ()> adminServerFunc = boost::bind(&MessageServer::mainLoop, wo.adminServer.get());
278
+ wo.adminServerThread = boost::make_shared<oxt::thread>(
279
279
  boost::bind(runAndPrintExceptions, adminServerFunc, true),
280
280
  "AdminServer thread", MESSAGE_SERVER_THREAD_STACK_SIZE
281
281
  );