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
@@ -69,6 +69,19 @@ namespace detail
69
69
  }
70
70
  return std::make_pair(last1, false);
71
71
  }
72
+
73
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
74
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
75
+ struct regex_match_flags
76
+ {
77
+ template <typename T>
78
+ operator T() const
79
+ {
80
+ return T::match_default | T::match_partial;
81
+ }
82
+ };
83
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
84
+ #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
72
85
  } // namespace detail
73
86
 
74
87
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
@@ -232,19 +245,6 @@ std::size_t read_until(SyncReadStream& s,
232
245
  #if !defined(BOOST_ASIO_NO_EXTENSIONS)
233
246
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
234
247
 
235
- namespace detail {
236
-
237
- struct regex_match_flags
238
- {
239
- template <typename T>
240
- operator T() const
241
- {
242
- return T::match_default | T::match_partial;
243
- }
244
- };
245
-
246
- } // namespace detail
247
-
248
248
  template <typename SyncReadStream, typename DynamicBuffer_v1, typename Traits>
249
249
  inline std::size_t read_until(SyncReadStream& s, DynamicBuffer_v1&& buffers,
250
250
  const boost::basic_regex<char, Traits>& expr,
@@ -1029,29 +1029,6 @@ struct associator<Associator,
1029
1029
 
1030
1030
  #endif // !defined(GENERATING_DOCUMENTATION)
1031
1031
 
1032
- template <typename AsyncReadStream, typename DynamicBuffer_v1,
1033
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1034
- std::size_t)) ReadToken>
1035
- inline auto async_read_until(AsyncReadStream& s,
1036
- DynamicBuffer_v1&& buffers, char delim, ReadToken&& token,
1037
- constraint_t<
1038
- is_dynamic_buffer_v1<decay_t<DynamicBuffer_v1>>::value
1039
- >,
1040
- constraint_t<
1041
- !is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
1042
- >)
1043
- -> decltype(
1044
- async_initiate<ReadToken,
1045
- void (boost::system::error_code, std::size_t)>(
1046
- declval<detail::initiate_async_read_until_delim_v1<AsyncReadStream>>(),
1047
- token, static_cast<DynamicBuffer_v1&&>(buffers), delim))
1048
- {
1049
- return async_initiate<ReadToken,
1050
- void (boost::system::error_code, std::size_t)>(
1051
- detail::initiate_async_read_until_delim_v1<AsyncReadStream>(s),
1052
- token, static_cast<DynamicBuffer_v1&&>(buffers), delim);
1053
- }
1054
-
1055
1032
  namespace detail
1056
1033
  {
1057
1034
  template <typename AsyncReadStream,
@@ -1280,32 +1257,6 @@ struct associator<Associator,
1280
1257
 
1281
1258
  #endif // !defined(GENERATING_DOCUMENTATION)
1282
1259
 
1283
- template <typename AsyncReadStream, typename DynamicBuffer_v1,
1284
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1285
- std::size_t)) ReadToken>
1286
- inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
1287
- BOOST_ASIO_STRING_VIEW_PARAM delim, ReadToken&& token,
1288
- constraint_t<
1289
- is_dynamic_buffer_v1<decay_t<DynamicBuffer_v1>>::value
1290
- >,
1291
- constraint_t<
1292
- !is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
1293
- >)
1294
- -> decltype(
1295
- async_initiate<ReadToken,
1296
- void (boost::system::error_code, std::size_t)>(
1297
- declval<detail::initiate_async_read_until_delim_string_v1<
1298
- AsyncReadStream>>(),
1299
- token, static_cast<DynamicBuffer_v1&&>(buffers),
1300
- static_cast<std::string>(delim)))
1301
- {
1302
- return async_initiate<ReadToken,
1303
- void (boost::system::error_code, std::size_t)>(
1304
- detail::initiate_async_read_until_delim_string_v1<AsyncReadStream>(s),
1305
- token, static_cast<DynamicBuffer_v1&&>(buffers),
1306
- static_cast<std::string>(delim));
1307
- }
1308
-
1309
1260
  #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1310
1261
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
1311
1262
 
@@ -1538,29 +1489,6 @@ struct associator<Associator,
1538
1489
 
1539
1490
  #endif // !defined(GENERATING_DOCUMENTATION)
1540
1491
 
1541
- template <typename AsyncReadStream, typename DynamicBuffer_v1, typename Traits,
1542
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1543
- std::size_t)) ReadToken>
1544
- inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
1545
- const boost::basic_regex<char, Traits>& expr, ReadToken&& token,
1546
- constraint_t<
1547
- is_dynamic_buffer_v1<decay_t<DynamicBuffer_v1>>::value
1548
- >,
1549
- constraint_t<
1550
- !is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
1551
- >)
1552
- -> decltype(
1553
- async_initiate<ReadToken,
1554
- void (boost::system::error_code, std::size_t)>(
1555
- declval<detail::initiate_async_read_until_expr_v1<AsyncReadStream>>(),
1556
- token, static_cast<DynamicBuffer_v1&&>(buffers), expr))
1557
- {
1558
- return async_initiate<ReadToken,
1559
- void (boost::system::error_code, std::size_t)>(
1560
- detail::initiate_async_read_until_expr_v1<AsyncReadStream>(s),
1561
- token, static_cast<DynamicBuffer_v1&&>(buffers), expr);
1562
- }
1563
-
1564
1492
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1565
1493
 
1566
1494
  namespace detail
@@ -1791,117 +1719,6 @@ struct associator<Associator,
1791
1719
 
1792
1720
  #endif // !defined(GENERATING_DOCUMENTATION)
1793
1721
 
1794
- template <typename AsyncReadStream,
1795
- typename DynamicBuffer_v1, typename MatchCondition,
1796
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1797
- std::size_t)) ReadToken>
1798
- inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
1799
- MatchCondition match_condition, ReadToken&& token,
1800
- constraint_t<
1801
- is_match_condition<MatchCondition>::value
1802
- >,
1803
- constraint_t<
1804
- is_dynamic_buffer_v1<decay_t<DynamicBuffer_v1>>::value
1805
- >,
1806
- constraint_t<
1807
- !is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
1808
- >)
1809
- -> decltype(
1810
- async_initiate<ReadToken,
1811
- void (boost::system::error_code, std::size_t)>(
1812
- declval<detail::initiate_async_read_until_match_v1<AsyncReadStream>>(),
1813
- token, static_cast<DynamicBuffer_v1&&>(buffers),
1814
- match_condition))
1815
- {
1816
- return async_initiate<ReadToken,
1817
- void (boost::system::error_code, std::size_t)>(
1818
- detail::initiate_async_read_until_match_v1<AsyncReadStream>(s),
1819
- token, static_cast<DynamicBuffer_v1&&>(buffers),
1820
- match_condition);
1821
- }
1822
-
1823
- #if !defined(BOOST_ASIO_NO_IOSTREAM)
1824
-
1825
- template <typename AsyncReadStream, typename Allocator,
1826
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1827
- std::size_t)) ReadToken>
1828
- inline auto async_read_until(AsyncReadStream& s,
1829
- boost::asio::basic_streambuf<Allocator>& b, char delim, ReadToken&& token)
1830
- -> decltype(
1831
- async_initiate<ReadToken,
1832
- void (boost::system::error_code, std::size_t)>(
1833
- declval<detail::initiate_async_read_until_delim_v1<AsyncReadStream>>(),
1834
- token, basic_streambuf_ref<Allocator>(b), delim))
1835
- {
1836
- return async_initiate<ReadToken,
1837
- void (boost::system::error_code, std::size_t)>(
1838
- detail::initiate_async_read_until_delim_v1<AsyncReadStream>(s),
1839
- token, basic_streambuf_ref<Allocator>(b), delim);
1840
- }
1841
-
1842
- template <typename AsyncReadStream, typename Allocator,
1843
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1844
- std::size_t)) ReadToken>
1845
- inline auto async_read_until(AsyncReadStream& s,
1846
- boost::asio::basic_streambuf<Allocator>& b,
1847
- BOOST_ASIO_STRING_VIEW_PARAM delim, ReadToken&& token)
1848
- -> decltype(
1849
- async_initiate<ReadToken,
1850
- void (boost::system::error_code, std::size_t)>(
1851
- declval<detail::initiate_async_read_until_delim_string_v1<
1852
- AsyncReadStream>>(),
1853
- token, basic_streambuf_ref<Allocator>(b),
1854
- static_cast<std::string>(delim)))
1855
- {
1856
- return async_initiate<ReadToken,
1857
- void (boost::system::error_code, std::size_t)>(
1858
- detail::initiate_async_read_until_delim_string_v1<AsyncReadStream>(s),
1859
- token, basic_streambuf_ref<Allocator>(b),
1860
- static_cast<std::string>(delim));
1861
- }
1862
-
1863
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
1864
-
1865
- template <typename AsyncReadStream, typename Allocator, typename Traits,
1866
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1867
- std::size_t)) ReadToken>
1868
- inline auto async_read_until(AsyncReadStream& s,
1869
- boost::asio::basic_streambuf<Allocator>& b,
1870
- const boost::basic_regex<char, Traits>& expr, ReadToken&& token)
1871
- -> decltype(
1872
- async_initiate<ReadToken,
1873
- void (boost::system::error_code, std::size_t)>(
1874
- declval<detail::initiate_async_read_until_expr_v1<AsyncReadStream>>(),
1875
- token, basic_streambuf_ref<Allocator>(b), expr))
1876
- {
1877
- return async_initiate<ReadToken,
1878
- void (boost::system::error_code, std::size_t)>(
1879
- detail::initiate_async_read_until_expr_v1<AsyncReadStream>(s),
1880
- token, basic_streambuf_ref<Allocator>(b), expr);
1881
- }
1882
-
1883
- #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1884
-
1885
- template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
1886
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1887
- std::size_t)) ReadToken>
1888
- inline auto async_read_until(AsyncReadStream& s,
1889
- boost::asio::basic_streambuf<Allocator>& b,
1890
- MatchCondition match_condition, ReadToken&& token,
1891
- constraint_t<is_match_condition<MatchCondition>::value>)
1892
- -> decltype(
1893
- async_initiate<ReadToken,
1894
- void (boost::system::error_code, std::size_t)>(
1895
- declval<detail::initiate_async_read_until_match_v1<AsyncReadStream>>(),
1896
- token, basic_streambuf_ref<Allocator>(b), match_condition))
1897
- {
1898
- return async_initiate<ReadToken,
1899
- void (boost::system::error_code, std::size_t)>(
1900
- detail::initiate_async_read_until_match_v1<AsyncReadStream>(s),
1901
- token, basic_streambuf_ref<Allocator>(b), match_condition);
1902
- }
1903
-
1904
- #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
1905
1722
  #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1906
1723
  #endif // !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1907
1724
 
@@ -2129,26 +1946,6 @@ struct associator<Associator,
2129
1946
 
2130
1947
  #endif // !defined(GENERATING_DOCUMENTATION)
2131
1948
 
2132
- template <typename AsyncReadStream, typename DynamicBuffer_v2,
2133
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2134
- std::size_t)) ReadToken>
2135
- inline auto async_read_until(AsyncReadStream& s,
2136
- DynamicBuffer_v2 buffers, char delim, ReadToken&& token,
2137
- constraint_t<
2138
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2139
- >)
2140
- -> decltype(
2141
- async_initiate<ReadToken,
2142
- void (boost::system::error_code, std::size_t)>(
2143
- declval<detail::initiate_async_read_until_delim_v2<AsyncReadStream>>(),
2144
- token, static_cast<DynamicBuffer_v2&&>(buffers), delim))
2145
- {
2146
- return async_initiate<ReadToken,
2147
- void (boost::system::error_code, std::size_t)>(
2148
- detail::initiate_async_read_until_delim_v2<AsyncReadStream>(s),
2149
- token, static_cast<DynamicBuffer_v2&&>(buffers), delim);
2150
- }
2151
-
2152
1949
  namespace detail
2153
1950
  {
2154
1951
  template <typename AsyncReadStream,
@@ -2385,30 +2182,6 @@ struct associator<Associator,
2385
2182
 
2386
2183
  #endif // !defined(GENERATING_DOCUMENTATION)
2387
2184
 
2388
- template <typename AsyncReadStream,
2389
- typename DynamicBuffer_v2,
2390
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2391
- std::size_t)) ReadToken>
2392
- inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2393
- BOOST_ASIO_STRING_VIEW_PARAM delim, ReadToken&& token,
2394
- constraint_t<
2395
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2396
- >)
2397
- -> decltype(
2398
- async_initiate<ReadToken,
2399
- void (boost::system::error_code, std::size_t)>(
2400
- declval<detail::initiate_async_read_until_delim_string_v2<
2401
- AsyncReadStream>>(),
2402
- token, static_cast<DynamicBuffer_v2&&>(buffers),
2403
- static_cast<std::string>(delim)))
2404
- {
2405
- return async_initiate<ReadToken,
2406
- void (boost::system::error_code, std::size_t)>(
2407
- detail::initiate_async_read_until_delim_string_v2<AsyncReadStream>(s),
2408
- token, static_cast<DynamicBuffer_v2&&>(buffers),
2409
- static_cast<std::string>(delim));
2410
- }
2411
-
2412
2185
  #if !defined(BOOST_ASIO_NO_EXTENSIONS)
2413
2186
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
2414
2187
 
@@ -2650,26 +2423,6 @@ struct associator<Associator,
2650
2423
 
2651
2424
  #endif // !defined(GENERATING_DOCUMENTATION)
2652
2425
 
2653
- template <typename AsyncReadStream, typename DynamicBuffer_v2, typename Traits,
2654
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2655
- std::size_t)) ReadToken>
2656
- inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2657
- const boost::basic_regex<char, Traits>& expr, ReadToken&& token,
2658
- constraint_t<
2659
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2660
- >)
2661
- -> decltype(
2662
- async_initiate<ReadToken,
2663
- void (boost::system::error_code, std::size_t)>(
2664
- declval<detail::initiate_async_read_until_expr_v2<AsyncReadStream>>(),
2665
- token, static_cast<DynamicBuffer_v2&&>(buffers), expr))
2666
- {
2667
- return async_initiate<ReadToken,
2668
- void (boost::system::error_code, std::size_t)>(
2669
- detail::initiate_async_read_until_expr_v2<AsyncReadStream>(s),
2670
- token, static_cast<DynamicBuffer_v2&&>(buffers), expr);
2671
- }
2672
-
2673
2426
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
2674
2427
 
2675
2428
  namespace detail
@@ -2907,32 +2660,6 @@ struct associator<Associator,
2907
2660
 
2908
2661
  #endif // !defined(GENERATING_DOCUMENTATION)
2909
2662
 
2910
- template <typename AsyncReadStream,
2911
- typename DynamicBuffer_v2, typename MatchCondition,
2912
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2913
- std::size_t)) ReadToken>
2914
- inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2915
- MatchCondition match_condition, ReadToken&& token,
2916
- constraint_t<
2917
- is_match_condition<MatchCondition>::value
2918
- >,
2919
- constraint_t<
2920
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2921
- >)
2922
- -> decltype(
2923
- async_initiate<ReadToken,
2924
- void (boost::system::error_code, std::size_t)>(
2925
- declval<detail::initiate_async_read_until_match_v2<AsyncReadStream>>(),
2926
- token, static_cast<DynamicBuffer_v2&&>(buffers),
2927
- match_condition))
2928
- {
2929
- return async_initiate<ReadToken,
2930
- void (boost::system::error_code, std::size_t)>(
2931
- detail::initiate_async_read_until_match_v2<AsyncReadStream>(s),
2932
- token, static_cast<DynamicBuffer_v2&&>(buffers),
2933
- match_condition);
2934
- }
2935
-
2936
2663
  #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
2937
2664
 
2938
2665
  } // namespace asio
@@ -16,9 +16,11 @@
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
18
  #include <boost/asio/detail/config.hpp>
19
+ #include <boost/asio/associated_executor.hpp>
19
20
  #include <boost/asio/associator.hpp>
20
21
  #include <boost/asio/async_result.hpp>
21
22
  #include <boost/asio/detail/handler_cont_helpers.hpp>
23
+ #include <boost/asio/detail/initiation_base.hpp>
22
24
  #include <boost/asio/detail/type_traits.hpp>
23
25
  #include <boost/system/system_error.hpp>
24
26
 
@@ -183,42 +185,52 @@ struct async_result<redirect_error_t<CompletionToken>, Signature>
183
185
  : async_result<CompletionToken,
184
186
  typename detail::redirect_error_signature<Signature>::type>
185
187
  {
186
-
187
- struct init_wrapper
188
+ template <typename Initiation>
189
+ struct init_wrapper : detail::initiation_base<Initiation>
188
190
  {
189
- explicit init_wrapper(boost::system::error_code& ec)
190
- : ec_(ec)
191
+ using detail::initiation_base<Initiation>::initiation_base;
192
+
193
+ template <typename Handler, typename... Args>
194
+ void operator()(Handler&& handler,
195
+ boost::system::error_code* ec, Args&&... args) &&
191
196
  {
197
+ static_cast<Initiation&&>(*this)(
198
+ detail::redirect_error_handler<decay_t<Handler>>(
199
+ *ec, static_cast<Handler&&>(handler)),
200
+ static_cast<Args&&>(args)...);
192
201
  }
193
202
 
194
- template <typename Handler, typename Initiation, typename... Args>
203
+ template <typename Handler, typename... Args>
195
204
  void operator()(Handler&& handler,
196
- Initiation&& initiation, Args&&... args) const
205
+ boost::system::error_code* ec, Args&&... args) const &
197
206
  {
198
- static_cast<Initiation&&>(initiation)(
207
+ static_cast<const Initiation&>(*this)(
199
208
  detail::redirect_error_handler<decay_t<Handler>>(
200
- ec_, static_cast<Handler&&>(handler)),
209
+ *ec, static_cast<Handler&&>(handler)),
201
210
  static_cast<Args&&>(args)...);
202
211
  }
203
-
204
- boost::system::error_code& ec_;
205
212
  };
206
213
 
207
214
  template <typename Initiation, typename RawCompletionToken, typename... Args>
208
215
  static auto initiate(Initiation&& initiation,
209
216
  RawCompletionToken&& token, Args&&... args)
210
217
  -> decltype(
211
- async_initiate<CompletionToken,
218
+ async_initiate<
219
+ conditional_t<
220
+ is_const<remove_reference_t<RawCompletionToken>>::value,
221
+ const CompletionToken, CompletionToken>,
212
222
  typename detail::redirect_error_signature<Signature>::type>(
213
- declval<init_wrapper>(), token.token_,
214
- static_cast<Initiation&&>(initiation),
215
- static_cast<Args&&>(args)...))
223
+ declval<init_wrapper<decay_t<Initiation>>>(),
224
+ token.token_, &token.ec_, static_cast<Args&&>(args)...))
216
225
  {
217
- return async_initiate<CompletionToken,
226
+ return async_initiate<
227
+ conditional_t<
228
+ is_const<remove_reference_t<RawCompletionToken>>::value,
229
+ const CompletionToken, CompletionToken>,
218
230
  typename detail::redirect_error_signature<Signature>::type>(
219
- init_wrapper(token.ec_), token.token_,
220
- static_cast<Initiation&&>(initiation),
221
- static_cast<Args&&>(args)...);
231
+ init_wrapper<decay_t<Initiation>>(
232
+ static_cast<Initiation&&>(initiation)),
233
+ token.token_, &token.ec_, static_cast<Args&&>(args)...);
222
234
  }
223
235
  };
224
236
 
@@ -242,6 +254,31 @@ struct associator<Associator,
242
254
  }
243
255
  };
244
256
 
257
+ template <typename... Signatures>
258
+ struct async_result<partial_redirect_error, Signatures...>
259
+ {
260
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
261
+ static auto initiate(Initiation&& initiation,
262
+ RawCompletionToken&& token, Args&&... args)
263
+ -> decltype(
264
+ async_initiate<Signatures...>(
265
+ static_cast<Initiation&&>(initiation),
266
+ redirect_error_t<
267
+ default_completion_token_t<associated_executor_t<Initiation>>>(
268
+ default_completion_token_t<associated_executor_t<Initiation>>{},
269
+ token.ec_),
270
+ static_cast<Args&&>(args)...))
271
+ {
272
+ return async_initiate<Signatures...>(
273
+ static_cast<Initiation&&>(initiation),
274
+ redirect_error_t<
275
+ default_completion_token_t<associated_executor_t<Initiation>>>(
276
+ default_completion_token_t<associated_executor_t<Initiation>>{},
277
+ token.ec_),
278
+ static_cast<Args&&>(args)...);
279
+ }
280
+ };
281
+
245
282
  #endif // !defined(GENERATING_DOCUMENTATION)
246
283
 
247
284
  } // namespace asio
@@ -29,6 +29,7 @@
29
29
  #include <boost/asio/detail/noncopyable.hpp>
30
30
  #include <boost/asio/detail/type_traits.hpp>
31
31
  #include <boost/asio/detail/utility.hpp>
32
+ #include <boost/asio/error.hpp>
32
33
  #include <boost/system/system_error.hpp>
33
34
 
34
35
  #if defined(BOOST_ASIO_HAS_BOOST_CONTEXT_FIBER)
@@ -976,7 +977,6 @@ private:
976
977
  Executor ex_;
977
978
  };
978
979
 
979
-
980
980
  template <typename Handler, typename Executor>
981
981
  class spawn_cancellation_handler<Handler, Executor,
982
982
  enable_if_t<