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
@@ -0,0 +1,270 @@
1
+ //
2
+ // impl/cancel_after.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_IMPL_CANCEL_AFTER_HPP
12
+ #define BOOST_ASIO_IMPL_CANCEL_AFTER_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <boost/asio/associated_executor.hpp>
20
+ #include <boost/asio/async_result.hpp>
21
+ #include <boost/asio/detail/initiation_base.hpp>
22
+ #include <boost/asio/detail/timed_cancel_op.hpp>
23
+
24
+ #include <boost/asio/detail/push_options.hpp>
25
+
26
+ namespace boost {
27
+ namespace asio {
28
+ namespace detail {
29
+
30
+ template <typename Initiation, typename Clock,
31
+ typename WaitTraits, typename... Signatures>
32
+ struct initiate_cancel_after : initiation_base<Initiation>
33
+ {
34
+ using initiation_base<Initiation>::initiation_base;
35
+
36
+ template <typename Handler, typename Rep, typename Period, typename... Args>
37
+ void operator()(Handler&& handler,
38
+ const chrono::duration<Rep, Period>& timeout,
39
+ cancellation_type_t cancel_type, Args&&... args) &&
40
+ {
41
+ using op = detail::timed_cancel_op<decay_t<Handler>,
42
+ basic_waitable_timer<Clock, WaitTraits>, Signatures...>;
43
+
44
+ non_const_lvalue<Handler> handler2(handler);
45
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
46
+ op::ptr::allocate(handler2.value), 0 };
47
+ p.p = new (p.v) op(handler2.value,
48
+ basic_waitable_timer<Clock, WaitTraits,
49
+ typename Initiation::executor_type>(this->get_executor(), timeout),
50
+ cancel_type);
51
+
52
+ op* o = p.p;
53
+ p.v = p.p = 0;
54
+ o->start(static_cast<Initiation&&>(*this), static_cast<Args&&>(args)...);
55
+ }
56
+
57
+ template <typename Handler, typename Rep, typename Period, typename... Args>
58
+ void operator()(Handler&& handler,
59
+ const chrono::duration<Rep, Period>& timeout,
60
+ cancellation_type_t cancel_type, Args&&... args) const &
61
+ {
62
+ using op = detail::timed_cancel_op<decay_t<Handler>,
63
+ basic_waitable_timer<Clock, WaitTraits>, Signatures...>;
64
+
65
+ non_const_lvalue<Handler> handler2(handler);
66
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
67
+ op::ptr::allocate(handler2.value), 0 };
68
+ p.p = new (p.v) op(handler2.value,
69
+ basic_waitable_timer<Clock, WaitTraits,
70
+ typename Initiation::executor_type>(this->get_executor(), timeout),
71
+ cancel_type);
72
+
73
+ op* o = p.p;
74
+ p.v = p.p = 0;
75
+ o->start(static_cast<const Initiation&>(*this),
76
+ static_cast<Args&&>(args)...);
77
+ }
78
+ };
79
+
80
+ template <typename Initiation, typename Clock,
81
+ typename WaitTraits, typename Executor, typename... Signatures>
82
+ struct initiate_cancel_after_timer : initiation_base<Initiation>
83
+ {
84
+ using initiation_base<Initiation>::initiation_base;
85
+
86
+ template <typename Handler, typename Rep, typename Period, typename... Args>
87
+ void operator()(Handler&& handler,
88
+ basic_waitable_timer<Clock, WaitTraits, Executor>* timer,
89
+ const chrono::duration<Rep, Period>& timeout,
90
+ cancellation_type_t cancel_type, Args&&... args) &&
91
+ {
92
+ using op = detail::timed_cancel_op<decay_t<Handler>,
93
+ basic_waitable_timer<Clock, WaitTraits, Executor>&, Signatures...>;
94
+
95
+ non_const_lvalue<Handler> handler2(handler);
96
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
97
+ op::ptr::allocate(handler2.value), 0 };
98
+ timer->expires_after(timeout);
99
+ p.p = new (p.v) op(handler2.value, *timer, cancel_type);
100
+
101
+ op* o = p.p;
102
+ p.v = p.p = 0;
103
+ o->start(static_cast<Initiation&&>(*this), static_cast<Args&&>(args)...);
104
+ }
105
+
106
+ template <typename Handler, typename Rep, typename Period, typename... Args>
107
+ void operator()(Handler&& handler,
108
+ basic_waitable_timer<Clock, WaitTraits, Executor>* timer,
109
+ const chrono::duration<Rep, Period>& timeout,
110
+ cancellation_type_t cancel_type, Args&&... args) const &
111
+ {
112
+ using op = detail::timed_cancel_op<decay_t<Handler>,
113
+ basic_waitable_timer<Clock, WaitTraits, Executor>&, Signatures...>;
114
+
115
+ non_const_lvalue<Handler> handler2(handler);
116
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
117
+ op::ptr::allocate(handler2.value), 0 };
118
+ timer->expires_after(timeout);
119
+ p.p = new (p.v) op(handler2.value, *timer, cancel_type);
120
+
121
+ op* o = p.p;
122
+ p.v = p.p = 0;
123
+ o->start(static_cast<const Initiation&>(*this),
124
+ static_cast<Args&&>(args)...);
125
+ }
126
+ };
127
+
128
+ } // namespace detail
129
+
130
+ #if !defined(GENERATING_DOCUMENTATION)
131
+
132
+ template <typename CompletionToken, typename Clock,
133
+ typename WaitTraits, typename... Signatures>
134
+ struct async_result<
135
+ cancel_after_t<CompletionToken, Clock, WaitTraits>, Signatures...>
136
+ : async_result<CompletionToken, Signatures...>
137
+ {
138
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
139
+ static auto initiate(Initiation&& initiation,
140
+ RawCompletionToken&& token, Args&&... args)
141
+ -> decltype(
142
+ async_initiate<
143
+ conditional_t<
144
+ is_const<remove_reference_t<RawCompletionToken>>::value,
145
+ const CompletionToken, CompletionToken>,
146
+ Signatures...>(
147
+ declval<detail::initiate_cancel_after<
148
+ decay_t<Initiation>, Clock, WaitTraits, Signatures...>>(),
149
+ token.token_, token.timeout_, token.cancel_type_,
150
+ static_cast<Args&&>(args)...))
151
+ {
152
+ return async_initiate<
153
+ conditional_t<
154
+ is_const<remove_reference_t<RawCompletionToken>>::value,
155
+ const CompletionToken, CompletionToken>,
156
+ Signatures...>(
157
+ detail::initiate_cancel_after<
158
+ decay_t<Initiation>, Clock, WaitTraits, Signatures...>(
159
+ static_cast<Initiation&&>(initiation)),
160
+ token.token_, token.timeout_, token.cancel_type_,
161
+ static_cast<Args&&>(args)...);
162
+ }
163
+ };
164
+
165
+ template <typename CompletionToken, typename Clock,
166
+ typename WaitTraits, typename Executor, typename... Signatures>
167
+ struct async_result<
168
+ cancel_after_timer<CompletionToken, Clock, WaitTraits, Executor>,
169
+ Signatures...>
170
+ : async_result<CompletionToken, Signatures...>
171
+ {
172
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
173
+ static auto initiate(Initiation&& initiation,
174
+ RawCompletionToken&& token, Args&&... args)
175
+ -> decltype(
176
+ async_initiate<
177
+ conditional_t<
178
+ is_const<remove_reference_t<RawCompletionToken>>::value,
179
+ const CompletionToken, CompletionToken>,
180
+ Signatures...>(
181
+ declval<detail::initiate_cancel_after_timer<
182
+ decay_t<Initiation>, Clock, WaitTraits, Executor, Signatures...>>(),
183
+ token.token_, &token.timer_, token.timeout_,
184
+ token.cancel_type_, static_cast<Args&&>(args)...))
185
+ {
186
+ return async_initiate<
187
+ conditional_t<
188
+ is_const<remove_reference_t<RawCompletionToken>>::value,
189
+ const CompletionToken, CompletionToken>,
190
+ Signatures...>(
191
+ detail::initiate_cancel_after_timer<
192
+ decay_t<Initiation>, Clock, WaitTraits, Executor, Signatures...>(
193
+ static_cast<Initiation&&>(initiation)),
194
+ token.token_, &token.timer_, token.timeout_,
195
+ token.cancel_type_, static_cast<Args&&>(args)...);
196
+ }
197
+ };
198
+
199
+ template <typename Clock, typename WaitTraits, typename... Signatures>
200
+ struct async_result<partial_cancel_after<Clock, WaitTraits>, Signatures...>
201
+ {
202
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
203
+ static auto initiate(Initiation&& initiation,
204
+ RawCompletionToken&& token, Args&&... args)
205
+ -> decltype(
206
+ async_initiate<
207
+ const cancel_after_t<
208
+ default_completion_token_t<associated_executor_t<Initiation>>,
209
+ Clock, WaitTraits>&,
210
+ Signatures...>(
211
+ static_cast<Initiation&&>(initiation),
212
+ cancel_after_t<
213
+ default_completion_token_t<associated_executor_t<Initiation>>,
214
+ Clock, WaitTraits>(
215
+ default_completion_token_t<associated_executor_t<Initiation>>{},
216
+ token.timeout_, token.cancel_type_),
217
+ static_cast<Args&&>(args)...))
218
+ {
219
+ return async_initiate<
220
+ const cancel_after_t<
221
+ default_completion_token_t<associated_executor_t<Initiation>>,
222
+ Clock, WaitTraits>&,
223
+ Signatures...>(
224
+ static_cast<Initiation&&>(initiation),
225
+ cancel_after_t<
226
+ default_completion_token_t<associated_executor_t<Initiation>>,
227
+ Clock, WaitTraits>(
228
+ default_completion_token_t<associated_executor_t<Initiation>>{},
229
+ token.timeout_, token.cancel_type_),
230
+ static_cast<Args&&>(args)...);
231
+ }
232
+ };
233
+
234
+ template <typename Clock, typename WaitTraits,
235
+ typename Executor, typename... Signatures>
236
+ struct async_result<
237
+ partial_cancel_after_timer<Clock, WaitTraits, Executor>, Signatures...>
238
+ {
239
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
240
+ static auto initiate(Initiation&& initiation,
241
+ RawCompletionToken&& token, Args&&... args)
242
+ -> decltype(
243
+ async_initiate<Signatures...>(
244
+ static_cast<Initiation&&>(initiation),
245
+ cancel_after_timer<
246
+ default_completion_token_t<associated_executor_t<Initiation>>,
247
+ Clock, WaitTraits, Executor>(
248
+ default_completion_token_t<associated_executor_t<Initiation>>{},
249
+ token.timer_, token.timeout_, token.cancel_type_),
250
+ static_cast<Args&&>(args)...))
251
+ {
252
+ return async_initiate<Signatures...>(
253
+ static_cast<Initiation&&>(initiation),
254
+ cancel_after_timer<
255
+ default_completion_token_t<associated_executor_t<Initiation>>,
256
+ Clock, WaitTraits, Executor>(
257
+ default_completion_token_t<associated_executor_t<Initiation>>{},
258
+ token.timer_, token.timeout_, token.cancel_type_),
259
+ static_cast<Args&&>(args)...);
260
+ }
261
+ };
262
+
263
+ #endif // !defined(GENERATING_DOCUMENTATION)
264
+
265
+ } // namespace asio
266
+ } // namespace boost
267
+
268
+ #include <boost/asio/detail/pop_options.hpp>
269
+
270
+ #endif // BOOST_ASIO_IMPL_CANCEL_AFTER_HPP
@@ -0,0 +1,270 @@
1
+ //
2
+ // impl/cancel_at.hpp
3
+ // ~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_IMPL_CANCEL_AT_HPP
12
+ #define BOOST_ASIO_IMPL_CANCEL_AT_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <boost/asio/associated_executor.hpp>
20
+ #include <boost/asio/async_result.hpp>
21
+ #include <boost/asio/detail/initiation_base.hpp>
22
+ #include <boost/asio/detail/timed_cancel_op.hpp>
23
+
24
+ #include <boost/asio/detail/push_options.hpp>
25
+
26
+ namespace boost {
27
+ namespace asio {
28
+ namespace detail {
29
+
30
+ template <typename Initiation, typename Clock,
31
+ typename WaitTraits, typename... Signatures>
32
+ struct initiate_cancel_at : initiation_base<Initiation>
33
+ {
34
+ using initiation_base<Initiation>::initiation_base;
35
+
36
+ template <typename Handler, typename Duration, typename... Args>
37
+ void operator()(Handler&& handler,
38
+ const chrono::time_point<Clock, Duration>& expiry,
39
+ cancellation_type_t cancel_type, Args&&... args) &&
40
+ {
41
+ using op = detail::timed_cancel_op<decay_t<Handler>,
42
+ basic_waitable_timer<Clock, WaitTraits>, Signatures...>;
43
+
44
+ non_const_lvalue<Handler> handler2(handler);
45
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
46
+ op::ptr::allocate(handler2.value), 0 };
47
+ p.p = new (p.v) op(handler2.value,
48
+ basic_waitable_timer<Clock, WaitTraits,
49
+ typename Initiation::executor_type>(this->get_executor(), expiry),
50
+ cancel_type);
51
+
52
+ op* o = p.p;
53
+ p.v = p.p = 0;
54
+ o->start(static_cast<Initiation&&>(*this), static_cast<Args&&>(args)...);
55
+ }
56
+
57
+ template <typename Handler, typename Duration, typename... Args>
58
+ void operator()(Handler&& handler,
59
+ const chrono::time_point<Clock, Duration>& expiry,
60
+ cancellation_type_t cancel_type, Args&&... args) const &
61
+ {
62
+ using op = detail::timed_cancel_op<decay_t<Handler>,
63
+ basic_waitable_timer<Clock, WaitTraits>, Signatures...>;
64
+
65
+ non_const_lvalue<Handler> handler2(handler);
66
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
67
+ op::ptr::allocate(handler2.value), 0 };
68
+ p.p = new (p.v) op(handler2.value,
69
+ basic_waitable_timer<Clock, WaitTraits,
70
+ typename Initiation::executor_type>(this->get_executor(), expiry),
71
+ cancel_type);
72
+
73
+ op* o = p.p;
74
+ p.v = p.p = 0;
75
+ o->start(static_cast<const Initiation&>(*this),
76
+ static_cast<Args&&>(args)...);
77
+ }
78
+ };
79
+
80
+ template <typename Initiation, typename Clock,
81
+ typename WaitTraits, typename Executor, typename... Signatures>
82
+ struct initiate_cancel_at_timer : initiation_base<Initiation>
83
+ {
84
+ using initiation_base<Initiation>::initiation_base;
85
+
86
+ template <typename Handler, typename Duration, typename... Args>
87
+ void operator()(Handler&& handler,
88
+ basic_waitable_timer<Clock, WaitTraits, Executor>* timer,
89
+ const chrono::time_point<Clock, Duration>& expiry,
90
+ cancellation_type_t cancel_type, Args&&... args) &&
91
+ {
92
+ using op = detail::timed_cancel_op<decay_t<Handler>,
93
+ basic_waitable_timer<Clock, WaitTraits, Executor>&, Signatures...>;
94
+
95
+ non_const_lvalue<Handler> handler2(handler);
96
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
97
+ op::ptr::allocate(handler2.value), 0 };
98
+ timer->expires_at(expiry);
99
+ p.p = new (p.v) op(handler2.value, *timer, cancel_type);
100
+
101
+ op* o = p.p;
102
+ p.v = p.p = 0;
103
+ o->start(static_cast<Initiation&&>(*this), static_cast<Args&&>(args)...);
104
+ }
105
+
106
+ template <typename Handler, typename Duration, typename... Args>
107
+ void operator()(Handler&& handler,
108
+ basic_waitable_timer<Clock, WaitTraits, Executor>* timer,
109
+ const chrono::time_point<Clock, Duration>& expiry,
110
+ cancellation_type_t cancel_type, Args&&... args) const &
111
+ {
112
+ using op = detail::timed_cancel_op<decay_t<Handler>,
113
+ basic_waitable_timer<Clock, WaitTraits, Executor>&, Signatures...>;
114
+
115
+ non_const_lvalue<Handler> handler2(handler);
116
+ typename op::ptr p = { boost::asio::detail::addressof(handler2.value),
117
+ op::ptr::allocate(handler2.value), 0 };
118
+ timer->expires_at(expiry);
119
+ p.p = new (p.v) op(handler2.value, *timer, cancel_type);
120
+
121
+ op* o = p.p;
122
+ p.v = p.p = 0;
123
+ o->start(static_cast<const Initiation&>(*this),
124
+ static_cast<Args&&>(args)...);
125
+ }
126
+ };
127
+
128
+ } // namespace detail
129
+
130
+ #if !defined(GENERATING_DOCUMENTATION)
131
+
132
+ template <typename CompletionToken, typename Clock,
133
+ typename WaitTraits, typename... Signatures>
134
+ struct async_result<
135
+ cancel_at_t<CompletionToken, Clock, WaitTraits>, Signatures...>
136
+ : async_result<CompletionToken, Signatures...>
137
+ {
138
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
139
+ static auto initiate(Initiation&& initiation,
140
+ RawCompletionToken&& token, Args&&... args)
141
+ -> decltype(
142
+ async_initiate<
143
+ conditional_t<
144
+ is_const<remove_reference_t<RawCompletionToken>>::value,
145
+ const CompletionToken, CompletionToken>,
146
+ Signatures...>(
147
+ declval<detail::initiate_cancel_at<
148
+ decay_t<Initiation>, Clock, WaitTraits, Signatures...>>(),
149
+ token.token_, token.expiry_, token.cancel_type_,
150
+ static_cast<Args&&>(args)...))
151
+ {
152
+ return async_initiate<
153
+ conditional_t<
154
+ is_const<remove_reference_t<RawCompletionToken>>::value,
155
+ const CompletionToken, CompletionToken>,
156
+ Signatures...>(
157
+ detail::initiate_cancel_at<
158
+ decay_t<Initiation>, Clock, WaitTraits, Signatures...>(
159
+ static_cast<Initiation&&>(initiation)),
160
+ token.token_, token.expiry_, token.cancel_type_,
161
+ static_cast<Args&&>(args)...);
162
+ }
163
+ };
164
+
165
+ template <typename CompletionToken, typename Clock,
166
+ typename WaitTraits, typename Executor, typename... Signatures>
167
+ struct async_result<
168
+ cancel_at_timer<CompletionToken, Clock, WaitTraits, Executor>,
169
+ Signatures...>
170
+ : async_result<CompletionToken, Signatures...>
171
+ {
172
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
173
+ static auto initiate(Initiation&& initiation,
174
+ RawCompletionToken&& token, Args&&... args)
175
+ -> decltype(
176
+ async_initiate<
177
+ conditional_t<
178
+ is_const<remove_reference_t<RawCompletionToken>>::value,
179
+ const CompletionToken, CompletionToken>,
180
+ Signatures...>(
181
+ declval<detail::initiate_cancel_at_timer<
182
+ decay_t<Initiation>, Clock, WaitTraits, Executor, Signatures...>>(),
183
+ token.token_, &token.timer_, token.expiry_, token.cancel_type_,
184
+ static_cast<Args&&>(args)...))
185
+ {
186
+ return async_initiate<
187
+ conditional_t<
188
+ is_const<remove_reference_t<RawCompletionToken>>::value,
189
+ const CompletionToken, CompletionToken>,
190
+ Signatures...>(
191
+ detail::initiate_cancel_at_timer<
192
+ decay_t<Initiation>, Clock, WaitTraits, Executor, Signatures...>(
193
+ static_cast<Initiation&&>(initiation)),
194
+ token.token_, &token.timer_, token.expiry_, token.cancel_type_,
195
+ static_cast<Args&&>(args)...);
196
+ }
197
+ };
198
+
199
+ template <typename Clock, typename WaitTraits, typename... Signatures>
200
+ struct async_result<partial_cancel_at<Clock, WaitTraits>, Signatures...>
201
+ {
202
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
203
+ static auto initiate(Initiation&& initiation,
204
+ RawCompletionToken&& token, Args&&... args)
205
+ -> decltype(
206
+ async_initiate<
207
+ const cancel_at_t<
208
+ default_completion_token_t<associated_executor_t<Initiation>>,
209
+ Clock, WaitTraits>&,
210
+ Signatures...>(
211
+ static_cast<Initiation&&>(initiation),
212
+ cancel_at_t<
213
+ default_completion_token_t<associated_executor_t<Initiation>>,
214
+ Clock, WaitTraits>(
215
+ default_completion_token_t<associated_executor_t<Initiation>>{},
216
+ token.expiry_, token.cancel_type_),
217
+ static_cast<Args&&>(args)...))
218
+ {
219
+ return async_initiate<
220
+ const cancel_at_t<
221
+ default_completion_token_t<associated_executor_t<Initiation>>,
222
+ Clock, WaitTraits>&,
223
+ Signatures...>(
224
+ static_cast<Initiation&&>(initiation),
225
+ cancel_at_t<
226
+ default_completion_token_t<associated_executor_t<Initiation>>,
227
+ Clock, WaitTraits>(
228
+ default_completion_token_t<associated_executor_t<Initiation>>{},
229
+ token.expiry_, token.cancel_type_),
230
+ static_cast<Args&&>(args)...);
231
+ }
232
+ };
233
+
234
+ template <typename Clock, typename WaitTraits,
235
+ typename Executor, typename... Signatures>
236
+ struct async_result<
237
+ partial_cancel_at_timer<Clock, WaitTraits, Executor>, Signatures...>
238
+ {
239
+ template <typename Initiation, typename RawCompletionToken, typename... Args>
240
+ static auto initiate(Initiation&& initiation,
241
+ RawCompletionToken&& token, Args&&... args)
242
+ -> decltype(
243
+ async_initiate<Signatures...>(
244
+ static_cast<Initiation&&>(initiation),
245
+ cancel_at_timer<
246
+ default_completion_token_t<associated_executor_t<Initiation>>,
247
+ Clock, WaitTraits, Executor>(
248
+ default_completion_token_t<associated_executor_t<Initiation>>{},
249
+ token.timer_, token.expiry_, token.cancel_type_),
250
+ static_cast<Args&&>(args)...))
251
+ {
252
+ return async_initiate<Signatures...>(
253
+ static_cast<Initiation&&>(initiation),
254
+ cancel_at_timer<
255
+ default_completion_token_t<associated_executor_t<Initiation>>,
256
+ Clock, WaitTraits, Executor>(
257
+ default_completion_token_t<associated_executor_t<Initiation>>{},
258
+ token.timer_, token.expiry_, token.cancel_type_),
259
+ static_cast<Args&&>(args)...);
260
+ }
261
+ };
262
+
263
+ #endif // !defined(GENERATING_DOCUMENTATION)
264
+
265
+ } // namespace asio
266
+ } // namespace boost
267
+
268
+ #include <boost/asio/detail/pop_options.hpp>
269
+
270
+ #endif // BOOST_ASIO_IMPL_CANCEL_AT_HPP
@@ -143,7 +143,9 @@ awaitable<awaitable_thread_entry_point, Executor> co_spawn_entry_point(
143
143
  (co_await awaitable_thread_has_context_switched{}) = false;
144
144
  std::exception_ptr e = nullptr;
145
145
  bool done = false;
146
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
146
147
  try
148
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
147
149
  {
148
150
  T t = co_await s.function();
149
151
 
@@ -164,6 +166,7 @@ awaitable<awaitable_thread_entry_point, Executor> co_spawn_entry_point(
164
166
 
165
167
  co_return;
166
168
  }
169
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
167
170
  catch (...)
168
171
  {
169
172
  if (done)
@@ -171,6 +174,7 @@ awaitable<awaitable_thread_entry_point, Executor> co_spawn_entry_point(
171
174
 
172
175
  e = std::current_exception();
173
176
  }
177
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
174
178
 
175
179
  bool switched = (co_await awaitable_thread_has_context_switched{});
176
180
  if (!switched)
@@ -194,14 +198,18 @@ awaitable<awaitable_thread_entry_point, Executor> co_spawn_entry_point(
194
198
 
195
199
  (co_await awaitable_thread_has_context_switched{}) = false;
196
200
  std::exception_ptr e = nullptr;
201
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
197
202
  try
203
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
198
204
  {
199
205
  co_await s.function();
200
206
  }
207
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
201
208
  catch (...)
202
209
  {
203
210
  e = std::current_exception();
204
211
  }
212
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
205
213
 
206
214
  bool switched = (co_await awaitable_thread_has_context_switched{});
207
215
  if (!switched)