passenger 6.0.2 → 6.0.7

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 (468) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +152 -19
  3. data/CONTRIBUTING.md +1 -1
  4. data/CONTRIBUTORS +5 -0
  5. data/bin/passenger-install-nginx-module +1 -1
  6. data/bin/passenger-memory-stats +65 -12
  7. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +56 -3
  8. data/dev/copy_boost_headers +1 -0
  9. data/package.json +1 -1
  10. data/passenger.gemspec +9 -1
  11. data/resources/templates/error_renderer/with_details/dist/bundle.js +1 -1
  12. data/resources/templates/error_renderer/with_details/src/GetHelpView.jsx +1 -1
  13. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
  14. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
  15. data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
  16. data/resources/templates/standalone/http.erb +1 -0
  17. data/resources/templates/standalone/rails_asset_pipeline.erb +1 -1
  18. data/resources/templates/standalone/server.erb +1 -0
  19. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  20. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +2 -0
  21. data/src/agent/Core/ApplicationPool/Implementation.cpp +0 -1
  22. data/src/agent/Core/ApplicationPool/Options.h +19 -0
  23. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  24. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  25. data/src/agent/Core/Config.h +15 -1
  26. data/src/agent/Core/Controller.h +1 -0
  27. data/src/agent/Core/Controller/Config.h +9 -1
  28. data/src/agent/Core/Controller/ForwardResponse.cpp +13 -0
  29. data/src/agent/Core/Controller/InitRequest.cpp +5 -0
  30. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -0
  31. data/src/agent/Core/CoreMain.cpp +1 -0
  32. data/src/agent/Core/OptionParser.h +3 -0
  33. data/src/agent/Core/SpawningKit/Config.h +11 -0
  34. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +13 -0
  35. data/src/agent/Core/SpawningKit/Context.h +1 -0
  36. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  37. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  38. data/src/agent/Core/SpawningKit/Spawner.h +1 -0
  39. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +2 -0
  40. data/src/agent/Watchdog/Config.h +16 -1
  41. data/src/agent/Watchdog/WatchdogMain.cpp +7 -0
  42. data/src/apache2_module/Config.cpp +1 -1
  43. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +15 -0
  44. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +15 -0
  45. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +40 -0
  46. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +10 -0
  47. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +6 -0
  48. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +26 -0
  49. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +14 -0
  50. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +34 -0
  51. data/src/apache2_module/Hooks.cpp +5 -0
  52. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +11 -0
  53. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +13 -0
  54. data/src/cxx_supportlib/Constants.h +4 -2
  55. data/src/cxx_supportlib/Hooks.h +1 -0
  56. data/src/cxx_supportlib/LoggingKit/Config.h +1 -0
  57. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  58. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +2 -2
  59. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +11 -7
  60. data/src/cxx_supportlib/oxt/system_calls.cpp +10 -10
  61. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +46 -37
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +16 -15
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +45 -26
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +33 -0
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +1 -1
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +38 -14
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +2 -0
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +1 -1
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +3 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +6 -1
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -4
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +4 -4
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +3 -3
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +4 -4
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +4 -4
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +8 -6
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +17 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +50 -5
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +2 -1
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +1 -1
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +3 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +4 -3
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +5 -3
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +13 -12
  88. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +10 -10
  89. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
  90. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
  91. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +8 -8
  92. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
  93. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
  94. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
  95. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
  96. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +89 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +83 -74
  99. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -33
  100. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +5 -5
  101. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  102. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -3
  103. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
  104. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +1 -1
  105. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +19 -19
  106. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -0
  107. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +5 -2
  108. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +5 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +6 -2
  110. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  111. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +368 -52
  113. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +6 -3
  115. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +6 -1
  119. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -3
  123. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +9 -4
  127. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
  130. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +13 -0
  131. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +2 -2
  132. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +14 -4
  133. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -4
  134. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +262 -2
  135. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +4 -3
  136. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +1 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +7 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +22 -19
  139. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +833 -459
  140. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +24 -6
  141. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +2 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +61 -5
  143. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +33 -8
  144. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +132 -41
  145. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +16 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +54 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +58 -0
  148. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +28 -23
  149. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +167 -115
  150. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +55 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
  152. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +167 -29
  154. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +18 -0
  157. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +389 -3
  158. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +262 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +52 -8
  160. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +364 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -2
  162. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -2
  164. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +286 -6
  165. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +56 -8
  166. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +43 -6
  167. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +100 -31
  168. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +2 -1
  169. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +126 -69
  170. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +75 -51
  171. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +136 -0
  172. data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
  174. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +101 -130
  175. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +2 -2
  176. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +9 -2
  180. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
  181. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +5 -0
  182. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +3 -3
  183. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
  186. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +5 -5
  187. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
  188. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +62 -58
  189. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +29 -29
  191. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +38 -40
  192. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +4 -4
  193. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +44 -44
  194. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +39 -39
  195. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +15 -15
  196. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +7 -7
  197. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +14 -14
  199. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +9 -9
  200. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +2 -2
  203. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +2 -2
  204. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +6 -6
  205. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +3 -3
  210. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +33 -14
  211. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +12 -12
  212. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +4 -4
  213. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +3 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +39 -39
  215. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +61 -61
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +4 -4
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +66 -66
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +54 -54
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +6 -2
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +3 -3
  221. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
  223. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +23 -23
  226. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +4 -4
  227. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +13 -13
  228. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -4
  230. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +5 -5
  232. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +5 -2
  233. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +18 -13
  234. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +4 -4
  235. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
  236. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +14 -8
  238. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
  239. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +13 -13
  240. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +27 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +29 -6
  243. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +12 -3
  244. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +8 -8
  248. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -0
  249. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +3 -3
  250. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +23 -3
  251. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
  252. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -11
  253. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +20 -1
  254. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  255. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +211 -101
  256. data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
  257. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
  258. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +5 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +44 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +73 -0
  264. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +3 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +52 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +6 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -2
  270. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +17 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +4 -0
  273. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +4 -0
  274. data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +166 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +513 -0
  276. data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4106 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +237 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +13 -5
  283. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
  285. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
  286. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
  287. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +14 -6
  288. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
  289. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +6 -2
  290. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +55 -37
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +3 -2
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +7 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +3 -1
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +5 -2
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -3
  297. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +15 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -2
  299. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +12 -3
  300. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
  301. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +7 -3
  302. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +6 -2
  303. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -5
  304. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -8
  305. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +3 -3
  306. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -8
  308. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +12 -11
  309. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
  310. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
  311. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +2 -10
  312. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +60 -115
  314. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +3 -3
  315. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +2 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +2 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +2 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +2 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +2 -1
  320. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +2 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +2 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +2 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +2 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +2 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +2 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +2 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +2 -1
  328. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +2 -1
  329. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +2 -1
  330. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +2 -1
  331. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +2 -1
  332. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +2 -1
  333. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +3 -3
  334. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -8
  335. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
  336. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +57 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +101 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +141 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_posix.hpp +132 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +775 -588
  341. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
  342. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +6 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
  344. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
  345. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +3 -1
  346. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
  348. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
  349. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +24 -1
  350. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +10 -1
  351. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
  352. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +2 -2
  354. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +2 -2
  355. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +8 -53
  356. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +73 -4
  357. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +6 -6
  358. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +14 -9
  359. data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
  360. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +9 -8
  361. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +1 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +21 -19
  363. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
  364. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +9 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
  366. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
  367. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +501 -0
  370. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
  371. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -2
  372. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +557 -0
  374. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
  375. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
  376. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
  378. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
  379. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +5 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +5 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +5 -0
  382. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
  385. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
  386. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
  387. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
  388. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +5 -15
  389. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +16 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +3 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
  392. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
  393. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
  394. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
  395. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
  396. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
  397. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
  398. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
  399. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
  400. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
  401. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
  402. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
  403. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +104 -63
  404. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
  405. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
  406. data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +4 -4
  408. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -3
  409. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +1 -1
  410. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +4 -5
  411. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +5 -5
  412. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -9
  413. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +3 -3
  414. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +2 -2
  415. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +6 -6
  416. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +1 -1
  417. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +4 -4
  418. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +2 -2
  419. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +2 -2
  420. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +16 -16
  421. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +5 -5
  422. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +201 -201
  423. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +301 -301
  424. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +401 -401
  425. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +101 -101
  426. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +3 -0
  427. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +2 -0
  428. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +26 -6
  429. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  430. data/src/cxx_supportlib/vendor-modified/modp_b64_data.h +0 -4
  431. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +5 -1
  432. data/src/helper-scripts/node-loader.js +1 -1
  433. data/src/helper-scripts/prespawn +1 -0
  434. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +40 -0
  435. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +27 -0
  436. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +48 -0
  437. data/src/nginx_module/Configuration.c +14 -1
  438. data/src/nginx_module/ContentHandler.c +5 -1
  439. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +21 -0
  440. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +30 -0
  441. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +42 -0
  442. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +9 -0
  443. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +15 -0
  444. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +6 -0
  445. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +12 -0
  446. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +4 -0
  447. data/src/nginx_module/ngx_http_passenger_module.c +3 -2
  448. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +0 -0
  449. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  450. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
  451. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +22 -0
  452. data/src/ruby_supportlib/phusion_passenger/constants.rb +3 -1
  453. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +4 -2
  454. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +35 -0
  455. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -1
  456. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +1 -1
  457. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +10 -0
  458. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +7 -6
  459. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +5 -0
  460. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +13 -0
  461. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +4 -2
  462. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +1 -1
  463. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +15 -11
  464. metadata +42 -8
  465. data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
  466. data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
  467. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
  468. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
@@ -51,6 +51,7 @@ Passenger::SpawningKit::Config::internStrings() {
51
51
  totalSize += appType.size() + 1;
52
52
  totalSize += appEnv.size() + 1;
53
53
  totalSize += spawnMethod.size() + 1;
54
+ totalSize += bindAddress.size() + 1;
54
55
  totalSize += baseURI.size() + 1;
55
56
  totalSize += user.size() + 1;
56
57
  totalSize += group.size() + 1;
@@ -90,6 +91,8 @@ Passenger::SpawningKit::Config::internStrings() {
90
91
  pos = appendData(pos, end, "\0", 1);
91
92
  pos = appendData(pos, end, spawnMethod);
92
93
  pos = appendData(pos, end, "\0", 1);
94
+ pos = appendData(pos, end, bindAddress);
95
+ pos = appendData(pos, end, "\0", 1);
93
96
  pos = appendData(pos, end, baseURI);
94
97
  pos = appendData(pos, end, "\0", 1);
95
98
  pos = appendData(pos, end, user);
@@ -147,6 +150,10 @@ Passenger::SpawningKit::Config::internStrings() {
147
150
  spawnMethod = StaticString(pos, tmpSize);
148
151
  pos += tmpSize + 1;
149
152
 
153
+ tmpSize = bindAddress.size();
154
+ bindAddress = StaticString(pos, tmpSize);
155
+ pos += tmpSize + 1;
156
+
150
157
  tmpSize = baseURI.size();
151
158
  baseURI = StaticString(pos, tmpSize);
152
159
  pos += tmpSize + 1;
@@ -221,6 +228,10 @@ Passenger::SpawningKit::Config::validate(vector<StaticString> &errors) const {
221
228
  ok = false;
222
229
  errors.push_back(P_STATIC_STRING("spawn_method may not be empty"));
223
230
  }
231
+ if (OXT_UNLIKELY(bindAddress.empty())) {
232
+ ok = false;
233
+ errors.push_back(P_STATIC_STRING("bind_address may not be empty"));
234
+ }
224
235
  if (OXT_UNLIKELY(baseURI.empty())) {
225
236
  ok = false;
226
237
  errors.push_back(P_STATIC_STRING("base_uri may not be empty"));
@@ -287,6 +298,7 @@ Passenger::SpawningKit::Config::getConfidentialFieldsToPassToApp() const {
287
298
  doc["app_type"] = appType.toString();
288
299
  doc["app_env"] = appEnv.toString();
289
300
  doc["spawn_method"] = spawnMethod.toString();
301
+ doc["bind_address"] = bindAddress.toString();
290
302
  doc["base_uri"] = baseURI.toString();
291
303
  doc["user"] = user.toString();
292
304
  doc["group"] = group.toString();
@@ -340,6 +352,7 @@ Passenger::SpawningKit::Config::getNonConfidentialFieldsToPassToApp() const {
340
352
  doc["app_type"] = appType.toString();
341
353
  doc["app_env"] = appEnv.toString();
342
354
  doc["spawn_method"] = spawnMethod.toString();
355
+ doc["bind_address"] = bindAddress.toString();
343
356
  doc["base_uri"] = baseURI.toString();
344
357
  doc["user"] = user.toString();
345
358
  doc["group"] = group.toString();
@@ -138,6 +138,7 @@ public:
138
138
  RandomGeneratorPtr randomGenerator;
139
139
  string integrationMode;
140
140
  string instanceDir;
141
+ string spawnDir;
141
142
  DebugSupport *debugSupport;
142
143
  //UnionStation::ContextPtr unionStationContext;
143
144
 
@@ -123,7 +123,7 @@ private:
123
123
 
124
124
  void createWorkDir() {
125
125
  TRACE_POINT();
126
- session.workDir.reset(new HandshakeWorkDir());
126
+ session.workDir.reset(new HandshakeWorkDir(context->spawnDir));
127
127
 
128
128
  session.envDumpDir = session.workDir->getPath() + "/envdump";
129
129
  makeDirTree(session.envDumpDir,
@@ -54,12 +54,15 @@ private:
54
54
  string path;
55
55
 
56
56
  public:
57
- HandshakeWorkDir() {
57
+ HandshakeWorkDir(const std::string& spawn_dir) {
58
58
  char buf[PATH_MAX + 1];
59
59
  char *pos = buf;
60
60
  const char *end = buf + PATH_MAX;
61
61
 
62
- pos = appendData(pos, end, getSystemTempDir());
62
+ if (spawn_dir.empty())
63
+ throw RuntimeException("spawn_dir is not set");
64
+ pos = appendData(pos, end, spawn_dir.c_str());
65
+
63
66
  pos = appendData(pos, end, "/passenger.spawn.XXXXXXXXXX");
64
67
  *pos = '\0';
65
68
 
@@ -134,6 +134,7 @@ protected:
134
134
  config->group = info.groupname;
135
135
 
136
136
  extraArgs["spawn_method"] = options.spawnMethod.toString();
137
+ config->bindAddress = options.bindAddress;
137
138
 
138
139
  /******************/
139
140
  /******************/
@@ -415,9 +415,11 @@ doSleep(int sec) {
415
415
 
416
416
  static void
417
417
  maybeDeletePidFile() {
418
+ up_privilege();
418
419
  if (pidFile != NULL) {
419
420
  unlink(pidFile);
420
421
  }
422
+ down_privilege();
421
423
  }
422
424
 
423
425
  static void
@@ -103,6 +103,7 @@ using namespace std;
103
103
  * daemonize boolean - default(false)
104
104
  * default_abort_websockets_on_process_shutdown boolean - default(true)
105
105
  * default_app_file_descriptor_ulimit unsigned integer - -
106
+ * default_bind_address string - default("127.0.0.1")
106
107
  * default_environment string - default("production")
107
108
  * default_force_max_concurrent_requests_per_process integer - default(-1)
108
109
  * default_friendly_error_pages string - default("auto")
@@ -120,14 +121,20 @@ using namespace std;
120
121
  * default_server_port unsigned integer - default
121
122
  * default_spawn_method string - default("smart")
122
123
  * default_sticky_sessions boolean - default(false)
124
+ * default_sticky_sessions_cookie_attributes string - default("SameSite=Lax; Secure;")
123
125
  * default_sticky_sessions_cookie_name string - default("_passenger_route")
124
126
  * default_user string - default("nobody")
127
+ * disable_log_prefix boolean - default(false)
125
128
  * file_descriptor_log_target any - -
126
129
  * graceful_exit boolean - default(true)
127
130
  * hook_after_watchdog_initialization string - -
128
131
  * hook_after_watchdog_shutdown string - -
132
+ * hook_attached_process string - read_only
129
133
  * hook_before_watchdog_initialization string - -
130
134
  * hook_before_watchdog_shutdown string - -
135
+ * hook_detached_process string - read_only
136
+ * hook_queue_full_error string - read_only
137
+ * hook_spawn_failed string - read_only
131
138
  * instance_registry_dir string - default,read_only
132
139
  * integration_mode string - default("standalone")
133
140
  * log_level string - default("notice")
@@ -146,13 +153,14 @@ using namespace std;
146
153
  * security_update_checker_interval unsigned integer - default(86400)
147
154
  * security_update_checker_proxy_url string - -
148
155
  * security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
149
- * server_software string - default("Phusion_Passenger/6.0.2")
156
+ * server_software string - default("Phusion_Passenger/6.0.7")
150
157
  * setsid boolean - default(false)
151
158
  * show_version_in_header boolean - default(true)
152
159
  * single_app_mode_app_root string - default,read_only
153
160
  * single_app_mode_app_start_command string - read_only
154
161
  * single_app_mode_app_type string - read_only
155
162
  * single_app_mode_startup_file string - read_only
163
+ * spawn_dir string - default,read_only
156
164
  * standalone_engine string - default
157
165
  * startup_report_file string - -
158
166
  * stat_throttle_rate unsigned integer - default(10)
@@ -246,6 +254,10 @@ private:
246
254
  return getSystemTempDir();
247
255
  }
248
256
 
257
+ static Json::Value getDefaultSpawnDir(const ConfigKit::Store &store) {
258
+ return getSystemTempDir();
259
+ }
260
+
249
261
  static void validateAddresses(const ConfigKit::Store &config, vector<ConfigKit::Error> &errors) {
250
262
  typedef ConfigKit::Error Error;
251
263
 
@@ -258,6 +270,7 @@ private:
258
270
  static Json::Value normalizePaths(const Json::Value &effectiveValues) {
259
271
  Json::Value updates;
260
272
  updates["instance_registry_dir"] = absolutizePath(effectiveValues["instance_registry_dir"].asString());
273
+ updates["spawn_dir"] = absolutizePath(effectiveValues["spawn_dir"].asString());
261
274
  if (!effectiveValues["watchdog_pid_file"].isNull()) {
262
275
  updates["watchdog_pid_file"] = absolutizePath(effectiveValues["watchdog_pid_file"].asString());
263
276
  }
@@ -334,6 +347,8 @@ public:
334
347
  OPTIONAL | READ_ONLY | CACHE_DEFAULT_VALUE, getDefaultUser);
335
348
  addWithDynamicDefault("instance_registry_dir", STRING_TYPE,
336
349
  OPTIONAL | READ_ONLY | CACHE_DEFAULT_VALUE, getDefaultInstanceRegistryDir);
350
+ addWithDynamicDefault("spawn_dir", STRING_TYPE,
351
+ OPTIONAL | READ_ONLY | CACHE_DEFAULT_VALUE, getDefaultSpawnDir);
337
352
 
338
353
  add("hook_before_watchdog_initialization", STRING_TYPE, OPTIONAL);
339
354
  add("hook_after_watchdog_initialization", STRING_TYPE, OPTIONAL);
@@ -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());
@@ -183,7 +183,7 @@ static const char *
183
183
  cmd_passenger_enterprise_only(cmd_parms *cmd, void *pcfg, const char *arg) {
184
184
  return "this feature is only available in Phusion Passenger Enterprise. "
185
185
  "You are currently running the open source Phusion Passenger Enterprise. "
186
- "Please learn more about and/or buy Phusion Passenger Enterprise at https://www.phusionpassenger.com/enterprise";
186
+ "Please learn more about and/or buy Phusion Passenger Enterprise at https://www.phusionpassenger.com/features#premium-features";
187
187
  }
188
188
 
189
189
  static const char *
@@ -172,6 +172,11 @@ extern "C" const command_rec passenger_commands[] = {
172
172
  NULL,
173
173
  RSRC_CONF,
174
174
  "The user that Phusion Passenger applications must run as when user switching fails or is disabled."),
175
+ AP_INIT_TAKE1("PassengerDirectInstanceRequestAddress",
176
+ (Take1Func) cmd_passenger_direct_instance_request_address,
177
+ NULL,
178
+ RSRC_CONF | ACCESS_CONF,
179
+ "The address that Passenger binds to in order to allow sending HTTP requests to individual application processes."),
175
180
  AP_INIT_FLAG("PassengerDisableAnonymousTelemetry",
176
181
  (FlagFunc) cmd_passenger_disable_anonymous_telemetry,
177
182
  NULL,
@@ -382,6 +387,11 @@ extern "C" const command_rec passenger_commands[] = {
382
387
  NULL,
383
388
  RSRC_CONF,
384
389
  "The Phusion Passenger socket backlog."),
390
+ AP_INIT_TAKE1("PassengerSpawnDir",
391
+ (Take1Func) cmd_passenger_spawn_dir,
392
+ NULL,
393
+ RSRC_CONF,
394
+ "The directory for Phusion Passenger used during child spawning."),
385
395
  AP_INIT_TAKE1("PassengerSpawnMethod",
386
396
  (Take1Func) cmd_passenger_spawn_method,
387
397
  NULL,
@@ -407,6 +417,11 @@ extern "C" const command_rec passenger_commands[] = {
407
417
  NULL,
408
418
  RSRC_CONF | ACCESS_CONF | OR_ALL,
409
419
  "Whether to enable sticky sessions."),
420
+ AP_INIT_TAKE1("PassengerStickySessionsCookieAttributes",
421
+ (Take1Func) cmd_passenger_sticky_sessions_cookie_attributes,
422
+ NULL,
423
+ RSRC_CONF | ACCESS_CONF | OR_ALL,
424
+ "The attributes to use for the sticky session cookie."),
410
425
  AP_INIT_TAKE1("PassengerStickySessionsCookieName",
411
426
  (Take1Func) cmd_passenger_sticky_sessions_cookie_name,
412
427
  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",
@@ -174,6 +179,11 @@ ConfigManifestGenerator::autoGenerated_setAppConfigDefaults() {
174
179
  "PassengerAppType",
175
180
  P_STATIC_STRING("Autodetected"));
176
181
 
182
+ addOptionsContainerStaticDefaultStr(
183
+ defaultAppConfigContainer,
184
+ "PassengerDirectInstanceRequestAddress",
185
+ P_STATIC_STRING("127.0.0.1"));
186
+
177
187
  addOptionsContainerStaticDefaultInt(
178
188
  defaultAppConfigContainer,
179
189
  "PassengerForceMaxConcurrentRequestsPerProcess",
@@ -300,6 +310,11 @@ ConfigManifestGenerator::autoGenerated_setLocationConfigDefaults() {
300
310
  "PassengerStickySessions",
301
311
  false);
302
312
 
313
+ addOptionsContainerStaticDefaultStr(
314
+ defaultLocConfigContainer,
315
+ "PassengerStickySessionsCookieAttributes",
316
+ DEFAULT_STICKY_SESSIONS_COOKIE_ATTRIBUTES);
317
+
303
318
  addOptionsContainerStaticDefaultStr(
304
319
  defaultLocConfigContainer,
305
320
  "PassengerStickySessionsCookieName",
@@ -319,6 +319,21 @@ cmd_passenger_default_user(cmd_parms *cmd, void *pcfg, const char *arg) {
319
319
  return NULL;
320
320
  }
321
321
 
322
+ static const char *
323
+ cmd_passenger_direct_instance_request_address(cmd_parms *cmd, void *pcfg, const char *arg) {
324
+ const char *err = ap_check_cmd_context(cmd, NOT_IN_FILES);
325
+ if (err != NULL) {
326
+ return err;
327
+ }
328
+
329
+ DirConfig *config = (DirConfig *) pcfg;
330
+ config->mDirectInstanceRequestAddressSourceFile = cmd->directive->filename;
331
+ config->mDirectInstanceRequestAddressSourceLine = cmd->directive->line_num;
332
+ config->mDirectInstanceRequestAddressExplicitlySet = true;
333
+ config->mDirectInstanceRequestAddress = arg;
334
+ return NULL;
335
+ }
336
+
322
337
  static const char *
323
338
  cmd_passenger_disable_anonymous_telemetry(cmd_parms *cmd, void *pcfg, const char *arg) {
324
339
  const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
@@ -832,6 +847,21 @@ cmd_passenger_socket_backlog(cmd_parms *cmd, void *pcfg, const char *arg) {
832
847
  return setIntConfig(cmd, arg, serverConfig.socketBacklog, 0);
833
848
  }
834
849
 
850
+ static const char *
851
+ cmd_passenger_spawn_dir(cmd_parms *cmd, void *pcfg, const char *arg) {
852
+ const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
853
+ if (err != NULL) {
854
+ ap_log_perror(APLOG_MARK, APLOG_STARTUP, 0, cmd->temp_pool,
855
+ "WARNING: %s", err);
856
+ }
857
+
858
+ serverConfig.spawnDirSourceFile = cmd->directive->filename;
859
+ serverConfig.spawnDirSourceLine = cmd->directive->line_num;
860
+ serverConfig.spawnDirExplicitlySet = true;
861
+ serverConfig.spawnDir = arg;
862
+ return NULL;
863
+ }
864
+
835
865
  static const char *
836
866
  cmd_passenger_start_timeout(cmd_parms *cmd, void *pcfg, const char *arg) {
837
867
  const char *err = ap_check_cmd_context(cmd, NOT_IN_FILES);
@@ -888,6 +918,16 @@ cmd_passenger_sticky_sessions(cmd_parms *cmd, void *pcfg, const char *arg) {
888
918
  return NULL;
889
919
  }
890
920
 
921
+ static const char *
922
+ cmd_passenger_sticky_sessions_cookie_attributes(cmd_parms *cmd, void *pcfg, const char *arg) {
923
+ DirConfig *config = (DirConfig *) pcfg;
924
+ config->mStickySessionsCookieAttributesSourceFile = cmd->directive->filename;
925
+ config->mStickySessionsCookieAttributesSourceLine = cmd->directive->line_num;
926
+ config->mStickySessionsCookieAttributesExplicitlySet = true;
927
+ config->mStickySessionsCookieAttributes = arg;
928
+ return NULL;
929
+ }
930
+
891
931
  static const char *
892
932
  cmd_passenger_sticky_sessions_cookie_name(cmd_parms *cmd, void *pcfg, const char *arg) {
893
933
  DirConfig *config = (DirConfig *) pcfg;
@@ -75,6 +75,9 @@ createDirConfig_autoGenerated(DirConfig *config) {
75
75
  */
76
76
  config->mBufferResponse = Apache2Module::UNSET;
77
77
  config->mBufferUpload = Apache2Module::UNSET;
78
+ /*
79
+ * config->mDirectInstanceRequestAddress: default initialized
80
+ */
78
81
  config->mEnabled = Apache2Module::UNSET;
79
82
  config->mErrorOverride = Apache2Module::UNSET;
80
83
  config->mForceMaxConcurrentRequestsPerProcess = UNSET_INT_VALUE;
@@ -115,6 +118,9 @@ createDirConfig_autoGenerated(DirConfig *config) {
115
118
  * config->mStartupFile: default initialized
116
119
  */
117
120
  config->mStickySessions = Apache2Module::UNSET;
121
+ /*
122
+ * config->mStickySessionsCookieAttributes: default initialized
123
+ */
118
124
  /*
119
125
  * config->mStickySessionsCookieName: default initialized
120
126
  */
@@ -132,6 +138,7 @@ createDirConfig_autoGenerated(DirConfig *config) {
132
138
  config->mBaseURIsSourceLine = 0;
133
139
  config->mBufferResponseSourceLine = 0;
134
140
  config->mBufferUploadSourceLine = 0;
141
+ config->mDirectInstanceRequestAddressSourceLine = 0;
135
142
  config->mEnabledSourceLine = 0;
136
143
  config->mErrorOverrideSourceLine = 0;
137
144
  config->mForceMaxConcurrentRequestsPerProcessSourceLine = 0;
@@ -154,6 +161,7 @@ createDirConfig_autoGenerated(DirConfig *config) {
154
161
  config->mStartTimeoutSourceLine = 0;
155
162
  config->mStartupFileSourceLine = 0;
156
163
  config->mStickySessionsSourceLine = 0;
164
+ config->mStickySessionsCookieAttributesSourceLine = 0;
157
165
  config->mStickySessionsCookieNameSourceLine = 0;
158
166
  config->mUserSourceLine = 0;
159
167
 
@@ -167,6 +175,7 @@ createDirConfig_autoGenerated(DirConfig *config) {
167
175
  config->mBaseURIsExplicitlySet = false;
168
176
  config->mBufferResponseExplicitlySet = false;
169
177
  config->mBufferUploadExplicitlySet = false;
178
+ config->mDirectInstanceRequestAddressExplicitlySet = false;
170
179
  config->mEnabledExplicitlySet = false;
171
180
  config->mErrorOverrideExplicitlySet = false;
172
181
  config->mForceMaxConcurrentRequestsPerProcessExplicitlySet = false;
@@ -189,6 +198,7 @@ createDirConfig_autoGenerated(DirConfig *config) {
189
198
  config->mStartTimeoutExplicitlySet = false;
190
199
  config->mStartupFileExplicitlySet = false;
191
200
  config->mStickySessionsExplicitlySet = false;
201
+ config->mStickySessionsCookieAttributesExplicitlySet = false;
192
202
  config->mStickySessionsCookieNameExplicitlySet = false;
193
203
  config->mUserExplicitlySet = false;
194
204
  }
@@ -61,6 +61,9 @@ constructRequestHeaders_autoGenerated(request_rec *r, DirConfig *config, std::st
61
61
  addHeader(result, StaticString("!~PASSENGER_APP_LOG_FILE",
62
62
  sizeof("!~PASSENGER_APP_LOG_FILE") - 1),
63
63
  config->mAppLogFile);
64
+ addHeader(result, StaticString("!~PASSENGER_DIRECT_INSTANCE_REQUEST_ADDRESS",
65
+ sizeof("!~PASSENGER_DIRECT_INSTANCE_REQUEST_ADDRESS") - 1),
66
+ config->mDirectInstanceRequestAddress);
64
67
  addHeader(r, result, StaticString("!~PASSENGER_FORCE_MAX_CONCURRENT_REQUESTS_PER_PROCESS",
65
68
  sizeof("!~PASSENGER_FORCE_MAX_CONCURRENT_REQUESTS_PER_PROCESS") - 1),
66
69
  config->mForceMaxConcurrentRequestsPerProcess);
@@ -115,6 +118,9 @@ constructRequestHeaders_autoGenerated(request_rec *r, DirConfig *config, std::st
115
118
  addHeader(result, StaticString("!~PASSENGER_STICKY_SESSIONS",
116
119
  sizeof("!~PASSENGER_STICKY_SESSIONS") - 1),
117
120
  config->mStickySessions);
121
+ addHeader(result, StaticString("!~PASSENGER_STICKY_SESSIONS_COOKIE_ATTRIBUTES",
122
+ sizeof("!~PASSENGER_STICKY_SESSIONS_COOKIE_ATTRIBUTES") - 1),
123
+ config->mStickySessionsCookieAttributes);
118
124
  addHeader(result, StaticString("!~PASSENGER_STICKY_SESSIONS_COOKIE_NAME",
119
125
  sizeof("!~PASSENGER_STICKY_SESSIONS_COOKIE_NAME") - 1),
120
126
  config->mStickySessionsCookieName);
@@ -176,6 +176,19 @@ ConfigManifestGenerator::autoGenerated_generateConfigManifestForDirConfig(server
176
176
  pdconf->mBufferUploadSourceLine);
177
177
  hierarchyMember["value"] = pdconf->mBufferUpload == Apache2Module::ENABLED;
178
178
  }
179
+ if (pdconf->mDirectInstanceRequestAddressExplicitlySet) {
180
+ findOrCreateAppAndLocOptionsContainers(serverRec, csconf, cdconf,
181
+ pdconf, context, &appOptionsContainer, &locOptionsContainer);
182
+ Json::Value &optionContainer = findOrCreateOptionContainer(*appOptionsContainer,
183
+ "PassengerDirectInstanceRequestAddress",
184
+ sizeof("PassengerDirectInstanceRequestAddress") - 1);
185
+ Json::Value &hierarchyMember = addOptionContainerHierarchyMember(optionContainer,
186
+ pdconf->mDirectInstanceRequestAddressSourceFile,
187
+ pdconf->mDirectInstanceRequestAddressSourceLine);
188
+ hierarchyMember["value"] = Json::Value(
189
+ pdconf->mDirectInstanceRequestAddress.data(),
190
+ pdconf->mDirectInstanceRequestAddress.data() + pdconf->mDirectInstanceRequestAddress.size());
191
+ }
179
192
  if (pdconf->mEnabledExplicitlySet) {
180
193
  findOrCreateAppAndLocOptionsContainers(serverRec, csconf, cdconf,
181
194
  pdconf, context, &appOptionsContainer, &locOptionsContainer);
@@ -435,6 +448,19 @@ ConfigManifestGenerator::autoGenerated_generateConfigManifestForDirConfig(server
435
448
  pdconf->mStickySessionsSourceLine);
436
449
  hierarchyMember["value"] = pdconf->mStickySessions == Apache2Module::ENABLED;
437
450
  }
451
+ if (pdconf->mStickySessionsCookieAttributesExplicitlySet) {
452
+ findOrCreateAppAndLocOptionsContainers(serverRec, csconf, cdconf,
453
+ pdconf, context, &appOptionsContainer, &locOptionsContainer);
454
+ Json::Value &optionContainer = findOrCreateOptionContainer(*locOptionsContainer,
455
+ "PassengerStickySessionsCookieAttributes",
456
+ sizeof("PassengerStickySessionsCookieAttributes") - 1);
457
+ Json::Value &hierarchyMember = addOptionContainerHierarchyMember(optionContainer,
458
+ pdconf->mStickySessionsCookieAttributesSourceFile,
459
+ pdconf->mStickySessionsCookieAttributesSourceLine);
460
+ hierarchyMember["value"] = Json::Value(
461
+ pdconf->mStickySessionsCookieAttributes.data(),
462
+ pdconf->mStickySessionsCookieAttributes.data() + pdconf->mStickySessionsCookieAttributes.size());
463
+ }
438
464
  if (pdconf->mStickySessionsCookieNameExplicitlySet) {
439
465
  findOrCreateAppAndLocOptionsContainers(serverRec, csconf, cdconf,
440
466
  pdconf, context, &appOptionsContainer, &locOptionsContainer);