passenger 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +60 -19
  3. data/CONTRIBUTORS +2 -0
  4. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +56 -3
  5. data/dev/copy_boost_headers +1 -0
  6. data/package.json +1 -1
  7. data/resources/templates/standalone/http.erb +1 -0
  8. data/src/agent/Core/Config.h +13 -1
  9. data/src/agent/Core/Controller/Config.h +1 -1
  10. data/src/agent/Core/CoreMain.cpp +1 -0
  11. data/src/agent/Core/SpawningKit/Context.h +1 -0
  12. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  13. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  14. data/src/agent/Watchdog/Config.h +14 -1
  15. data/src/agent/Watchdog/WatchdogMain.cpp +7 -0
  16. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
  17. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +5 -0
  18. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +15 -0
  19. data/src/apache2_module/Hooks.cpp +1 -0
  20. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +11 -0
  21. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +13 -0
  22. data/src/cxx_supportlib/Constants.h +1 -1
  23. data/src/cxx_supportlib/LoggingKit/Config.h +1 -0
  24. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  25. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +2 -2
  26. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +11 -7
  27. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +46 -37
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +16 -15
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +45 -26
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +33 -0
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +1 -1
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +38 -14
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +2 -0
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +1 -1
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +3 -1
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +6 -1
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -4
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +4 -4
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +3 -3
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +4 -4
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +4 -4
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +8 -6
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +17 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +50 -5
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +2 -1
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +1 -1
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +3 -2
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +4 -3
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +5 -3
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +13 -12
  54. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +10 -10
  55. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
  56. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
  57. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +8 -8
  58. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
  59. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
  62. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +3 -3
  63. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +89 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +83 -74
  65. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -33
  66. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +5 -5
  67. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  68. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -3
  69. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
  70. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +19 -19
  72. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -0
  73. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +5 -2
  74. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +5 -1
  75. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +6 -2
  76. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +368 -52
  79. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -1
  80. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +6 -3
  81. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -0
  82. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  83. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +6 -1
  85. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +9 -4
  93. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
  96. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +13 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +2 -2
  98. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +14 -4
  99. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -4
  100. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +262 -2
  101. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +4 -3
  102. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +1 -1
  103. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +7 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +22 -19
  105. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +833 -459
  106. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +24 -6
  107. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +2 -1
  108. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +61 -5
  109. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +33 -8
  110. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +132 -41
  111. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +16 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +54 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +58 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +28 -23
  115. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +167 -115
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +55 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +167 -29
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +18 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +389 -3
  124. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +262 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +52 -8
  126. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +364 -0
  127. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -2
  128. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -2
  130. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +286 -6
  131. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +56 -8
  132. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +43 -6
  133. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +100 -31
  134. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +2 -1
  135. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +126 -69
  136. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +75 -51
  137. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +136 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +101 -130
  141. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +2 -2
  142. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +9 -2
  146. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
  147. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +5 -0
  148. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
  152. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +5 -5
  153. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
  154. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +62 -58
  155. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +1 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +29 -29
  157. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +38 -40
  158. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +4 -4
  159. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +44 -44
  160. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +39 -39
  161. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +15 -15
  162. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +7 -7
  163. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +14 -14
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +9 -9
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +2 -2
  170. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +6 -6
  171. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +1 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +1 -1
  175. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +3 -3
  176. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +33 -14
  177. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +12 -12
  178. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +4 -4
  179. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +3 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +39 -39
  181. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +61 -61
  182. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +4 -4
  183. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +66 -66
  184. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +54 -54
  185. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +6 -2
  186. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +3 -3
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
  189. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +23 -23
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +4 -4
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +13 -13
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -4
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +5 -5
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +5 -2
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +18 -13
  200. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +4 -4
  201. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
  202. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +14 -8
  204. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
  205. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +13 -13
  206. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +27 -0
  207. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +29 -6
  209. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +12 -3
  210. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +1 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +8 -8
  214. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +3 -3
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +23 -3
  217. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
  218. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -11
  219. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +20 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  221. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +211 -101
  222. data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
  223. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
  224. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +5 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +44 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +73 -0
  230. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +3 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
  232. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +52 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  234. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +6 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -2
  236. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +17 -8
  238. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +4 -0
  239. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +4 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +166 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +513 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4106 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
  245. data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +237 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -0
  248. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +13 -5
  249. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
  251. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
  252. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
  253. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +14 -6
  254. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
  255. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +6 -2
  256. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +55 -37
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +3 -2
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +7 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +3 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +5 -2
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -3
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +15 -4
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -2
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +12 -3
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +7 -3
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +6 -2
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -5
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -8
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +3 -3
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -8
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +12 -11
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +2 -10
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +60 -115
  280. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +3 -3
  281. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +2 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +2 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +2 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +2 -1
  285. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +2 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +2 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +2 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +2 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +2 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +2 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +2 -1
  292. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +2 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +2 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +2 -1
  295. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +2 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +2 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +2 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +2 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +3 -3
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -8
  301. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
  302. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +57 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +101 -0
  304. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +141 -0
  305. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_posix.hpp +132 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +775 -588
  307. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
  308. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +6 -0
  309. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
  310. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +3 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
  314. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
  315. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +24 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +10 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
  318. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +2 -2
  320. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +2 -2
  321. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +8 -53
  322. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +73 -4
  323. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +6 -6
  324. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +14 -9
  325. data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
  326. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +9 -8
  327. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +1 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +21 -19
  329. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
  330. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +9 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
  332. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +501 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -2
  338. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +557 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
  342. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +5 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +5 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +5 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
  354. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +5 -15
  355. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +16 -6
  356. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +3 -1
  357. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
  358. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
  359. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
  360. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
  361. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
  362. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
  363. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
  364. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
  365. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
  366. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
  367. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
  368. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +104 -63
  370. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +4 -4
  374. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -3
  375. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +1 -1
  376. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +4 -5
  377. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +5 -5
  378. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -9
  379. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +3 -3
  380. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +2 -2
  381. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +6 -6
  382. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +4 -4
  384. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +2 -2
  385. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +2 -2
  386. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +16 -16
  387. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +5 -5
  388. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +201 -201
  389. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +301 -301
  390. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +401 -401
  391. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +101 -101
  392. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +3 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +2 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +26 -6
  395. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  396. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +16 -0
  397. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +13 -0
  398. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +24 -0
  399. data/src/nginx_module/Configuration.c +9 -0
  400. data/src/nginx_module/ContentHandler.c +7 -1
  401. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +5 -0
  402. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +13 -0
  403. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
  404. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
  405. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +6 -0
  406. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +12 -0
  407. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +4 -0
  408. data/src/nginx_module/ngx_http_passenger_module.c +1 -0
  409. data/src/ruby_supportlib/phusion_passenger.rb +7 -7
  410. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +7 -0
  411. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +15 -0
  412. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  413. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +5 -0
  414. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -0
  415. metadata +33 -6
  416. data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
  417. data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
  418. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
  419. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
@@ -654,6 +654,9 @@ usage() {
654
654
  printf(" --instance-registry-dir Directory to register instance into.\n");
655
655
  printf(" Default: %s\n", getSystemTempDir());
656
656
  printf("\n");
657
+ printf(" --spawn-dir Directory for spawn handshakes.\n");
658
+ printf(" Default: %s\n", getSystemTempDir());
659
+ printf("\n");
657
660
  printf(" --no-user-switching Disables user switching support [A]\n");
658
661
  printf(" --default-user NAME Default user to start apps as, when user\n");
659
662
  printf(" switching is enabled. Default: " DEFAULT_WEB_APP_USER "\n");
@@ -774,6 +777,9 @@ parseOptions(int argc, const char *argv[], ConfigKit::Store &config) {
774
777
  } else if (p.isValueFlag(argc, i, argv[i], '\0', "--instance-registry-dir")) {
775
778
  updates["instance_registry_dir"] = argv[i + 1];
776
779
  i += 2;
780
+ } else if (p.isValueFlag(argc, i, argv[i], '\0', "--spawn-dir")) {
781
+ updates["spawn_dir"] = argv[i + 1];
782
+ i += 2;
777
783
  } else if (p.isFlag(argv[i], '\0', "--no-user-switching")) {
778
784
  updates["user_switching"] = false;
779
785
  i++;
@@ -1111,6 +1117,7 @@ initializeWorkingObjects(const WorkingObjectsPtr &wo, InstanceDirToucherPtr &ins
1111
1117
 
1112
1118
  // check if path is safe
1113
1119
  warnIfInstanceDirVulnerable(watchdogConfig->get("instance_registry_dir").asString());
1120
+ warnIfInstanceDirVulnerable(watchdogConfig->get("spawn_dir").asString());
1114
1121
 
1115
1122
  wo->instanceDir = boost::make_shared<InstanceDirectory>(instanceOptions,
1116
1123
  watchdogConfig->get("instance_registry_dir").asString());
@@ -382,6 +382,11 @@ extern "C" const command_rec passenger_commands[] = {
382
382
  NULL,
383
383
  RSRC_CONF,
384
384
  "The Phusion Passenger socket backlog."),
385
+ AP_INIT_TAKE1("PassengerSpawnDir",
386
+ (Take1Func) cmd_passenger_spawn_dir,
387
+ NULL,
388
+ RSRC_CONF,
389
+ "The directory for Phusion Passenger used during child spawning."),
385
390
  AP_INIT_TAKE1("PassengerSpawnMethod",
386
391
  (Take1Func) cmd_passenger_spawn_method,
387
392
  NULL,
@@ -128,6 +128,11 @@ ConfigManifestGenerator::autoGenerated_setGlobalConfigDefaults() {
128
128
  "PassengerSocketBacklog",
129
129
  DEFAULT_SOCKET_BACKLOG);
130
130
 
131
+ addOptionsContainerDynamicDefault(
132
+ globalConfigContainer,
133
+ "PassengerSpawnDir",
134
+ P_STATIC_STRING("Either $TMPDIR or /tmp"));
135
+
131
136
  addOptionsContainerStaticDefaultInt(
132
137
  globalConfigContainer,
133
138
  "PassengerStatThrottleRate",
@@ -832,6 +832,21 @@ cmd_passenger_socket_backlog(cmd_parms *cmd, void *pcfg, const char *arg) {
832
832
  return setIntConfig(cmd, arg, serverConfig.socketBacklog, 0);
833
833
  }
834
834
 
835
+ static const char *
836
+ cmd_passenger_spawn_dir(cmd_parms *cmd, void *pcfg, const char *arg) {
837
+ const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
838
+ if (err != NULL) {
839
+ ap_log_perror(APLOG_MARK, APLOG_STARTUP, 0, cmd->temp_pool,
840
+ "WARNING: %s", err);
841
+ }
842
+
843
+ serverConfig.spawnDirSourceFile = cmd->directive->filename;
844
+ serverConfig.spawnDirSourceLine = cmd->directive->line_num;
845
+ serverConfig.spawnDirExplicitlySet = true;
846
+ serverConfig.spawnDir = arg;
847
+ return NULL;
848
+ }
849
+
835
850
  static const char *
836
851
  cmd_passenger_start_timeout(cmd_parms *cmd, void *pcfg, const char *arg) {
837
852
  const char *err = ap_check_cmd_context(cmd, NOT_IN_FILES);
@@ -1334,6 +1334,7 @@ public:
1334
1334
  config["controller_socket_backlog"] = serverConfig.socketBacklog;
1335
1335
  config["controller_file_buffered_channel_buffer_dir"] = nonEmptyString(serverConfig.dataBufferDir);
1336
1336
  config["instance_registry_dir"] = nonEmptyString(serverConfig.instanceRegistryDir);
1337
+ config["spawn_dir"] = nonEmptyString(serverConfig.spawnDir);
1337
1338
  config["security_update_checker_disabled"] = serverConfig.disableSecurityUpdateCheck;
1338
1339
  config["security_update_checker_proxy_url"] = nonEmptyString(serverConfig.securityUpdateCheckProxy);
1339
1340
  config["telemetry_collector_disabled"] = serverConfig.disableAnonymousTelemetry;
@@ -312,6 +312,17 @@ ConfigManifestGenerator::autoGenerated_generateConfigManifestForServerConfig() {
312
312
  serverConfig.socketBacklogSourceLine);
313
313
  hierarchyMember["value"] = serverConfig.socketBacklog;
314
314
  }
315
+ if (serverConfig.spawnDirExplicitlySet) {
316
+ Json::Value &optionContainer = findOrCreateOptionContainer(globalOptionsContainer,
317
+ "PassengerSpawnDir",
318
+ sizeof("PassengerSpawnDir") - 1);
319
+ Json::Value &hierarchyMember = addOptionContainerHierarchyMember(optionContainer,
320
+ serverConfig.spawnDirSourceFile,
321
+ serverConfig.spawnDirSourceLine);
322
+ hierarchyMember["value"] = Json::Value(
323
+ serverConfig.spawnDir.data(),
324
+ serverConfig.spawnDir.data() + serverConfig.spawnDir.size());
325
+ }
315
326
  if (serverConfig.statThrottleRateExplicitlySet) {
316
327
  Json::Value &optionContainer = findOrCreateOptionContainer(globalOptionsContainer,
317
328
  "PassengerStatThrottleRate",
@@ -197,6 +197,11 @@ struct AutoGeneratedServerConfig {
197
197
  */
198
198
  StaticString securityUpdateCheckProxy;
199
199
 
200
+ /*
201
+ * The directory for Phusion Passenger used during child spawning.
202
+ */
203
+ StaticString spawnDir;
204
+
200
205
  /*
201
206
  * Prestart the given web applications during startup.
202
207
  */
@@ -231,6 +236,7 @@ struct AutoGeneratedServerConfig {
231
236
  StaticString logFileSourceFile;
232
237
  StaticString rootSourceFile;
233
238
  StaticString securityUpdateCheckProxySourceFile;
239
+ StaticString spawnDirSourceFile;
234
240
  StaticString prestartURLsSourceFile;
235
241
 
236
242
  unsigned int disableAnonymousTelemetrySourceLine;
@@ -261,6 +267,7 @@ struct AutoGeneratedServerConfig {
261
267
  unsigned int logFileSourceLine;
262
268
  unsigned int rootSourceLine;
263
269
  unsigned int securityUpdateCheckProxySourceLine;
270
+ unsigned int spawnDirSourceLine;
264
271
  unsigned int prestartURLsSourceLine;
265
272
 
266
273
  bool disableAnonymousTelemetryExplicitlySet: 1;
@@ -291,6 +298,7 @@ struct AutoGeneratedServerConfig {
291
298
  bool logFileExplicitlySet: 1;
292
299
  bool rootExplicitlySet: 1;
293
300
  bool securityUpdateCheckProxyExplicitlySet: 1;
301
+ bool spawnDirExplicitlySet: 1;
294
302
  bool prestartURLsExplicitlySet: 1;
295
303
 
296
304
 
@@ -349,6 +357,9 @@ struct AutoGeneratedServerConfig {
349
357
  /*
350
358
  * securityUpdateCheckProxy: default initialized
351
359
  */
360
+ /*
361
+ * spawnDir: default initialized
362
+ */
352
363
  /*
353
364
  * prestartURLs: default initialized
354
365
  */
@@ -381,6 +392,7 @@ struct AutoGeneratedServerConfig {
381
392
  logFileSourceLine = 0;
382
393
  rootSourceLine = 0;
383
394
  securityUpdateCheckProxySourceLine = 0;
395
+ spawnDirSourceLine = 0;
384
396
  prestartURLsSourceLine = 0;
385
397
 
386
398
  disableAnonymousTelemetryExplicitlySet = false;
@@ -411,6 +423,7 @@ struct AutoGeneratedServerConfig {
411
423
  logFileExplicitlySet = false;
412
424
  rootExplicitlySet = false;
413
425
  securityUpdateCheckProxyExplicitlySet = false;
426
+ spawnDirExplicitlySet = false;
414
427
  prestartURLsExplicitlySet = false;
415
428
  }
416
429
 
@@ -81,7 +81,7 @@
81
81
  #define PASSENGER_API_VERSION_MAJOR 0
82
82
  #define PASSENGER_API_VERSION_MINOR 3
83
83
  #define PASSENGER_DEFAULT_USER "nobody"
84
- #define PASSENGER_VERSION "6.0.2"
84
+ #define PASSENGER_VERSION "6.0.3"
85
85
  #define POOL_HELPER_THREAD_STACK_SIZE 262144
86
86
  #define PROCESS_SHUTDOWN_TIMEOUT 60
87
87
  #define PROCESS_SHUTDOWN_TIMEOUT_DISPLAY "1 minute"
@@ -51,6 +51,7 @@ using namespace std;
51
51
  *
52
52
  * app_output_log_level string - default("notice")
53
53
  * buffer_logs boolean - default(false)
54
+ * disable_log_prefix boolean - default(false)
54
55
  * file_descriptor_log_target any - -
55
56
  * level string - default("notice")
56
57
  * redirect_stderr boolean - default(true)
@@ -112,7 +112,7 @@ private:
112
112
  static int parseHexDigit(char ch) {
113
113
  if (ch >= 'A' && ch <= 'F') {
114
114
  return 10 + ch - 'A';
115
- } else if (ch >= 'a' && ch <= 'z') {
115
+ } else if (ch >= 'a' && ch <= 'f') {
116
116
  return 10 + ch - 'a';
117
117
  } else {
118
118
  return ch - '0';
@@ -43,7 +43,7 @@ _linuxAutoDetectInContainer() {
43
43
  return (file.length() > 0);
44
44
  }
45
45
 
46
- if (getuid() == 0) {
46
+ if (geteuid() == 0) {
47
47
  if (fileExists("/proc/1/environ")) {
48
48
  string file = unsafeReadFile("/proc/1/environ");
49
49
  if (file.size() > 0) {
@@ -59,7 +59,7 @@ _linuxAutoDetectInContainer() {
59
59
 
60
60
  if (fileExists("/proc/1/sched")) {
61
61
  string file = unsafeReadFile("/proc/1/sched");
62
- if (file.length() >= 0) {
62
+ if (file.length() > 0) {
63
63
  const char t = file[0];
64
64
  if (t == '\0') {
65
65
  return false;
@@ -295,6 +295,10 @@ private:
295
295
  bool reconnectAfterReply;
296
296
  bool shuttingDown;
297
297
 
298
+ unsigned int secondsToMilis(double seconds) {
299
+ return (unsigned int) (seconds * 1000.0);
300
+ }
301
+
298
302
  /**
299
303
  * It could happen that a certain method or handler is invoked
300
304
  * for a connection that has already been closed. For example,
@@ -528,7 +532,7 @@ private:
528
532
  }
529
533
  }
530
534
 
531
- conn->set_proxy_timeout(config["proxy_timeout"].asDouble() * 1000, ec);
535
+ conn->set_proxy_timeout(secondsToMilis(config["proxy_timeout"].asDouble()), ec);
532
536
  if (ec) {
533
537
  P_ERROR(getLogPrefix()
534
538
  << "Error setting proxy timeout to "
@@ -538,9 +542,9 @@ private:
538
542
  }
539
543
  }
540
544
 
541
- conn->set_open_handshake_timeout(config["connect_timeout"].asDouble() * 1000);
542
- conn->set_pong_timeout(config["ping_timeout"].asDouble() * 1000);
543
- conn->set_close_handshake_timeout(config["close_timeout"].asDouble() * 1000);
545
+ conn->set_open_handshake_timeout(secondsToMilis(config["connect_timeout"].asDouble()));
546
+ conn->set_pong_timeout(secondsToMilis(config["ping_timeout"].asDouble()));
547
+ conn->set_close_handshake_timeout(secondsToMilis(config["close_timeout"].asDouble()));
544
548
 
545
549
  return true;
546
550
  }
@@ -566,7 +570,7 @@ private:
566
570
  void scheduleReconnect() {
567
571
  P_NOTICE(getLogPrefix() << "Reestablishing connection in " <<
568
572
  config["reconnect_timeout"].asDouble() << " seconds");
569
- restartTimer(config["reconnect_timeout"].asDouble() * 1000);
573
+ restartTimer(secondsToMilis(config["reconnect_timeout"].asDouble()));
570
574
  }
571
575
 
572
576
  void closeConnection(websocketpp::close::status::value code,
@@ -626,7 +630,7 @@ private:
626
630
  buffer.clear();
627
631
  P_DEBUG(getLogPrefix() << "Scheduling next ping in " <<
628
632
  config["ping_interval"].asDouble() << " seconds");
629
- restartTimer(config["ping_interval"].asDouble() * 1000);
633
+ restartTimer(secondsToMilis(config["ping_interval"].asDouble()));
630
634
  }
631
635
 
632
636
  void onConnectFailed(ConnectionWeakPtr wconn) {
@@ -741,7 +745,7 @@ private:
741
745
 
742
746
  P_DEBUG(getLogPrefix() << "Pong received. Scheduling next ping in " <<
743
747
  config["ping_interval"].asDouble() << " seconds");
744
- restartTimer(config["ping_interval"].asDouble() * 1000);
748
+ restartTimer(secondsToMilis(config["ping_interval"].asDouble()));
745
749
  }
746
750
 
747
751
  void onMessage(ConnectionWeakPtr wconn, MessagePtr msg) {
@@ -43,7 +43,6 @@ namespace boost {
43
43
  The result is given as an \c iterator_range delimiting the match.
44
44
 
45
45
  \param Search A substring to be searched for.
46
- \param Comp An element comparison predicate
47
46
  \return An instance of the \c first_finder object
48
47
  */
49
48
  template<typename RangeT>
@@ -84,7 +83,6 @@ namespace boost {
84
83
  The result is given as an \c iterator_range delimiting the match.
85
84
 
86
85
  \param Search A substring to be searched for.
87
- \param Comp An element comparison predicate
88
86
  \return An instance of the \c last_finder object
89
87
  */
90
88
  template<typename RangeT>
@@ -124,7 +122,6 @@ namespace boost {
124
122
 
125
123
  \param Search A substring to be searched for.
126
124
  \param Nth An index of the match to be find
127
- \param Comp An element comparison predicate
128
125
  \return An instance of the \c nth_finder object
129
126
  */
130
127
  template<typename RangeT>
@@ -230,7 +227,6 @@ namespace boost {
230
227
 
231
228
  \param Begin Beginning of the range
232
229
  \param End End of the range
233
- \param Range The range.
234
230
  \return An instance of the \c range_finger object
235
231
  */
236
232
  template< typename ForwardIteratorT >
@@ -23,7 +23,6 @@
23
23
  #include <string>
24
24
  #include <vector>
25
25
  #include <boost/asio/detail/array_fwd.hpp>
26
- #include <boost/asio/detail/is_buffer_sequence.hpp>
27
26
  #include <boost/asio/detail/string_view.hpp>
28
27
  #include <boost/asio/detail/throw_exception.hpp>
29
28
  #include <boost/asio/detail/type_traits.hpp>
@@ -347,41 +346,6 @@ public:
347
346
 
348
347
  #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
349
348
 
350
- /// Trait to determine whether a type satisfies the MutableBufferSequence
351
- /// requirements.
352
- template <typename T>
353
- struct is_mutable_buffer_sequence
354
- #if defined(GENERATING_DOCUMENTATION)
355
- : integral_constant<bool, automatically_determined>
356
- #else // defined(GENERATING_DOCUMENTATION)
357
- : boost::asio::detail::is_buffer_sequence<T, mutable_buffer>
358
- #endif // defined(GENERATING_DOCUMENTATION)
359
- {
360
- };
361
-
362
- /// Trait to determine whether a type satisfies the ConstBufferSequence
363
- /// requirements.
364
- template <typename T>
365
- struct is_const_buffer_sequence
366
- #if defined(GENERATING_DOCUMENTATION)
367
- : integral_constant<bool, automatically_determined>
368
- #else // defined(GENERATING_DOCUMENTATION)
369
- : boost::asio::detail::is_buffer_sequence<T, const_buffer>
370
- #endif // defined(GENERATING_DOCUMENTATION)
371
- {
372
- };
373
-
374
- /// Trait to determine whether a type satisfies the DynamicBuffer requirements.
375
- template <typename T>
376
- struct is_dynamic_buffer
377
- #if defined(GENERATING_DOCUMENTATION)
378
- : integral_constant<bool, automatically_determined>
379
- #else // defined(GENERATING_DOCUMENTATION)
380
- : boost::asio::detail::is_dynamic_buffer<T>
381
- #endif // defined(GENERATING_DOCUMENTATION)
382
- {
383
- };
384
-
385
349
  /// (Deprecated: Use the socket/descriptor wait() and async_wait() member
386
350
  /// functions.) An implementation of both the ConstBufferSequence and
387
351
  /// MutableBufferSequence concepts to represent a null buffer sequence.
@@ -1404,7 +1368,7 @@ inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1404
1368
  );
1405
1369
  }
1406
1370
 
1407
- /// Create a new non-modifiable buffer that represents the given string.
1371
+ /// Create a new modifiable buffer that represents the given string.
1408
1372
  /**
1409
1373
  * @returns A mutable_buffer value equivalent to:
1410
1374
  * @code mutable_buffer(
@@ -2159,6 +2123,51 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target,
2159
2123
  } // namespace asio
2160
2124
  } // namespace boost
2161
2125
 
2126
+ #include <boost/asio/detail/pop_options.hpp>
2127
+ #include <boost/asio/detail/is_buffer_sequence.hpp>
2128
+ #include <boost/asio/detail/push_options.hpp>
2129
+
2130
+ namespace boost {
2131
+ namespace asio {
2132
+
2133
+ /// Trait to determine whether a type satisfies the MutableBufferSequence
2134
+ /// requirements.
2135
+ template <typename T>
2136
+ struct is_mutable_buffer_sequence
2137
+ #if defined(GENERATING_DOCUMENTATION)
2138
+ : integral_constant<bool, automatically_determined>
2139
+ #else // defined(GENERATING_DOCUMENTATION)
2140
+ : boost::asio::detail::is_buffer_sequence<T, mutable_buffer>
2141
+ #endif // defined(GENERATING_DOCUMENTATION)
2142
+ {
2143
+ };
2144
+
2145
+ /// Trait to determine whether a type satisfies the ConstBufferSequence
2146
+ /// requirements.
2147
+ template <typename T>
2148
+ struct is_const_buffer_sequence
2149
+ #if defined(GENERATING_DOCUMENTATION)
2150
+ : integral_constant<bool, automatically_determined>
2151
+ #else // defined(GENERATING_DOCUMENTATION)
2152
+ : boost::asio::detail::is_buffer_sequence<T, const_buffer>
2153
+ #endif // defined(GENERATING_DOCUMENTATION)
2154
+ {
2155
+ };
2156
+
2157
+ /// Trait to determine whether a type satisfies the DynamicBuffer requirements.
2158
+ template <typename T>
2159
+ struct is_dynamic_buffer
2160
+ #if defined(GENERATING_DOCUMENTATION)
2161
+ : integral_constant<bool, automatically_determined>
2162
+ #else // defined(GENERATING_DOCUMENTATION)
2163
+ : boost::asio::detail::is_dynamic_buffer<T>
2164
+ #endif // defined(GENERATING_DOCUMENTATION)
2165
+ {
2166
+ };
2167
+
2168
+ } // namespace asio
2169
+ } // namespace boost
2170
+
2162
2171
  #include <boost/asio/detail/pop_options.hpp>
2163
2172
 
2164
2173
  #endif // BOOST_ASIO_BUFFER_HPP
@@ -59,7 +59,8 @@ struct is_endpoint_sequence
59
59
  /**
60
60
  * @defgroup connect boost::asio::connect
61
61
  *
62
- * @brief Establishes a socket connection by trying each endpoint in a sequence.
62
+ * @brief The @c connect function is a composed operation that establishes a
63
+ * socket connection by trying each endpoint in a sequence.
63
64
  */
64
65
  /*@{*/
65
66
 
@@ -132,8 +133,8 @@ typename Protocol::endpoint connect(
132
133
  EndpointSequence>::value>::type* = 0);
133
134
 
134
135
  #if !defined(BOOST_ASIO_NO_DEPRECATED)
135
- /// (Deprecated.) Establishes a socket connection by trying each endpoint in a
136
- /// sequence.
136
+ /// (Deprecated: Use range overload.) Establishes a socket connection by trying
137
+ /// each endpoint in a sequence.
137
138
  /**
138
139
  * This function attempts to connect a socket to one of a sequence of
139
140
  * endpoints. It does this by repeated calls to the socket's @c connect member
@@ -160,8 +161,8 @@ template <typename Protocol BOOST_ASIO_SVC_TPARAM, typename Iterator>
160
161
  Iterator connect(basic_socket<Protocol BOOST_ASIO_SVC_TARG>& s, Iterator begin,
161
162
  typename enable_if<!is_endpoint_sequence<Iterator>::value>::type* = 0);
162
163
 
163
- /// (Deprecated.) Establishes a socket connection by trying each endpoint in a
164
- /// sequence.
164
+ /// (Deprecated: Use range overload.) Establishes a socket connection by trying
165
+ /// each endpoint in a sequence.
165
166
  /**
166
167
  * This function attempts to connect a socket to one of a sequence of
167
168
  * endpoints. It does this by repeated calls to the socket's @c connect member
@@ -387,8 +388,8 @@ typename Protocol::endpoint connect(
387
388
  EndpointSequence>::value>::type* = 0);
388
389
 
389
390
  #if !defined(BOOST_ASIO_NO_DEPRECATED)
390
- /// (Deprecated.) Establishes a socket connection by trying each endpoint in a
391
- /// sequence.
391
+ /// (Deprecated: Use range overload.) Establishes a socket connection by trying
392
+ /// each endpoint in a sequence.
392
393
  /**
393
394
  * This function attempts to connect a socket to one of a sequence of
394
395
  * endpoints. It does this by repeated calls to the socket's @c connect member
@@ -428,8 +429,8 @@ Iterator connect(basic_socket<Protocol BOOST_ASIO_SVC_TARG>& s,
428
429
  Iterator begin, ConnectCondition connect_condition,
429
430
  typename enable_if<!is_endpoint_sequence<Iterator>::value>::type* = 0);
430
431
 
431
- /// (Deprecated.) Establishes a socket connection by trying each endpoint in a
432
- /// sequence.
432
+ /// (Deprecated: Use range overload.) Establishes a socket connection by trying
433
+ /// each endpoint in a sequence.
433
434
  /**
434
435
  * This function attempts to connect a socket to one of a sequence of
435
436
  * endpoints. It does this by repeated calls to the socket's @c connect member
@@ -603,8 +604,8 @@ Iterator connect(basic_socket<Protocol BOOST_ASIO_SVC_TARG>& s,
603
604
  /**
604
605
  * @defgroup async_connect boost::asio::async_connect
605
606
  *
606
- * @brief Asynchronously establishes a socket connection by trying each
607
- * endpoint in a sequence.
607
+ * @brief The @c async_connect function is a composed asynchronous operation
608
+ * that establishes a socket connection by trying each endpoint in a sequence.
608
609
  */
609
610
  /*@{*/
610
611
 
@@ -680,8 +681,8 @@ async_connect(basic_socket<Protocol BOOST_ASIO_SVC_TARG>& s,
680
681
  EndpointSequence>::value>::type* = 0);
681
682
 
682
683
  #if !defined(BOOST_ASIO_NO_DEPRECATED)
683
- /// (Deprecated.) Asynchronously establishes a socket connection by trying each
684
- /// endpoint in a sequence.
684
+ /// (Deprecated: Use range overload.) Asynchronously establishes a socket
685
+ /// connection by trying each endpoint in a sequence.
685
686
  /**
686
687
  * This function attempts to connect a socket to one of a sequence of
687
688
  * endpoints. It does this by repeated calls to the socket's @c async_connect
@@ -887,8 +888,8 @@ async_connect(basic_socket<Protocol BOOST_ASIO_SVC_TARG>& s,
887
888
  EndpointSequence>::value>::type* = 0);
888
889
 
889
890
  #if !defined(BOOST_ASIO_NO_DEPRECATED)
890
- /// (Deprecated.) Asynchronously establishes a socket connection by trying each
891
- /// endpoint in a sequence.
891
+ /// (Deprecated: Use range overload.) Asynchronously establishes a socket
892
+ /// connection by trying each endpoint in a sequence.
892
893
  /**
893
894
  * This function attempts to connect a socket to one of a sequence of
894
895
  * endpoints. It does this by repeated calls to the socket's @c async_connect