passenger 6.0.23 → 6.0.24

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.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (305) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +26 -1
  3. data/Rakefile +7 -3
  4. data/bin/passenger-install-apache2-module +5 -0
  5. data/bin/passenger-install-nginx-module +17 -2
  6. data/build/apache2.rb +1 -1
  7. data/build/basics.rb +10 -4
  8. data/build/cxx_tests.rb +18 -7
  9. data/build/support/cxx_dependency_map.rb +40 -6
  10. data/build/test_basics.rb +4 -12
  11. data/package.json +1 -1
  12. data/passenger.gemspec +1 -1
  13. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
  14. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
  15. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
  16. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
  17. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
  18. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
  19. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
  20. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
  21. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +8 -0
  22. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
  23. data/src/agent/Core/ApplicationPool/Group.h +15 -5
  24. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
  25. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
  26. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
  27. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
  28. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
  29. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
  30. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
  31. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -1
  32. data/src/agent/Core/ApplicationPool/Pool.h +0 -2
  33. data/src/agent/Core/ApplicationPool/Process.h +22 -6
  34. data/src/agent/Core/ApplicationPool/Session.h +6 -1
  35. data/src/agent/Core/Config.h +7 -3
  36. data/src/agent/Core/Controller/Config.h +1 -1
  37. data/src/agent/Core/CoreMain.cpp +10 -17
  38. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
  39. data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
  40. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  41. data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
  42. data/src/agent/Core/SpawningKit/Spawner.h +4 -0
  43. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
  44. data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
  45. data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
  46. data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
  47. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
  48. data/src/agent/Watchdog/Config.h +1 -1
  49. data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
  50. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
  51. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +3 -0
  52. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
  53. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
  54. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
  55. data/src/cxx_supportlib/Constants.h +1 -1
  56. data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
  57. data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
  58. data/src/cxx_supportlib/SafeLibev.h +1 -3
  59. data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
  60. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
  61. data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
  62. data/src/cxx_supportlib/ServerKit/Server.h +0 -6
  63. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
  64. data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
  65. data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
  66. data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
  67. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
  193. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
  196. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
  197. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
  198. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
  200. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
  201. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
  202. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
  204. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
  205. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
  206. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
  207. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
  208. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
  210. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
  212. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
  214. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
  216. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
  217. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
  218. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
  219. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
  220. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
  221. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
  223. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
  226. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
  227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
  228. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
  229. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
  230. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
  231. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
  232. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
  233. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
  234. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
  236. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
  238. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
  241. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
  244. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
  245. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
  246. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
  247. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
  248. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
  249. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
  250. data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
  252. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
  253. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
  257. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
  258. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
  259. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
  260. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
  262. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  263. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
  264. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
  275. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
  276. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
  280. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
  281. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
  282. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
  285. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
  286. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
  287. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
  288. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
  293. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
  296. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  297. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
  298. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
  299. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
  300. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
  301. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
  302. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +5 -1
  303. data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
  304. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  305. metadata +21 -8
@@ -440,7 +440,7 @@ public:
440
440
  * Regardless of whether the asynchronous operation completes immediately or
441
441
  * not, the completion handler will not be invoked from within this function.
442
442
  * On immediate completion, invocation of the handler will be performed in a
443
- * manner equivalent to using boost::asio::post().
443
+ * manner equivalent to using boost::asio::async_immediate().
444
444
  *
445
445
  * @par Completion Signature
446
446
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -510,7 +510,7 @@ public:
510
510
  * Regardless of whether the asynchronous operation completes immediately or
511
511
  * not, the completion handler will not be invoked from within this function.
512
512
  * On immediate completion, invocation of the handler will be performed in a
513
- * manner equivalent to using boost::asio::post().
513
+ * manner equivalent to using boost::asio::async_immediate().
514
514
  *
515
515
  * @par Completion Signature
516
516
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -659,7 +659,7 @@ public:
659
659
  * Regardless of whether the asynchronous operation completes immediately or
660
660
  * not, the completion handler will not be invoked from within this function.
661
661
  * On immediate completion, invocation of the handler will be performed in a
662
- * manner equivalent to using boost::asio::post().
662
+ * manner equivalent to using boost::asio::async_immediate().
663
663
  *
664
664
  * @par Completion Signature
665
665
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -732,7 +732,7 @@ public:
732
732
  * Regardless of whether the asynchronous operation completes immediately or
733
733
  * not, the completion handler will not be invoked from within this function.
734
734
  * On immediate completion, invocation of the handler will be performed in a
735
- * manner equivalent to using boost::asio::post().
735
+ * manner equivalent to using boost::asio::async_immediate().
736
736
  *
737
737
  * @par Completion Signature
738
738
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -877,7 +877,7 @@ public:
877
877
  * Regardless of whether the asynchronous operation completes immediately or
878
878
  * not, the completion handler will not be invoked from within this function.
879
879
  * On immediate completion, invocation of the handler will be performed in a
880
- * manner equivalent to using boost::asio::post().
880
+ * manner equivalent to using boost::asio::async_immediate().
881
881
  *
882
882
  * @par Completion Signature
883
883
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -948,7 +948,7 @@ public:
948
948
  * Regardless of whether the asynchronous operation completes immediately or
949
949
  * not, the completion handler will not be invoked from within this function.
950
950
  * On immediate completion, invocation of the handler will be performed in a
951
- * manner equivalent to using boost::asio::post().
951
+ * manner equivalent to using boost::asio::async_immediate().
952
952
  *
953
953
  * @par Completion Signature
954
954
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -1020,7 +1020,7 @@ public:
1020
1020
  boost::asio::detail::throw_error(ec, "receive_from");
1021
1021
  return s;
1022
1022
  }
1023
-
1023
+
1024
1024
  /// Receive raw data with the endpoint of the sender.
1025
1025
  /**
1026
1026
  * This function is used to receive raw data. The function call will block
@@ -1047,7 +1047,7 @@ public:
1047
1047
  boost::asio::detail::throw_error(ec, "receive_from");
1048
1048
  return s;
1049
1049
  }
1050
-
1050
+
1051
1051
  /// Receive raw data with the endpoint of the sender.
1052
1052
  /**
1053
1053
  * This function is used to receive raw data. The function call will block
@@ -1101,7 +1101,7 @@ public:
1101
1101
  * Regardless of whether the asynchronous operation completes immediately or
1102
1102
  * not, the completion handler will not be invoked from within this function.
1103
1103
  * On immediate completion, invocation of the handler will be performed in a
1104
- * manner equivalent to using boost::asio::post().
1104
+ * manner equivalent to using boost::asio::async_immediate().
1105
1105
  *
1106
1106
  * @par Completion Signature
1107
1107
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -1174,7 +1174,7 @@ public:
1174
1174
  * Regardless of whether the asynchronous operation completes immediately or
1175
1175
  * not, the completion handler will not be invoked from within this function.
1176
1176
  * On immediate completion, invocation of the handler will be performed in a
1177
- * manner equivalent to using boost::asio::post().
1177
+ * manner equivalent to using boost::asio::async_immediate().
1178
1178
  *
1179
1179
  * @par Completion Signature
1180
1180
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -535,7 +535,7 @@ public:
535
535
  * Regardless of whether the asynchronous operation completes immediately or
536
536
  * not, the completion handler will not be invoked from within this function.
537
537
  * On immediate completion, invocation of the handler will be performed in a
538
- * manner equivalent to using boost::asio::post().
538
+ * manner equivalent to using boost::asio::async_immediate().
539
539
  *
540
540
  * @par Completion Signature
541
541
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -431,7 +431,7 @@ public:
431
431
  * Regardless of whether the asynchronous operation completes immediately or
432
432
  * not, the completion handler will not be invoked from within this function.
433
433
  * On immediate completion, invocation of the handler will be performed in a
434
- * manner equivalent to using boost::asio::post().
434
+ * manner equivalent to using boost::asio::async_immediate().
435
435
  *
436
436
  * @par Completion Signature
437
437
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -621,7 +621,7 @@ public:
621
621
  * Regardless of whether the asynchronous operation completes immediately or
622
622
  * not, the completion handler will not be invoked from within this function.
623
623
  * On immediate completion, invocation of the handler will be performed in a
624
- * manner equivalent to using boost::asio::post().
624
+ * manner equivalent to using boost::asio::async_immediate().
625
625
  *
626
626
  * @par Completion Signature
627
627
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -695,7 +695,7 @@ public:
695
695
  * Regardless of whether the asynchronous operation completes immediately or
696
696
  * not, the completion handler will not be invoked from within this function.
697
697
  * On immediate completion, invocation of the handler will be performed in a
698
- * manner equivalent to using boost::asio::post().
698
+ * manner equivalent to using boost::asio::async_immediate().
699
699
  *
700
700
  * @par Completion Signature
701
701
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -725,7 +725,7 @@ public:
725
725
  * Regardless of whether the asynchronous operation completes immediately or
726
726
  * not, the completion handler will not be invoked from within this function.
727
727
  * On immediate completion, invocation of the handler will be performed in a
728
- * manner equivalent to using boost::asio::post().
728
+ * manner equivalent to using boost::asio::async_immediate().
729
729
  *
730
730
  * @par Completion Signature
731
731
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -855,7 +855,7 @@ public:
855
855
  * Regardless of whether the asynchronous operation completes immediately or
856
856
  * not, the completion handler will not be invoked from within this function.
857
857
  * On immediate completion, invocation of the handler will be performed in a
858
- * manner equivalent to using boost::asio::post().
858
+ * manner equivalent to using boost::asio::async_immediate().
859
859
  *
860
860
  * @par Completion Signature
861
861
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -574,7 +574,7 @@ public:
574
574
  * Regardless of whether the asynchronous operation completes immediately or
575
575
  * not, the completion handler will not be invoked from within this function.
576
576
  * On immediate completion, invocation of the handler will be performed in a
577
- * manner equivalent to using boost::asio::post().
577
+ * manner equivalent to using boost::asio::async_immediate().
578
578
  *
579
579
  * @par Completion Signature
580
580
  * @code void(boost::system::error_code, int) @endcode
@@ -928,7 +928,7 @@ public:
928
928
  * Regardless of whether the asynchronous operation completes immediately or
929
929
  * not, the completion handler will not be invoked from within this function.
930
930
  * On immediate completion, invocation of the handler will be performed in a
931
- * manner equivalent to using boost::asio::post().
931
+ * manner equivalent to using boost::asio::async_immediate().
932
932
  *
933
933
  * @par Completion Signature
934
934
  * @code void(boost::system::error_code) @endcode
@@ -1780,7 +1780,7 @@ public:
1780
1780
  * Regardless of whether the asynchronous operation completes immediately or
1781
1781
  * not, the completion handler will not be invoked from within this function.
1782
1782
  * On immediate completion, invocation of the handler will be performed in a
1783
- * manner equivalent to using boost::asio::post().
1783
+ * manner equivalent to using boost::asio::async_immediate().
1784
1784
  *
1785
1785
  * @par Completion Signature
1786
1786
  * @code void(boost::system::error_code) @endcode
@@ -1214,7 +1214,7 @@ public:
1214
1214
  * Regardless of whether the asynchronous operation completes immediately or
1215
1215
  * not, the completion handler will not be invoked from within this function.
1216
1216
  * On immediate completion, invocation of the handler will be performed in a
1217
- * manner equivalent to using boost::asio::post().
1217
+ * manner equivalent to using boost::asio::async_immediate().
1218
1218
  *
1219
1219
  * @par Completion Signature
1220
1220
  * @code void(boost::system::error_code) @endcode
@@ -1349,7 +1349,7 @@ public:
1349
1349
  * Regardless of whether the asynchronous operation completes immediately or
1350
1350
  * not, the completion handler will not be invoked from within this function.
1351
1351
  * On immediate completion, invocation of the handler will be performed in a
1352
- * manner equivalent to using boost::asio::post().
1352
+ * manner equivalent to using boost::asio::async_immediate().
1353
1353
  *
1354
1354
  * @par Completion Signature
1355
1355
  * @code void(boost::system::error_code) @endcode
@@ -1497,7 +1497,7 @@ public:
1497
1497
  * Regardless of whether the asynchronous operation completes immediately or
1498
1498
  * not, the completion handler will not be invoked from within this function.
1499
1499
  * On immediate completion, invocation of the handler will be performed in a
1500
- * manner equivalent to using boost::asio::post().
1500
+ * manner equivalent to using boost::asio::async_immediate().
1501
1501
  *
1502
1502
  * @par Completion Signature
1503
1503
  * @code void(boost::system::error_code) @endcode
@@ -1617,7 +1617,7 @@ public:
1617
1617
  * Regardless of whether the asynchronous operation completes immediately or
1618
1618
  * not, the completion handler will not be invoked from within this function.
1619
1619
  * On immediate completion, invocation of the handler will be performed in a
1620
- * manner equivalent to using boost::asio::post().
1620
+ * manner equivalent to using boost::asio::async_immediate().
1621
1621
  *
1622
1622
  * @par Completion Signature
1623
1623
  * @code void(boost::system::error_code,
@@ -1867,7 +1867,7 @@ public:
1867
1867
  * Regardless of whether the asynchronous operation completes immediately or
1868
1868
  * not, the completion handler will not be invoked from within this function.
1869
1869
  * On immediate completion, invocation of the handler will be performed in a
1870
- * manner equivalent to using boost::asio::post().
1870
+ * manner equivalent to using boost::asio::async_immediate().
1871
1871
  *
1872
1872
  * @par Completion Signature
1873
1873
  * @code void(boost::system::error_code,
@@ -1963,7 +1963,7 @@ public:
1963
1963
  * Regardless of whether the asynchronous operation completes immediately or
1964
1964
  * not, the completion handler will not be invoked from within this function.
1965
1965
  * On immediate completion, invocation of the handler will be performed in a
1966
- * manner equivalent to using boost::asio::post().
1966
+ * manner equivalent to using boost::asio::async_immediate().
1967
1967
  *
1968
1968
  * @par Completion Signature
1969
1969
  * @code void(boost::system::error_code,
@@ -2133,7 +2133,7 @@ public:
2133
2133
  * Regardless of whether the asynchronous operation completes immediately or
2134
2134
  * not, the completion handler will not be invoked from within this function.
2135
2135
  * On immediate completion, invocation of the handler will be performed in a
2136
- * manner equivalent to using boost::asio::post().
2136
+ * manner equivalent to using boost::asio::async_immediate().
2137
2137
  *
2138
2138
  * @par Completion Signature
2139
2139
  * @code void(boost::system::error_code,
@@ -2415,7 +2415,7 @@ public:
2415
2415
  * Regardless of whether the asynchronous operation completes immediately or
2416
2416
  * not, the completion handler will not be invoked from within this function.
2417
2417
  * On immediate completion, invocation of the handler will be performed in a
2418
- * manner equivalent to using boost::asio::post().
2418
+ * manner equivalent to using boost::asio::async_immediate().
2419
2419
  *
2420
2420
  * @par Completion Signature
2421
2421
  * @code void(boost::system::error_code,
@@ -2515,7 +2515,7 @@ public:
2515
2515
  * Regardless of whether the asynchronous operation completes immediately or
2516
2516
  * not, the completion handler will not be invoked from within this function.
2517
2517
  * On immediate completion, invocation of the handler will be performed in a
2518
- * manner equivalent to using boost::asio::post().
2518
+ * manner equivalent to using boost::asio::async_immediate().
2519
2519
  *
2520
2520
  * @par Completion Signature
2521
2521
  * @code void(boost::system::error_code,
@@ -491,7 +491,7 @@ public:
491
491
  * Regardless of whether the asynchronous operation completes immediately or
492
492
  * not, the completion handler will not be invoked from within this function.
493
493
  * On immediate completion, invocation of the handler will be performed in a
494
- * manner equivalent to using boost::asio::post().
494
+ * manner equivalent to using boost::asio::async_immediate().
495
495
  *
496
496
  * @par Completion Signature
497
497
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -619,7 +619,7 @@ public:
619
619
  * Regardless of whether the asynchronous operation completes immediately or
620
620
  * not, the completion handler will not be invoked from within this function.
621
621
  * On immediate completion, invocation of the handler will be performed in a
622
- * manner equivalent to using boost::asio::post().
622
+ * manner equivalent to using boost::asio::async_immediate().
623
623
  *
624
624
  * @par Completion Signature
625
625
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -462,7 +462,7 @@ public:
462
462
  * Regardless of whether the asynchronous operation completes immediately or
463
463
  * not, the completion handler will not be invoked from within this function.
464
464
  * On immediate completion, invocation of the handler will be performed in a
465
- * manner equivalent to using boost::asio::post().
465
+ * manner equivalent to using boost::asio::async_immediate().
466
466
  *
467
467
  * @par Completion Signature
468
468
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -532,7 +532,7 @@ public:
532
532
  * Regardless of whether the asynchronous operation completes immediately or
533
533
  * not, the completion handler will not be invoked from within this function.
534
534
  * On immediate completion, invocation of the handler will be performed in a
535
- * manner equivalent to using boost::asio::post().
535
+ * manner equivalent to using boost::asio::async_immediate().
536
536
  *
537
537
  * @par Completion Signature
538
538
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -704,7 +704,7 @@ public:
704
704
  * Regardless of whether the asynchronous operation completes immediately or
705
705
  * not, the completion handler will not be invoked from within this function.
706
706
  * On immediate completion, invocation of the handler will be performed in a
707
- * manner equivalent to using boost::asio::post().
707
+ * manner equivalent to using boost::asio::async_immediate().
708
708
  *
709
709
  * @par Completion Signature
710
710
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -776,7 +776,7 @@ public:
776
776
  * Regardless of whether the asynchronous operation completes immediately or
777
777
  * not, the completion handler will not be invoked from within this function.
778
778
  * On immediate completion, invocation of the handler will be performed in a
779
- * manner equivalent to using boost::asio::post().
779
+ * manner equivalent to using boost::asio::async_immediate().
780
780
  *
781
781
  * @par Completion Signature
782
782
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -906,7 +906,7 @@ public:
906
906
  * Regardless of whether the asynchronous operation completes immediately or
907
907
  * not, the completion handler will not be invoked from within this function.
908
908
  * On immediate completion, invocation of the handler will be performed in a
909
- * manner equivalent to using boost::asio::post().
909
+ * manner equivalent to using boost::asio::async_immediate().
910
910
  *
911
911
  * @par Completion Signature
912
912
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -1037,7 +1037,7 @@ public:
1037
1037
  * Regardless of whether the asynchronous operation completes immediately or
1038
1038
  * not, the completion handler will not be invoked from within this function.
1039
1039
  * On immediate completion, invocation of the handler will be performed in a
1040
- * manner equivalent to using boost::asio::post().
1040
+ * manner equivalent to using boost::asio::async_immediate().
1041
1041
  *
1042
1042
  * @par Completion Signature
1043
1043
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -76,7 +76,7 @@ class basic_waitable_timer;
76
76
  * timer.wait();
77
77
  * @endcode
78
78
  *
79
- * @par
79
+ * @par
80
80
  * Performing an asynchronous wait (C++11):
81
81
  * @code
82
82
  * void handler(const boost::system::error_code& error)
@@ -747,7 +747,7 @@ public:
747
747
  * Regardless of whether the asynchronous operation completes immediately or
748
748
  * not, the completion handler will not be invoked from within this function.
749
749
  * On immediate completion, invocation of the handler will be performed in a
750
- * manner equivalent to using boost::asio::post().
750
+ * manner equivalent to using boost::asio::async_immediate().
751
751
  *
752
752
  * @par Completion Signature
753
753
  * @code void(boost::system::error_code) @endcode
@@ -533,7 +533,7 @@ public:
533
533
  * Regardless of whether the asynchronous operation completes immediately or
534
534
  * not, the completion handler will not be invoked from within this function.
535
535
  * On immediate completion, invocation of the handler will be performed in a
536
- * manner equivalent to using boost::asio::post().
536
+ * manner equivalent to using boost::asio::async_immediate().
537
537
  *
538
538
  * @par Completion Signature
539
539
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -16,10 +16,12 @@
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
18
  #include <boost/asio/detail/config.hpp>
19
- #include <boost/asio/detail/type_traits.hpp>
20
19
  #include <boost/asio/associated_allocator.hpp>
20
+ #include <boost/asio/associated_executor.hpp>
21
21
  #include <boost/asio/associator.hpp>
22
22
  #include <boost/asio/async_result.hpp>
23
+ #include <boost/asio/detail/initiation_base.hpp>
24
+ #include <boost/asio/detail/type_traits.hpp>
23
25
 
24
26
  #include <boost/asio/detail/push_options.hpp>
25
27
 
@@ -361,6 +363,46 @@ private:
361
363
  T target_;
362
364
  };
363
365
 
366
+ /// A function object type that adapts a @ref completion_token to specify that
367
+ /// the completion handler should have the supplied allocator as its associated
368
+ /// allocator.
369
+ /**
370
+ * May also be used directly as a completion token, in which case it adapts the
371
+ * asynchronous operation's default completion token (or boost::asio::deferred
372
+ * if no default is available).
373
+ */
374
+ template <typename Allocator>
375
+ struct partial_allocator_binder
376
+ {
377
+ /// Constructor that specifies associated allocator.
378
+ explicit partial_allocator_binder(const Allocator& ex)
379
+ : allocator_(ex)
380
+ {
381
+ }
382
+
383
+ /// Adapt a @ref completion_token to specify that the completion handler
384
+ /// should have the allocator as its associated allocator.
385
+ template <typename CompletionToken>
386
+ BOOST_ASIO_NODISCARD inline
387
+ constexpr allocator_binder<decay_t<CompletionToken>, Allocator>
388
+ operator()(CompletionToken&& completion_token) const
389
+ {
390
+ return allocator_binder<decay_t<CompletionToken>, Allocator>(
391
+ allocator_, static_cast<CompletionToken&&>(completion_token));
392
+ }
393
+
394
+ //private:
395
+ Allocator allocator_;
396
+ };
397
+
398
+ /// Create a partial completion token that associates an allocator.
399
+ template <typename Allocator>
400
+ BOOST_ASIO_NODISCARD inline partial_allocator_binder<Allocator>
401
+ bind_allocator(const Allocator& ex)
402
+ {
403
+ return partial_allocator_binder<Allocator>(ex);
404
+ }
405
+
364
406
  /// Associate an object of type @c T with an allocator of type
365
407
  /// @c Allocator.
366
408
  template <typename Allocator, typename T>
@@ -438,49 +480,48 @@ public:
438
480
  }
439
481
 
440
482
  template <typename Initiation>
441
- struct init_wrapper
483
+ struct init_wrapper : detail::initiation_base<Initiation>
442
484
  {
443
- template <typename Init>
444
- init_wrapper(const Allocator& allocator, Init&& init)
445
- : allocator_(allocator),
446
- initiation_(static_cast<Init&&>(init))
447
- {
448
- }
485
+ using detail::initiation_base<Initiation>::initiation_base;
449
486
 
450
487
  template <typename Handler, typename... Args>
451
- void operator()(Handler&& handler, Args&&... args)
488
+ void operator()(Handler&& handler, const Allocator& a, Args&&... args) &&
452
489
  {
453
- static_cast<Initiation&&>(initiation_)(
490
+ static_cast<Initiation&&>(*this)(
454
491
  allocator_binder<decay_t<Handler>, Allocator>(
455
- allocator_, static_cast<Handler&&>(handler)),
492
+ a, static_cast<Handler&&>(handler)),
456
493
  static_cast<Args&&>(args)...);
457
494
  }
458
495
 
459
496
  template <typename Handler, typename... Args>
460
- void operator()(Handler&& handler, Args&&... args) const
497
+ void operator()(Handler&& handler,
498
+ const Allocator& a, Args&&... args) const &
461
499
  {
462
- initiation_(
500
+ static_cast<const Initiation&>(*this)(
463
501
  allocator_binder<decay_t<Handler>, Allocator>(
464
- allocator_, static_cast<Handler&&>(handler)),
502
+ a, static_cast<Handler&&>(handler)),
465
503
  static_cast<Args&&>(args)...);
466
504
  }
467
-
468
- Allocator allocator_;
469
- Initiation initiation_;
470
505
  };
471
506
 
472
507
  template <typename Initiation, typename RawCompletionToken, typename... Args>
473
508
  static auto initiate(Initiation&& initiation,
474
509
  RawCompletionToken&& token, Args&&... args)
475
510
  -> decltype(
476
- async_initiate<T, Signature>(
511
+ async_initiate<
512
+ conditional_t<
513
+ is_const<remove_reference_t<RawCompletionToken>>::value, const T, T>,
514
+ Signature>(
477
515
  declval<init_wrapper<decay_t<Initiation>>>(),
478
- token.get(), static_cast<Args&&>(args)...))
516
+ token.get(), token.get_allocator(), static_cast<Args&&>(args)...))
479
517
  {
480
- return async_initiate<T, Signature>(
481
- init_wrapper<decay_t<Initiation>>(token.get_allocator(),
518
+ return async_initiate<
519
+ conditional_t<
520
+ is_const<remove_reference_t<RawCompletionToken>>::value, const T, T>,
521
+ Signature>(
522
+ init_wrapper<decay_t<Initiation>>(
482
523
  static_cast<Initiation&&>(initiation)),
483
- token.get(), static_cast<Args&&>(args)...);
524
+ token.get(), token.get_allocator(), static_cast<Args&&>(args)...);
484
525
  }
485
526
 
486
527
  private:
@@ -490,6 +531,31 @@ private:
490
531
  async_result<T, Signature> target_;
491
532
  };
492
533
 
534
+ template <typename Allocator, typename... Signatures>
535
+ struct async_result<partial_allocator_binder<Allocator>, Signatures...>
536
+ {
537
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
538
+ static auto initiate(Initiation&& initiation,
539
+ RawCompletionToken&& token, Args&&... args)
540
+ -> decltype(
541
+ async_initiate<Signatures...>(
542
+ static_cast<Initiation&&>(initiation),
543
+ allocator_binder<
544
+ default_completion_token_t<associated_executor_t<Initiation>>,
545
+ Allocator>(token.allocator_,
546
+ default_completion_token_t<associated_executor_t<Initiation>>{}),
547
+ static_cast<Args&&>(args)...))
548
+ {
549
+ return async_initiate<Signatures...>(
550
+ static_cast<Initiation&&>(initiation),
551
+ allocator_binder<
552
+ default_completion_token_t<associated_executor_t<Initiation>>,
553
+ Allocator>(token.allocator_,
554
+ default_completion_token_t<associated_executor_t<Initiation>>{}),
555
+ static_cast<Args&&>(args)...);
556
+ }
557
+ };
558
+
493
559
  template <template <typename, typename> class Associator,
494
560
  typename T, typename Allocator, typename DefaultCandidate>
495
561
  struct associator<Associator, allocator_binder<T, Allocator>, DefaultCandidate>