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
@@ -1603,7 +1603,7 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1603
1603
  * Regardless of whether the asynchronous operation completes immediately or
1604
1604
  * not, the completion handler will not be invoked from within this function.
1605
1605
  * On immediate completion, invocation of the handler will be performed in a
1606
- * manner equivalent to using boost::asio::post().
1606
+ * manner equivalent to using boost::asio::async_immediate().
1607
1607
  *
1608
1608
  * @par Completion Signature
1609
1609
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -1656,7 +1656,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1656
1656
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1657
1657
  std::size_t)) ReadToken = default_completion_token_t<
1658
1658
  typename AsyncReadStream::executor_type>>
1659
- auto async_read_until(AsyncReadStream& s,
1659
+ inline auto async_read_until(AsyncReadStream& s,
1660
1660
  DynamicBuffer_v1&& buffers, char delim,
1661
1661
  ReadToken&& token = default_completion_token_t<
1662
1662
  typename AsyncReadStream::executor_type>(),
@@ -1670,7 +1670,13 @@ auto async_read_until(AsyncReadStream& s,
1670
1670
  async_initiate<ReadToken,
1671
1671
  void (boost::system::error_code, std::size_t)>(
1672
1672
  declval<detail::initiate_async_read_until_delim_v1<AsyncReadStream>>(),
1673
- token, static_cast<DynamicBuffer_v1&&>(buffers), delim));
1673
+ token, static_cast<DynamicBuffer_v1&&>(buffers), delim))
1674
+ {
1675
+ return async_initiate<ReadToken,
1676
+ void (boost::system::error_code, std::size_t)>(
1677
+ detail::initiate_async_read_until_delim_v1<AsyncReadStream>(s),
1678
+ token, static_cast<DynamicBuffer_v1&&>(buffers), delim);
1679
+ }
1674
1680
 
1675
1681
  /// Start an asynchronous operation to read data into a dynamic buffer sequence
1676
1682
  /// until it contains a specified delimiter.
@@ -1720,7 +1726,7 @@ auto async_read_until(AsyncReadStream& s,
1720
1726
  * Regardless of whether the asynchronous operation completes immediately or
1721
1727
  * not, the completion handler will not be invoked from within this function.
1722
1728
  * On immediate completion, invocation of the handler will be performed in a
1723
- * manner equivalent to using boost::asio::post().
1729
+ * manner equivalent to using boost::asio::async_immediate().
1724
1730
  *
1725
1731
  * @par Completion Signature
1726
1732
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -1773,7 +1779,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1773
1779
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1774
1780
  std::size_t)) ReadToken = default_completion_token_t<
1775
1781
  typename AsyncReadStream::executor_type>>
1776
- auto async_read_until(AsyncReadStream& s,
1782
+ inline auto async_read_until(AsyncReadStream& s,
1777
1783
  DynamicBuffer_v1&& buffers,
1778
1784
  BOOST_ASIO_STRING_VIEW_PARAM delim,
1779
1785
  ReadToken&& token = default_completion_token_t<
@@ -1790,7 +1796,14 @@ auto async_read_until(AsyncReadStream& s,
1790
1796
  declval<detail::initiate_async_read_until_delim_string_v1<
1791
1797
  AsyncReadStream>>(),
1792
1798
  token, static_cast<DynamicBuffer_v1&&>(buffers),
1793
- static_cast<std::string>(delim)));
1799
+ static_cast<std::string>(delim)))
1800
+ {
1801
+ return async_initiate<ReadToken,
1802
+ void (boost::system::error_code, std::size_t)>(
1803
+ detail::initiate_async_read_until_delim_string_v1<AsyncReadStream>(s),
1804
+ token, static_cast<DynamicBuffer_v1&&>(buffers),
1805
+ static_cast<std::string>(delim));
1806
+ }
1794
1807
 
1795
1808
  #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1796
1809
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
@@ -1848,7 +1861,7 @@ auto async_read_until(AsyncReadStream& s,
1848
1861
  * Regardless of whether the asynchronous operation completes immediately or
1849
1862
  * not, the completion handler will not be invoked from within this function.
1850
1863
  * On immediate completion, invocation of the handler will be performed in a
1851
- * manner equivalent to using boost::asio::post().
1864
+ * manner equivalent to using boost::asio::async_immediate().
1852
1865
  *
1853
1866
  * @par Completion Signature
1854
1867
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -1902,7 +1915,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v1, typename Traits,
1902
1915
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1903
1916
  std::size_t)) ReadToken = default_completion_token_t<
1904
1917
  typename AsyncReadStream::executor_type>>
1905
- auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
1918
+ inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
1906
1919
  const boost::basic_regex<char, Traits>& expr,
1907
1920
  ReadToken&& token = default_completion_token_t<
1908
1921
  typename AsyncReadStream::executor_type>(),
@@ -1916,7 +1929,13 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
1916
1929
  async_initiate<ReadToken,
1917
1930
  void (boost::system::error_code, std::size_t)>(
1918
1931
  declval<detail::initiate_async_read_until_expr_v1<AsyncReadStream>>(),
1919
- token, static_cast<DynamicBuffer_v1&&>(buffers), expr));
1932
+ token, static_cast<DynamicBuffer_v1&&>(buffers), expr))
1933
+ {
1934
+ return async_initiate<ReadToken,
1935
+ void (boost::system::error_code, std::size_t)>(
1936
+ detail::initiate_async_read_until_expr_v1<AsyncReadStream>(s),
1937
+ token, static_cast<DynamicBuffer_v1&&>(buffers), expr);
1938
+ }
1920
1939
 
1921
1940
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1922
1941
  // || defined(GENERATING_DOCUMENTATION)
@@ -1984,7 +2003,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
1984
2003
  * Regardless of whether the asynchronous operation completes immediately or
1985
2004
  * not, the completion handler will not be invoked from within this function.
1986
2005
  * On immediate completion, invocation of the handler will be performed in a
1987
- * manner equivalent to using boost::asio::post().
2006
+ * manner equivalent to using boost::asio::async_immediate().
1988
2007
  *
1989
2008
  * @note After a successful async_read_until operation, the dynamic buffer
1990
2009
  * sequence may contain additional data beyond that which matched the function
@@ -2070,7 +2089,7 @@ template <typename AsyncReadStream,
2070
2089
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2071
2090
  std::size_t)) ReadToken = default_completion_token_t<
2072
2091
  typename AsyncReadStream::executor_type>>
2073
- auto async_read_until(AsyncReadStream& s,
2092
+ inline auto async_read_until(AsyncReadStream& s,
2074
2093
  DynamicBuffer_v1&& buffers, MatchCondition match_condition,
2075
2094
  ReadToken&& token = default_completion_token_t<
2076
2095
  typename AsyncReadStream::executor_type>(),
@@ -2088,7 +2107,14 @@ auto async_read_until(AsyncReadStream& s,
2088
2107
  void (boost::system::error_code, std::size_t)>(
2089
2108
  declval<detail::initiate_async_read_until_match_v1<AsyncReadStream>>(),
2090
2109
  token, static_cast<DynamicBuffer_v1&&>(buffers),
2091
- match_condition));
2110
+ match_condition))
2111
+ {
2112
+ return async_initiate<ReadToken,
2113
+ void (boost::system::error_code, std::size_t)>(
2114
+ detail::initiate_async_read_until_match_v1<AsyncReadStream>(s),
2115
+ token, static_cast<DynamicBuffer_v1&&>(buffers),
2116
+ match_condition);
2117
+ }
2092
2118
 
2093
2119
  #if !defined(BOOST_ASIO_NO_IOSTREAM)
2094
2120
 
@@ -2139,7 +2165,7 @@ auto async_read_until(AsyncReadStream& s,
2139
2165
  * Regardless of whether the asynchronous operation completes immediately or
2140
2166
  * not, the completion handler will not be invoked from within this function.
2141
2167
  * On immediate completion, invocation of the handler will be performed in a
2142
- * manner equivalent to using boost::asio::post().
2168
+ * manner equivalent to using boost::asio::async_immediate().
2143
2169
  *
2144
2170
  * @par Completion Signature
2145
2171
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -2191,7 +2217,7 @@ template <typename AsyncReadStream, typename Allocator,
2191
2217
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2192
2218
  std::size_t)) ReadToken = default_completion_token_t<
2193
2219
  typename AsyncReadStream::executor_type>>
2194
- auto async_read_until(AsyncReadStream& s,
2220
+ inline auto async_read_until(AsyncReadStream& s,
2195
2221
  boost::asio::basic_streambuf<Allocator>& b, char delim,
2196
2222
  ReadToken&& token = default_completion_token_t<
2197
2223
  typename AsyncReadStream::executor_type>())
@@ -2199,7 +2225,13 @@ auto async_read_until(AsyncReadStream& s,
2199
2225
  async_initiate<ReadToken,
2200
2226
  void (boost::system::error_code, std::size_t)>(
2201
2227
  declval<detail::initiate_async_read_until_delim_v1<AsyncReadStream>>(),
2202
- token, basic_streambuf_ref<Allocator>(b), delim));
2228
+ token, basic_streambuf_ref<Allocator>(b), delim))
2229
+ {
2230
+ return async_initiate<ReadToken,
2231
+ void (boost::system::error_code, std::size_t)>(
2232
+ detail::initiate_async_read_until_delim_v1<AsyncReadStream>(s),
2233
+ token, basic_streambuf_ref<Allocator>(b), delim);
2234
+ }
2203
2235
 
2204
2236
  /// Start an asynchronous operation to read data into a streambuf until it
2205
2237
  /// contains a specified delimiter.
@@ -2248,7 +2280,7 @@ auto async_read_until(AsyncReadStream& s,
2248
2280
  * Regardless of whether the asynchronous operation completes immediately or
2249
2281
  * not, the completion handler will not be invoked from within this function.
2250
2282
  * On immediate completion, invocation of the handler will be performed in a
2251
- * manner equivalent to using boost::asio::post().
2283
+ * manner equivalent to using boost::asio::async_immediate().
2252
2284
  *
2253
2285
  * @par Completion Signature
2254
2286
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -2300,7 +2332,7 @@ template <typename AsyncReadStream, typename Allocator,
2300
2332
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2301
2333
  std::size_t)) ReadToken = default_completion_token_t<
2302
2334
  typename AsyncReadStream::executor_type>>
2303
- auto async_read_until(AsyncReadStream& s,
2335
+ inline auto async_read_until(AsyncReadStream& s,
2304
2336
  boost::asio::basic_streambuf<Allocator>& b,
2305
2337
  BOOST_ASIO_STRING_VIEW_PARAM delim,
2306
2338
  ReadToken&& token = default_completion_token_t<
@@ -2311,7 +2343,14 @@ auto async_read_until(AsyncReadStream& s,
2311
2343
  declval<detail::initiate_async_read_until_delim_string_v1<
2312
2344
  AsyncReadStream>>(),
2313
2345
  token, basic_streambuf_ref<Allocator>(b),
2314
- static_cast<std::string>(delim)));
2346
+ static_cast<std::string>(delim)))
2347
+ {
2348
+ return async_initiate<ReadToken,
2349
+ void (boost::system::error_code, std::size_t)>(
2350
+ detail::initiate_async_read_until_delim_string_v1<AsyncReadStream>(s),
2351
+ token, basic_streambuf_ref<Allocator>(b),
2352
+ static_cast<std::string>(delim));
2353
+ }
2315
2354
 
2316
2355
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
2317
2356
  || defined(GENERATING_DOCUMENTATION)
@@ -2365,7 +2404,7 @@ auto async_read_until(AsyncReadStream& s,
2365
2404
  * Regardless of whether the asynchronous operation completes immediately or
2366
2405
  * not, the completion handler will not be invoked from within this function.
2367
2406
  * On immediate completion, invocation of the handler will be performed in a
2368
- * manner equivalent to using boost::asio::post().
2407
+ * manner equivalent to using boost::asio::async_immediate().
2369
2408
  *
2370
2409
  * @par Completion Signature
2371
2410
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -2418,7 +2457,7 @@ template <typename AsyncReadStream, typename Allocator, typename Traits,
2418
2457
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2419
2458
  std::size_t)) ReadToken = default_completion_token_t<
2420
2459
  typename AsyncReadStream::executor_type>>
2421
- auto async_read_until(AsyncReadStream& s,
2460
+ inline auto async_read_until(AsyncReadStream& s,
2422
2461
  boost::asio::basic_streambuf<Allocator>& b,
2423
2462
  const boost::basic_regex<char, Traits>& expr,
2424
2463
  ReadToken&& token = default_completion_token_t<
@@ -2427,7 +2466,13 @@ auto async_read_until(AsyncReadStream& s,
2427
2466
  async_initiate<ReadToken,
2428
2467
  void (boost::system::error_code, std::size_t)>(
2429
2468
  declval<detail::initiate_async_read_until_expr_v1<AsyncReadStream>>(),
2430
- token, basic_streambuf_ref<Allocator>(b), expr));
2469
+ token, basic_streambuf_ref<Allocator>(b), expr))
2470
+ {
2471
+ return async_initiate<ReadToken,
2472
+ void (boost::system::error_code, std::size_t)>(
2473
+ detail::initiate_async_read_until_expr_v1<AsyncReadStream>(s),
2474
+ token, basic_streambuf_ref<Allocator>(b), expr);
2475
+ }
2431
2476
 
2432
2477
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
2433
2478
  // || defined(GENERATING_DOCUMENTATION)
@@ -2492,7 +2537,7 @@ auto async_read_until(AsyncReadStream& s,
2492
2537
  * Regardless of whether the asynchronous operation completes immediately or
2493
2538
  * not, the completion handler will not be invoked from within this function.
2494
2539
  * On immediate completion, invocation of the handler will be performed in a
2495
- * manner equivalent to using boost::asio::post().
2540
+ * manner equivalent to using boost::asio::async_immediate().
2496
2541
  *
2497
2542
  * @note After a successful async_read_until operation, the streambuf may
2498
2543
  * contain additional data beyond that which matched the function object. An
@@ -2576,7 +2621,7 @@ template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
2576
2621
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2577
2622
  std::size_t)) ReadToken = default_completion_token_t<
2578
2623
  typename AsyncReadStream::executor_type>>
2579
- auto async_read_until(AsyncReadStream& s,
2624
+ inline auto async_read_until(AsyncReadStream& s,
2580
2625
  boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
2581
2626
  ReadToken&& token = default_completion_token_t<
2582
2627
  typename AsyncReadStream::executor_type>(),
@@ -2585,7 +2630,13 @@ auto async_read_until(AsyncReadStream& s,
2585
2630
  async_initiate<ReadToken,
2586
2631
  void (boost::system::error_code, std::size_t)>(
2587
2632
  declval<detail::initiate_async_read_until_match_v1<AsyncReadStream>>(),
2588
- token, basic_streambuf_ref<Allocator>(b), match_condition));
2633
+ token, basic_streambuf_ref<Allocator>(b), match_condition))
2634
+ {
2635
+ return async_initiate<ReadToken,
2636
+ void (boost::system::error_code, std::size_t)>(
2637
+ detail::initiate_async_read_until_match_v1<AsyncReadStream>(s),
2638
+ token, basic_streambuf_ref<Allocator>(b), match_condition);
2639
+ }
2589
2640
 
2590
2641
  #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
2591
2642
  #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
@@ -2640,7 +2691,7 @@ auto async_read_until(AsyncReadStream& s,
2640
2691
  * Regardless of whether the asynchronous operation completes immediately or
2641
2692
  * not, the completion handler will not be invoked from within this function.
2642
2693
  * On immediate completion, invocation of the handler will be performed in a
2643
- * manner equivalent to using boost::asio::post().
2694
+ * manner equivalent to using boost::asio::async_immediate().
2644
2695
  *
2645
2696
  * @par Completion Signature
2646
2697
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -2693,7 +2744,8 @@ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2693
2744
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2694
2745
  std::size_t)) ReadToken = default_completion_token_t<
2695
2746
  typename AsyncReadStream::executor_type>>
2696
- auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
2747
+ inline auto async_read_until(AsyncReadStream& s,
2748
+ DynamicBuffer_v2 buffers, char delim,
2697
2749
  ReadToken&& token = default_completion_token_t<
2698
2750
  typename AsyncReadStream::executor_type>(),
2699
2751
  constraint_t<
@@ -2703,7 +2755,13 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
2703
2755
  async_initiate<ReadToken,
2704
2756
  void (boost::system::error_code, std::size_t)>(
2705
2757
  declval<detail::initiate_async_read_until_delim_v2<AsyncReadStream>>(),
2706
- token, static_cast<DynamicBuffer_v2&&>(buffers), delim));
2758
+ token, static_cast<DynamicBuffer_v2&&>(buffers), delim))
2759
+ {
2760
+ return async_initiate<ReadToken,
2761
+ void (boost::system::error_code, std::size_t)>(
2762
+ detail::initiate_async_read_until_delim_v2<AsyncReadStream>(s),
2763
+ token, static_cast<DynamicBuffer_v2&&>(buffers), delim);
2764
+ }
2707
2765
 
2708
2766
  /// Start an asynchronous operation to read data into a dynamic buffer sequence
2709
2767
  /// until it contains a specified delimiter.
@@ -2753,7 +2811,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
2753
2811
  * Regardless of whether the asynchronous operation completes immediately or
2754
2812
  * not, the completion handler will not be invoked from within this function.
2755
2813
  * On immediate completion, invocation of the handler will be performed in a
2756
- * manner equivalent to using boost::asio::post().
2814
+ * manner equivalent to using boost::asio::async_immediate().
2757
2815
  *
2758
2816
  * @par Completion Signature
2759
2817
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -2806,7 +2864,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2806
2864
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2807
2865
  std::size_t)) ReadToken = default_completion_token_t<
2808
2866
  typename AsyncReadStream::executor_type>>
2809
- auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2867
+ inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2810
2868
  BOOST_ASIO_STRING_VIEW_PARAM delim,
2811
2869
  ReadToken&& token = default_completion_token_t<
2812
2870
  typename AsyncReadStream::executor_type>(),
@@ -2819,7 +2877,14 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2819
2877
  declval<detail::initiate_async_read_until_delim_string_v2<
2820
2878
  AsyncReadStream>>(),
2821
2879
  token, static_cast<DynamicBuffer_v2&&>(buffers),
2822
- static_cast<std::string>(delim)));
2880
+ static_cast<std::string>(delim)))
2881
+ {
2882
+ return async_initiate<ReadToken,
2883
+ void (boost::system::error_code, std::size_t)>(
2884
+ detail::initiate_async_read_until_delim_string_v2<AsyncReadStream>(s),
2885
+ token, static_cast<DynamicBuffer_v2&&>(buffers),
2886
+ static_cast<std::string>(delim));
2887
+ }
2823
2888
 
2824
2889
  #if !defined(BOOST_ASIO_NO_EXTENSIONS)
2825
2890
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
@@ -2877,7 +2942,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2877
2942
  * Regardless of whether the asynchronous operation completes immediately or
2878
2943
  * not, the completion handler will not be invoked from within this function.
2879
2944
  * On immediate completion, invocation of the handler will be performed in a
2880
- * manner equivalent to using boost::asio::post().
2945
+ * manner equivalent to using boost::asio::async_immediate().
2881
2946
  *
2882
2947
  * @par Completion Signature
2883
2948
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -2931,7 +2996,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v2, typename Traits,
2931
2996
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2932
2997
  std::size_t)) ReadToken = default_completion_token_t<
2933
2998
  typename AsyncReadStream::executor_type>>
2934
- auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2999
+ inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2935
3000
  const boost::basic_regex<char, Traits>& expr,
2936
3001
  ReadToken&& token = default_completion_token_t<
2937
3002
  typename AsyncReadStream::executor_type>(),
@@ -2942,7 +3007,13 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2942
3007
  async_initiate<ReadToken,
2943
3008
  void (boost::system::error_code, std::size_t)>(
2944
3009
  declval<detail::initiate_async_read_until_expr_v2<AsyncReadStream>>(),
2945
- token, static_cast<DynamicBuffer_v2&&>(buffers), expr));
3010
+ token, static_cast<DynamicBuffer_v2&&>(buffers), expr))
3011
+ {
3012
+ return async_initiate<ReadToken,
3013
+ void (boost::system::error_code, std::size_t)>(
3014
+ detail::initiate_async_read_until_expr_v2<AsyncReadStream>(s),
3015
+ token, static_cast<DynamicBuffer_v2&&>(buffers), expr);
3016
+ }
2946
3017
 
2947
3018
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
2948
3019
  // || defined(GENERATING_DOCUMENTATION)
@@ -3010,7 +3081,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
3010
3081
  * Regardless of whether the asynchronous operation completes immediately or
3011
3082
  * not, the completion handler will not be invoked from within this function.
3012
3083
  * On immediate completion, invocation of the handler will be performed in a
3013
- * manner equivalent to using boost::asio::post().
3084
+ * manner equivalent to using boost::asio::async_immediate().
3014
3085
  *
3015
3086
  * @note After a successful async_read_until operation, the dynamic buffer
3016
3087
  * sequence may contain additional data beyond that which matched the function
@@ -3096,7 +3167,7 @@ template <typename AsyncReadStream,
3096
3167
  BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
3097
3168
  std::size_t)) ReadToken = default_completion_token_t<
3098
3169
  typename AsyncReadStream::executor_type>>
3099
- auto async_read_until(AsyncReadStream& s,
3170
+ inline auto async_read_until(AsyncReadStream& s,
3100
3171
  DynamicBuffer_v2 buffers, MatchCondition match_condition,
3101
3172
  ReadToken&& token = default_completion_token_t<
3102
3173
  typename AsyncReadStream::executor_type>(),
@@ -3110,7 +3181,14 @@ auto async_read_until(AsyncReadStream& s,
3110
3181
  async_initiate<ReadToken,
3111
3182
  void (boost::system::error_code, std::size_t)>(
3112
3183
  declval<detail::initiate_async_read_until_match_v2<AsyncReadStream>>(),
3113
- token, static_cast<DynamicBuffer_v2&&>(buffers), match_condition));
3184
+ token, static_cast<DynamicBuffer_v2&&>(buffers), match_condition))
3185
+ {
3186
+ return async_initiate<ReadToken,
3187
+ void (boost::system::error_code, std::size_t)>(
3188
+ detail::initiate_async_read_until_match_v2<AsyncReadStream>(s),
3189
+ token, static_cast<DynamicBuffer_v2&&>(buffers),
3190
+ match_condition);
3191
+ }
3114
3192
 
3115
3193
  #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
3116
3194
 
@@ -34,7 +34,7 @@ template <typename CompletionToken>
34
34
  class redirect_error_t
35
35
  {
36
36
  public:
37
- /// Constructor.
37
+ /// Constructor.
38
38
  template <typename T>
39
39
  redirect_error_t(T&& completion_token, boost::system::error_code& ec)
40
40
  : token_(static_cast<T&&>(completion_token)),
@@ -47,10 +47,50 @@ public:
47
47
  boost::system::error_code& ec_;
48
48
  };
49
49
 
50
+ /// A function object type that adapts a @ref completion_token to capture
51
+ /// error_code values to a variable.
52
+ /**
53
+ * May also be used directly as a completion token, in which case it adapts the
54
+ * asynchronous operation's default completion token (or boost::asio::deferred
55
+ * if no default is available).
56
+ */
57
+ class partial_redirect_error
58
+ {
59
+ public:
60
+ /// Constructor that specifies the variable used to capture error_code values.
61
+ explicit partial_redirect_error(boost::system::error_code& ec)
62
+ : ec_(ec)
63
+ {
64
+ }
65
+
66
+ /// Adapt a @ref completion_token to specify that the completion handler
67
+ /// should capture error_code values to a variable.
68
+ template <typename CompletionToken>
69
+ BOOST_ASIO_NODISCARD inline
70
+ constexpr redirect_error_t<decay_t<CompletionToken>>
71
+ operator()(CompletionToken&& completion_token) const
72
+ {
73
+ return redirect_error_t<decay_t<CompletionToken>>(
74
+ static_cast<CompletionToken&&>(completion_token), ec_);
75
+ }
76
+
77
+ //private:
78
+ boost::system::error_code& ec_;
79
+ };
80
+
81
+ /// Create a partial completion token adapter that captures error_code values
82
+ /// to a variable.
83
+ BOOST_ASIO_NODISCARD inline partial_redirect_error
84
+ redirect_error(boost::system::error_code& ec)
85
+ {
86
+ return partial_redirect_error(ec);
87
+ }
88
+
50
89
  /// Adapt a @ref completion_token to capture error_code values to a variable.
51
90
  template <typename CompletionToken>
52
- inline redirect_error_t<decay_t<CompletionToken>> redirect_error(
53
- CompletionToken&& completion_token, boost::system::error_code& ec)
91
+ BOOST_ASIO_NODISCARD inline redirect_error_t<decay_t<CompletionToken>>
92
+ redirect_error(CompletionToken&& completion_token,
93
+ boost::system::error_code& ec)
54
94
  {
55
95
  return redirect_error_t<decay_t<CompletionToken>>(
56
96
  static_cast<CompletionToken&&>(completion_token), ec);
@@ -79,7 +79,7 @@ private:
79
79
  };
80
80
 
81
81
  /// Holds a registered buffer over modifiable data.
82
- /**
82
+ /**
83
83
  * Satisfies the @c MutableBufferSequence type requirements.
84
84
  */
85
85
  class mutable_registered_buffer
@@ -150,7 +150,7 @@ private:
150
150
  };
151
151
 
152
152
  /// Holds a registered buffer over non-modifiable data.
153
- /**
153
+ /**
154
154
  * Satisfies the @c ConstBufferSequence type requirements.
155
155
  */
156
156
  class const_registered_buffer
@@ -146,7 +146,6 @@ private:
146
146
  }
147
147
  };
148
148
 
149
-
150
149
  template <typename T>
151
150
  struct spawn_signature
152
151
  {
@@ -38,7 +38,7 @@ public:
38
38
  {
39
39
  #if (OPENSSL_VERSION_NUMBER < 0x10100000L)
40
40
  ::SSL_library_init();
41
- ::SSL_load_error_strings();
41
+ ::SSL_load_error_strings();
42
42
  ::OpenSSL_add_all_algorithms();
43
43
 
44
44
  mutexes_.resize(::CRYPTO_num_locks());
@@ -124,7 +124,7 @@ private:
124
124
  #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
125
125
 
126
126
  #if (OPENSSL_VERSION_NUMBER < 0x10100000L)
127
- static void openssl_locking_func(int mode, int n,
127
+ static void openssl_locking_func(int mode, int n,
128
128
  const char* /*file*/, int /*line*/)
129
129
  {
130
130
  if (mode & CRYPTO_LOCK)
@@ -270,8 +270,9 @@ context::context(context::method m)
270
270
  #endif // defined(SSL_TXT_TLSV1_2)
271
271
 
272
272
  // TLS v1.3.
273
- #if (OPENSSL_VERSION_NUMBER >= 0x10101000L) \
274
- && !defined(LIBRESSL_VERSION_NUMBER)
273
+ #if ((OPENSSL_VERSION_NUMBER >= 0x10101000L) \
274
+ && !defined(LIBRESSL_VERSION_NUMBER)) \
275
+ || defined(BOOST_ASIO_USE_WOLFSSL)
275
276
  case context::tlsv13:
276
277
  handle_ = ::SSL_CTX_new(::TLS_method());
277
278
  if (handle_)
@@ -296,16 +297,18 @@ context::context(context::method m)
296
297
  SSL_CTX_set_max_proto_version(handle_, TLS1_3_VERSION);
297
298
  }
298
299
  break;
299
- #else // (OPENSSL_VERSION_NUMBER >= 0x10101000L)
300
- // && !defined(LIBRESSL_VERSION_NUMBER)
300
+ #else // ((OPENSSL_VERSION_NUMBER >= 0x10101000L)
301
+ // && !defined(LIBRESSL_VERSION_NUMBER))
302
+ // || defined(BOOST_ASIO_USE_WOLFSSL)
301
303
  case context::tlsv13:
302
304
  case context::tlsv13_client:
303
305
  case context::tlsv13_server:
304
306
  boost::asio::detail::throw_error(
305
307
  boost::asio::error::invalid_argument, "context");
306
308
  break;
307
- #endif // (OPENSSL_VERSION_NUMBER >= 0x10101000L)
308
- // && !defined(LIBRESSL_VERSION_NUMBER)
309
+ #endif // ((OPENSSL_VERSION_NUMBER >= 0x10101000L)
310
+ // && !defined(LIBRESSL_VERSION_NUMBER))
311
+ // || defined(BOOST_ASIO_USE_WOLFSSL)
309
312
 
310
313
  // Any supported SSL/TLS version.
311
314
  case context::sslv23:
@@ -795,7 +798,7 @@ BOOST_ASIO_SYNC_OP_VOID context::use_certificate_chain(
795
798
  BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
796
799
  }
797
800
  }
798
-
801
+
799
802
  result = ::ERR_peek_last_error();
800
803
  if ((ERR_GET_LIB(result) == ERR_LIB_PEM)
801
804
  && (ERR_GET_REASON(result) == PEM_R_NO_START_LINE))
@@ -482,7 +482,7 @@ public:
482
482
  * Regardless of whether the asynchronous operation completes immediately or
483
483
  * not, the completion handler will not be invoked from within this function.
484
484
  * On immediate completion, invocation of the handler will be performed in a
485
- * manner equivalent to using boost::asio::post().
485
+ * manner equivalent to using boost::asio::async_immediate().
486
486
  *
487
487
  * @par Completion Signature
488
488
  * @code void(boost::system::error_code) @endcode
@@ -539,7 +539,7 @@ public:
539
539
  * Regardless of whether the asynchronous operation completes immediately or
540
540
  * not, the completion handler will not be invoked from within this function.
541
541
  * On immediate completion, invocation of the handler will be performed in a
542
- * manner equivalent to using boost::asio::post().
542
+ * manner equivalent to using boost::asio::async_immediate().
543
543
  *
544
544
  * @par Completion Signature
545
545
  * @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) @endcode
@@ -723,7 +723,7 @@ public:
723
723
  * Regardless of whether the asynchronous operation completes immediately or
724
724
  * not, the completion handler will not be invoked from within this function.
725
725
  * On immediate completion, invocation of the handler will be performed in a
726
- * manner equivalent to using boost::asio::post().
726
+ * manner equivalent to using boost::asio::async_immediate().
727
727
  *
728
728
  * @par Completion Signature
729
729
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -831,7 +831,7 @@ public:
831
831
  * Regardless of whether the asynchronous operation completes immediately or
832
832
  * not, the completion handler will not be invoked from within this function.
833
833
  * On immediate completion, invocation of the handler will be performed in a
834
- * manner equivalent to using boost::asio::post().
834
+ * manner equivalent to using boost::asio::async_immediate().
835
835
  *
836
836
  * @par Completion Signature
837
837
  * @code void(boost::system::error_code, std::size_t) @endcode
@@ -33,7 +33,7 @@ struct executor_t
33
33
  };
34
34
 
35
35
  /// Awaitable object that returns the executor of the current coroutine.
36
- constexpr executor_t executor;
36
+ BOOST_ASIO_INLINE_VARIABLE constexpr executor_t executor;
37
37
 
38
38
  /// Awaitable type that returns the cancellation state of the current coroutine.
39
39
  struct cancellation_state_t
@@ -58,7 +58,7 @@ struct cancellation_state_t
58
58
  * // ...
59
59
  * } @endcode
60
60
  */
61
- constexpr cancellation_state_t cancellation_state;
61
+ BOOST_ASIO_INLINE_VARIABLE constexpr cancellation_state_t cancellation_state;
62
62
 
63
63
  #if defined(GENERATING_DOCUMENTATION)
64
64
 
@@ -146,9 +146,9 @@ struct use_awaitable_t
146
146
  * See the documentation for boost::asio::use_awaitable_t for a usage example.
147
147
  */
148
148
  #if defined(GENERATING_DOCUMENTATION)
149
- constexpr use_awaitable_t<> use_awaitable;
149
+ BOOST_ASIO_INLINE_VARIABLE constexpr use_awaitable_t<> use_awaitable;
150
150
  #else
151
- constexpr use_awaitable_t<> use_awaitable(0, 0, 0);
151
+ BOOST_ASIO_INLINE_VARIABLE constexpr use_awaitable_t<> use_awaitable(0, 0, 0);
152
152
  #endif
153
153
 
154
154
  } // namespace asio
@@ -146,7 +146,7 @@ private:
146
146
  /**
147
147
  * See the documentation for boost::asio::use_future_t for a usage example.
148
148
  */
149
- constexpr use_future_t<> use_future;
149
+ BOOST_ASIO_INLINE_VARIABLE constexpr use_future_t<> use_future;
150
150
 
151
151
  } // namespace asio
152
152
  } // namespace boost
@@ -46,7 +46,7 @@ struct executor_arg_t
46
46
  * See boost::asio::executor_arg_t and boost::asio::uses_executor
47
47
  * for more information.
48
48
  */
49
- constexpr executor_arg_t executor_arg;
49
+ BOOST_ASIO_INLINE_VARIABLE constexpr executor_arg_t executor_arg;
50
50
 
51
51
  /// The uses_executor trait detects whether a type T has an associated executor
52
52
  /// that is convertible from type Executor.
@@ -18,6 +18,6 @@
18
18
  // BOOST_ASIO_VERSION % 100 is the sub-minor version
19
19
  // BOOST_ASIO_VERSION / 100 % 1000 is the minor version
20
20
  // BOOST_ASIO_VERSION / 100000 is the major version
21
- #define BOOST_ASIO_VERSION 103002 // 1.30.2
21
+ #define BOOST_ASIO_VERSION 103200 // 1.32.0
22
22
 
23
23
  #endif // BOOST_ASIO_VERSION_HPP