passenger 6.0.11 → 6.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +24 -1
  3. data/CONTRIBUTORS +3 -0
  4. data/src/agent/Core/Config.h +1 -1
  5. data/src/agent/Core/Controller/CheckoutSession.cpp +24 -13
  6. data/src/agent/Core/Controller/Config.h +1 -1
  7. data/src/agent/Core/Controller/InternalUtils.cpp +32 -6
  8. data/src/agent/Core/Controller.h +4 -1
  9. data/src/agent/Watchdog/Config.h +1 -1
  10. data/src/cxx_supportlib/Constants.h +1 -1
  11. data/src/cxx_supportlib/IOTools/IOUtils.cpp +4 -4
  12. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +47 -0
  13. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +41 -0
  14. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +28 -0
  15. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +53 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +179 -0
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +57 -1
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +37 -0
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +789 -106
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +80 -0
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +10 -0
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +80 -0
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +30 -0
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +20 -0
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +90 -0
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +60 -0
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +10 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +723 -0
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +191 -12
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +361 -0
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +237 -0
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +176 -0
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +30 -2
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +60 -0
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +165 -0
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +209 -76
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +149 -60
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +40 -0
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +8 -4
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +14 -4
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +6 -0
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -10
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +21 -18
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +30 -19
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +8 -0
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +14 -0
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +20 -0
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +30 -0
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +20 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +29 -0
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +24 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +19 -0
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +3 -1
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +6 -0
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +15 -5
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +60 -0
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +8 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +27 -0
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +93 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +77 -0
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +111 -0
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +4 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +44 -0
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +2 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +2 -2
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +14 -4
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +90 -24
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +30 -1
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +4 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +5 -1
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +5 -2
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +12 -12
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +10 -8
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +8 -8
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +7 -7
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +7 -7
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +7 -7
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +7 -7
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +13 -13
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +7 -7
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +8 -8
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +73 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +133 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +538 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +157 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +1057 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +607 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +160 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +120 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_traits.hpp +185 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +181 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/append.hpp +219 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +14 -28
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_tuple.hpp +248 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/deferred.hpp +106 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +434 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/prepend.hpp +219 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +100 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +217 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +73 -0
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +608 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +284 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +344 -20
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +23 -54
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +23 -54
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +66 -18
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +55 -5
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +68 -80
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +8 -4
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +8 -4
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +3 -2
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +8 -4
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +98 -113
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +71 -82
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +210 -266
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +248 -30
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +11 -21
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +15 -3
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +71 -87
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +46 -68
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +4 -4
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +2 -7
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +10 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +23 -3
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +21 -21
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +9 -9
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +88 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +44 -0
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +132 -0
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +21 -21
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +9 -9
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +5 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +14 -0
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +36 -27
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +37 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +14 -7
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +73 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +4 -4
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +235 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +4 -4
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +7 -10
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +20 -0
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +20 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +88 -0
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +44 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
  154. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +17 -13
  156. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +14 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +2 -5
  158. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +2 -5
  159. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +2 -2
  160. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +2 -2
  161. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +56 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +1 -5
  163. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +31 -11
  164. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +20 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_platform_config.hpp +5 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +81 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +5 -8
  168. data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +17 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +26 -0
  170. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +49 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +46 -4
  172. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +2 -2
  173. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +2 -2
  175. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +2 -2
  176. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +2 -2
  178. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
  181. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +4 -4
  182. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +45 -38
  183. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +24 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/core/ignore_unused.hpp +32 -2
  185. data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +7 -7
  186. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +0 -24
  187. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -4
  189. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +83 -83
  190. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +43 -43
  191. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +31 -31
  192. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +85 -85
  193. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +68 -68
  194. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +72 -62
  195. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +19 -20
  196. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +19 -19
  197. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +4 -4
  198. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +2 -2
  199. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +3 -3
  200. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +5 -5
  201. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +1 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +8 -8
  203. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +2 -4
  204. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +2 -50
  206. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +71 -70
  208. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +15 -14
  209. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +84 -82
  210. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +10 -10
  211. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +4 -4
  212. data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +2 -2
  213. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
  214. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  215. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +43 -43
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +26 -26
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +85 -85
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +12 -12
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +93 -93
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +51 -51
  221. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +24 -24
  222. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +104 -104
  223. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +8 -6
  224. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +91 -91
  225. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +46 -46
  226. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +31 -31
  227. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +51 -51
  228. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +18 -18
  229. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +97 -97
  230. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +6 -4
  231. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +63 -63
  232. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +15 -15
  233. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +4 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +1 -0
  235. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +1 -0
  236. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +2 -0
  238. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +3 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +112 -31
  241. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +3 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -8
  243. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +0 -2
  244. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +6 -2
  245. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +22 -2
  247. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +59 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +9 -11
  249. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +27 -21
  250. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +34 -3
  251. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +378 -36
  252. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +97 -21
  253. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +107 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +33 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +70 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/system/detail/{to_std_category.hpp → std_category.hpp} +5 -55
  257. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +2 -12
  258. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +0 -33
  259. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_variadic.hpp +190 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +20 -9
  261. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +3 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  263. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
  264. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +6 -0
  265. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
  266. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +5 -0
  267. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +21 -0
  268. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +13 -0
  269. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
  270. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
  271. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +3 -2
  272. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +8 -1
  273. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +6 -0
  274. data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
  275. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +1 -1
  276. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +8 -0
  277. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +4 -1
  278. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  279. metadata +39 -4
  280. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_generic_value.hpp +0 -125
@@ -15,8 +15,7 @@
15
15
  # pragma once
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
- #include <boost/asio/associated_allocator.hpp>
19
- #include <boost/asio/associated_executor.hpp>
18
+ #include <boost/asio/associator.hpp>
20
19
  #include <boost/asio/detail/handler_alloc_helpers.hpp>
21
20
  #include <boost/asio/detail/handler_cont_helpers.hpp>
22
21
  #include <boost/asio/detail/handler_invoke_helpers.hpp>
@@ -78,7 +77,7 @@ namespace detail
78
77
  const std::size_t bytes_written)
79
78
  {
80
79
  storage_.consume(bytes_written);
81
- handler_(ec, bytes_written);
80
+ BOOST_ASIO_MOVE_OR_LVALUE(WriteHandler)(handler_)(ec, bytes_written);
82
81
  }
83
82
 
84
83
  //private:
@@ -183,30 +182,18 @@ namespace detail
183
182
 
184
183
  #if !defined(GENERATING_DOCUMENTATION)
185
184
 
186
- template <typename WriteHandler, typename Allocator>
187
- struct associated_allocator<
188
- detail::buffered_flush_handler<WriteHandler>, Allocator>
185
+ template <template <typename, typename> class Associator,
186
+ typename WriteHandler, typename DefaultCandidate>
187
+ struct associator<Associator,
188
+ detail::buffered_flush_handler<WriteHandler>,
189
+ DefaultCandidate>
190
+ : Associator<WriteHandler, DefaultCandidate>
189
191
  {
190
- typedef typename associated_allocator<WriteHandler, Allocator>::type type;
191
-
192
- static type get(const detail::buffered_flush_handler<WriteHandler>& h,
193
- const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
194
- {
195
- return associated_allocator<WriteHandler, Allocator>::get(h.handler_, a);
196
- }
197
- };
198
-
199
- template <typename WriteHandler, typename Executor>
200
- struct associated_executor<
201
- detail::buffered_flush_handler<WriteHandler>, Executor>
202
- : detail::associated_executor_forwarding_base<WriteHandler, Executor>
203
- {
204
- typedef typename associated_executor<WriteHandler, Executor>::type type;
205
-
206
- static type get(const detail::buffered_flush_handler<WriteHandler>& h,
207
- const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
192
+ static typename Associator<WriteHandler, DefaultCandidate>::type get(
193
+ const detail::buffered_flush_handler<WriteHandler>& h,
194
+ const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
208
195
  {
209
- return associated_executor<WriteHandler, Executor>::get(h.handler_, ex);
196
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
210
197
  }
211
198
  };
212
199
 
@@ -294,7 +281,7 @@ namespace detail
294
281
  if (ec)
295
282
  {
296
283
  const std::size_t length = 0;
297
- handler_(ec, length);
284
+ BOOST_ASIO_MOVE_OR_LVALUE(WriteHandler)(handler_)(ec, length);
298
285
  }
299
286
  else
300
287
  {
@@ -307,7 +294,7 @@ namespace detail
307
294
  storage_.resize(orig_size + length);
308
295
  const std::size_t bytes_copied = boost::asio::buffer_copy(
309
296
  storage_.data() + orig_size, buffers_, length);
310
- handler_(ec, bytes_copied);
297
+ BOOST_ASIO_MOVE_OR_LVALUE(WriteHandler)(handler_)(ec, bytes_copied);
311
298
  }
312
299
  }
313
300
 
@@ -435,38 +422,20 @@ namespace detail
435
422
 
436
423
  #if !defined(GENERATING_DOCUMENTATION)
437
424
 
438
- template <typename ConstBufferSequence,
439
- typename WriteHandler, typename Allocator>
440
- struct associated_allocator<
425
+ template <template <typename, typename> class Associator,
426
+ typename ConstBufferSequence, typename WriteHandler,
427
+ typename DefaultCandidate>
428
+ struct associator<Associator,
441
429
  detail::buffered_write_some_handler<ConstBufferSequence, WriteHandler>,
442
- Allocator>
430
+ DefaultCandidate>
431
+ : Associator<WriteHandler, DefaultCandidate>
443
432
  {
444
- typedef typename associated_allocator<WriteHandler, Allocator>::type type;
445
-
446
- static type get(
447
- const detail::buffered_write_some_handler<
448
- ConstBufferSequence, WriteHandler>& h,
449
- const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
450
- {
451
- return associated_allocator<WriteHandler, Allocator>::get(h.handler_, a);
452
- }
453
- };
454
-
455
- template <typename ConstBufferSequence,
456
- typename WriteHandler, typename Executor>
457
- struct associated_executor<
458
- detail::buffered_write_some_handler<ConstBufferSequence, WriteHandler>,
459
- Executor>
460
- : detail::associated_executor_forwarding_base<WriteHandler, Executor>
461
- {
462
- typedef typename associated_executor<WriteHandler, Executor>::type type;
463
-
464
- static type get(
433
+ static typename Associator<WriteHandler, DefaultCandidate>::type get(
465
434
  const detail::buffered_write_some_handler<
466
435
  ConstBufferSequence, WriteHandler>& h,
467
- const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
436
+ const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
468
437
  {
469
- return associated_executor<WriteHandler, Executor>::get(h.handler_, ex);
438
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
470
439
  }
471
440
  };
472
441
 
@@ -16,6 +16,7 @@
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
18
  #include <boost/asio/detail/config.hpp>
19
+ #include <boost/asio/associated_cancellation_slot.hpp>
19
20
  #include <boost/asio/awaitable.hpp>
20
21
  #include <boost/asio/dispatch.hpp>
21
22
  #include <boost/asio/execution/outstanding_work.hpp>
@@ -77,16 +78,18 @@ make_co_spawn_work_guard(const Executor& ex)
77
78
  }
78
79
 
79
80
  template <typename T, typename Executor, typename F, typename Handler>
80
- awaitable<void, Executor> co_spawn_entry_point(
81
+ awaitable<awaitable_thread_entry_point, Executor> co_spawn_entry_point(
81
82
  awaitable<T, Executor>*, Executor ex, F f, Handler handler)
82
83
  {
83
84
  auto spawn_work = make_co_spawn_work_guard(ex);
84
85
  auto handler_work = make_co_spawn_work_guard(
85
86
  boost::asio::get_associated_executor(handler, ex));
86
87
 
87
- (void) co_await (post)(spawn_work.get_executor(),
88
- use_awaitable_t<Executor>{});
88
+ (void) co_await (dispatch)(
89
+ use_awaitable_t<Executor>{__FILE__, __LINE__, "co_spawn_entry_point"});
89
90
 
91
+ (co_await awaitable_thread_has_context_switched{}) = false;
92
+ std::exception_ptr e = nullptr;
90
93
  bool done = false;
91
94
  try
92
95
  {
@@ -94,36 +97,63 @@ awaitable<void, Executor> co_spawn_entry_point(
94
97
 
95
98
  done = true;
96
99
 
97
- (dispatch)(handler_work.get_executor(),
98
- [handler = std::move(handler), t = std::move(t)]() mutable
99
- {
100
- handler(std::exception_ptr(), std::move(t));
101
- });
100
+ if (co_await awaitable_thread_has_context_switched{})
101
+ {
102
+ (dispatch)(handler_work.get_executor(),
103
+ [handler = std::move(handler), t = std::move(t)]() mutable
104
+ {
105
+ std::move(handler)(std::exception_ptr(), std::move(t));
106
+ });
107
+ }
108
+ else
109
+ {
110
+ (post)(handler_work.get_executor(),
111
+ [handler = std::move(handler), t = std::move(t)]() mutable
112
+ {
113
+ std::move(handler)(std::exception_ptr(), std::move(t));
114
+ });
115
+ }
116
+
117
+ co_return;
102
118
  }
103
119
  catch (...)
104
120
  {
105
121
  if (done)
106
122
  throw;
107
123
 
124
+ e = std::current_exception();
125
+ }
126
+
127
+ if (co_await awaitable_thread_has_context_switched{})
128
+ {
108
129
  (dispatch)(handler_work.get_executor(),
109
- [handler = std::move(handler), e = std::current_exception()]() mutable
130
+ [handler = std::move(handler), e]() mutable
131
+ {
132
+ std::move(handler)(e, T());
133
+ });
134
+ }
135
+ else
136
+ {
137
+ (post)(handler_work.get_executor(),
138
+ [handler = std::move(handler), e]() mutable
110
139
  {
111
- handler(e, T());
140
+ std::move(handler)(e, T());
112
141
  });
113
142
  }
114
143
  }
115
144
 
116
145
  template <typename Executor, typename F, typename Handler>
117
- awaitable<void, Executor> co_spawn_entry_point(
146
+ awaitable<awaitable_thread_entry_point, Executor> co_spawn_entry_point(
118
147
  awaitable<void, Executor>*, Executor ex, F f, Handler handler)
119
148
  {
120
149
  auto spawn_work = make_co_spawn_work_guard(ex);
121
150
  auto handler_work = make_co_spawn_work_guard(
122
151
  boost::asio::get_associated_executor(handler, ex));
123
152
 
124
- (void) co_await (post)(spawn_work.get_executor(),
153
+ (void) co_await (dispatch)(
125
154
  use_awaitable_t<Executor>{__FILE__, __LINE__, "co_spawn_entry_point"});
126
155
 
156
+ (co_await awaitable_thread_has_context_switched{}) = false;
127
157
  std::exception_ptr e = nullptr;
128
158
  try
129
159
  {
@@ -134,11 +164,22 @@ awaitable<void, Executor> co_spawn_entry_point(
134
164
  e = std::current_exception();
135
165
  }
136
166
 
137
- (dispatch)(handler_work.get_executor(),
138
- [handler = std::move(handler), e]() mutable
139
- {
140
- handler(e);
141
- });
167
+ if (co_await awaitable_thread_has_context_switched{})
168
+ {
169
+ (dispatch)(handler_work.get_executor(),
170
+ [handler = std::move(handler), e]() mutable
171
+ {
172
+ std::move(handler)(e);
173
+ });
174
+ }
175
+ else
176
+ {
177
+ (post)(handler_work.get_executor(),
178
+ [handler = std::move(handler), e]() mutable
179
+ {
180
+ std::move(handler)(e);
181
+ });
182
+ }
142
183
  }
143
184
 
144
185
  template <typename T, typename Executor>
@@ -181,9 +222,16 @@ public:
181
222
  {
182
223
  typedef typename result_of<F()>::type awaitable_type;
183
224
 
225
+ cancellation_state proxy_cancel_state(
226
+ boost::asio::get_associated_cancellation_slot(handler),
227
+ enable_total_cancellation());
228
+
229
+ cancellation_state cancel_state(proxy_cancel_state.slot());
230
+
184
231
  auto a = (co_spawn_entry_point)(static_cast<awaitable_type*>(nullptr),
185
232
  ex_, std::forward<F>(f), std::forward<Handler>(handler));
186
- awaitable_handler<executor_type, void>(std::move(a), ex_).launch();
233
+ awaitable_handler<executor_type, void>(std::move(a), ex_,
234
+ proxy_cancel_state.slot(), cancel_state).launch();
187
235
  }
188
236
 
189
237
  private:
@@ -17,6 +17,7 @@
17
17
 
18
18
  #include <boost/asio/detail/config.hpp>
19
19
  #include <boost/asio/associated_executor.hpp>
20
+ #include <boost/asio/detail/base_from_cancellation_state.hpp>
20
21
  #include <boost/asio/detail/handler_alloc_helpers.hpp>
21
22
  #include <boost/asio/detail/handler_cont_helpers.hpp>
22
23
  #include <boost/asio/detail/handler_invoke_helpers.hpp>
@@ -294,13 +295,16 @@ namespace detail
294
295
  template <typename Impl, typename Work, typename Handler, typename Signature>
295
296
  class composed_op
296
297
  #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
298
+ : public base_from_cancellation_state<Handler>
297
299
  {
298
300
  public:
299
301
  template <typename I, typename W, typename H>
300
302
  composed_op(BOOST_ASIO_MOVE_ARG(I) impl,
301
303
  BOOST_ASIO_MOVE_ARG(W) work,
302
304
  BOOST_ASIO_MOVE_ARG(H) handler)
303
- : impl_(BOOST_ASIO_MOVE_CAST(I)(impl)),
305
+ : base_from_cancellation_state<Handler>(
306
+ handler, enable_terminal_cancellation()),
307
+ impl_(BOOST_ASIO_MOVE_CAST(I)(impl)),
304
308
  work_(BOOST_ASIO_MOVE_CAST(W)(work)),
305
309
  handler_(BOOST_ASIO_MOVE_CAST(H)(handler)),
306
310
  invocations_(0)
@@ -309,7 +313,10 @@ namespace detail
309
313
 
310
314
  #if defined(BOOST_ASIO_HAS_MOVE)
311
315
  composed_op(composed_op&& other)
312
- : impl_(BOOST_ASIO_MOVE_CAST(Impl)(other.impl_)),
316
+ : base_from_cancellation_state<Handler>(
317
+ BOOST_ASIO_MOVE_CAST(base_from_cancellation_state<
318
+ Handler>)(other)),
319
+ impl_(BOOST_ASIO_MOVE_CAST(Impl)(other.impl_)),
313
320
  work_(BOOST_ASIO_MOVE_CAST(Work)(other.work_)),
314
321
  handler_(BOOST_ASIO_MOVE_CAST(Handler)(other.handler_)),
315
322
  invocations_(other.invocations_)
@@ -343,13 +350,15 @@ namespace detail
343
350
  {
344
351
  if (invocations_ < ~0u)
345
352
  ++invocations_;
353
+ this->get_cancellation_state().slot().clear();
346
354
  impl_(*this, BOOST_ASIO_MOVE_CAST(T)(t)...);
347
355
  }
348
356
 
349
357
  void complete(Args... args)
350
358
  {
351
359
  this->work_.reset();
352
- this->handler_(BOOST_ASIO_MOVE_CAST(Args)(args)...);
360
+ BOOST_ASIO_MOVE_OR_LVALUE(Handler)(this->handler_)(
361
+ BOOST_ASIO_MOVE_CAST(Args)(args)...);
353
362
  }
354
363
 
355
364
  #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
@@ -358,13 +367,14 @@ namespace detail
358
367
  {
359
368
  if (invocations_ < ~0u)
360
369
  ++invocations_;
370
+ this->get_cancellation_state().slot().clear();
361
371
  impl_(*this);
362
372
  }
363
373
 
364
374
  void complete()
365
375
  {
366
376
  this->work_.reset();
367
- this->handler_();
377
+ BOOST_ASIO_MOVE_OR_LVALUE(Handler)(this->handler_)();
368
378
  }
369
379
 
370
380
  #define BOOST_ASIO_PRIVATE_COMPOSED_OP_DEF(n) \
@@ -373,6 +383,7 @@ namespace detail
373
383
  { \
374
384
  if (invocations_ < ~0u) \
375
385
  ++invocations_; \
386
+ this->get_cancellation_state().slot().clear(); \
376
387
  impl_(*this, BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \
377
388
  } \
378
389
  \
@@ -380,7 +391,8 @@ namespace detail
380
391
  void complete(BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \
381
392
  { \
382
393
  this->work_.reset(); \
383
- this->handler_(BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \
394
+ BOOST_ASIO_MOVE_OR_LVALUE(Handler)(this->handler_)( \
395
+ BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \
384
396
  } \
385
397
  /**/
386
398
  BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_COMPOSED_OP_DEF)
@@ -388,6 +400,27 @@ namespace detail
388
400
 
389
401
  #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
390
402
 
403
+ void reset_cancellation_state()
404
+ {
405
+ base_from_cancellation_state<Handler>::reset_cancellation_state(handler_);
406
+ }
407
+
408
+ template <typename Filter>
409
+ void reset_cancellation_state(BOOST_ASIO_MOVE_ARG(Filter) filter)
410
+ {
411
+ base_from_cancellation_state<Handler>::reset_cancellation_state(handler_,
412
+ BOOST_ASIO_MOVE_CAST(Filter)(filter));
413
+ }
414
+
415
+ template <typename InFilter, typename OutFilter>
416
+ void reset_cancellation_state(BOOST_ASIO_MOVE_ARG(InFilter) in_filter,
417
+ BOOST_ASIO_MOVE_ARG(OutFilter) out_filter)
418
+ {
419
+ base_from_cancellation_state<Handler>::reset_cancellation_state(handler_,
420
+ BOOST_ASIO_MOVE_CAST(InFilter)(in_filter),
421
+ BOOST_ASIO_MOVE_CAST(OutFilter)(out_filter));
422
+ }
423
+
391
424
  //private:
392
425
  Impl impl_;
393
426
  Work work_;
@@ -521,6 +554,23 @@ namespace detail
521
554
  } // namespace detail
522
555
 
523
556
  #if !defined(GENERATING_DOCUMENTATION)
557
+
558
+ template <template <typename, typename> class Associator,
559
+ typename Impl, typename Work, typename Handler,
560
+ typename Signature, typename DefaultCandidate>
561
+ struct associator<Associator,
562
+ detail::composed_op<Impl, Work, Handler, Signature>,
563
+ DefaultCandidate>
564
+ : Associator<Handler, DefaultCandidate>
565
+ {
566
+ static typename Associator<Handler, DefaultCandidate>::type get(
567
+ const detail::composed_op<Impl, Work, Handler, Signature>& h,
568
+ const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
569
+ {
570
+ return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
571
+ }
572
+ };
573
+
524
574
  #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
525
575
 
526
576
  template <typename CompletionToken, typename Signature,
@@ -16,8 +16,8 @@
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
18
  #include <algorithm>
19
- #include <boost/asio/associated_allocator.hpp>
20
- #include <boost/asio/associated_executor.hpp>
19
+ #include <boost/asio/associator.hpp>
20
+ #include <boost/asio/detail/base_from_cancellation_state.hpp>
21
21
  #include <boost/asio/detail/bind_handler.hpp>
22
22
  #include <boost/asio/detail/handler_alloc_helpers.hpp>
23
23
  #include <boost/asio/detail/handler_cont_helpers.hpp>
@@ -295,14 +295,18 @@ namespace detail
295
295
 
296
296
  template <typename Protocol, typename Executor, typename EndpointSequence,
297
297
  typename ConnectCondition, typename RangeConnectHandler>
298
- class range_connect_op : base_from_connect_condition<ConnectCondition>
298
+ class range_connect_op
299
+ : public base_from_cancellation_state<RangeConnectHandler>,
300
+ base_from_connect_condition<ConnectCondition>
299
301
  {
300
302
  public:
301
303
  range_connect_op(basic_socket<Protocol, Executor>& sock,
302
304
  const EndpointSequence& endpoints,
303
305
  const ConnectCondition& connect_condition,
304
306
  RangeConnectHandler& handler)
305
- : base_from_connect_condition<ConnectCondition>(connect_condition),
307
+ : base_from_cancellation_state<RangeConnectHandler>(
308
+ handler, enable_partial_cancellation()),
309
+ base_from_connect_condition<ConnectCondition>(connect_condition),
306
310
  socket_(sock),
307
311
  endpoints_(endpoints),
308
312
  index_(0),
@@ -313,7 +317,8 @@ namespace detail
313
317
 
314
318
  #if defined(BOOST_ASIO_HAS_MOVE)
315
319
  range_connect_op(const range_connect_op& other)
316
- : base_from_connect_condition<ConnectCondition>(other),
320
+ : base_from_cancellation_state<RangeConnectHandler>(other),
321
+ base_from_connect_condition<ConnectCondition>(other),
317
322
  socket_(other.socket_),
318
323
  endpoints_(other.endpoints_),
319
324
  index_(other.index_),
@@ -323,7 +328,10 @@ namespace detail
323
328
  }
324
329
 
325
330
  range_connect_op(range_connect_op&& other)
326
- : base_from_connect_condition<ConnectCondition>(other),
331
+ : base_from_cancellation_state<RangeConnectHandler>(
332
+ BOOST_ASIO_MOVE_CAST(base_from_cancellation_state<
333
+ RangeConnectHandler>)(other)),
334
+ base_from_connect_condition<ConnectCondition>(other),
327
335
  socket_(other.socket_),
328
336
  endpoints_(other.endpoints_),
329
337
  index_(other.index_),
@@ -389,11 +397,18 @@ namespace detail
389
397
  if (!ec)
390
398
  break;
391
399
 
400
+ if (this->cancelled() != cancellation_type::none)
401
+ {
402
+ ec = boost::asio::error::operation_aborted;
403
+ break;
404
+ }
405
+
392
406
  ++iter;
393
407
  ++index_;
394
408
  }
395
409
 
396
- handler_(static_cast<const boost::system::error_code&>(ec),
410
+ BOOST_ASIO_MOVE_OR_LVALUE(RangeConnectHandler)(handler_)(
411
+ static_cast<const boost::system::error_code&>(ec),
397
412
  static_cast<const typename Protocol::endpoint&>(
398
413
  ec || iter == end ? typename Protocol::endpoint() : *iter));
399
414
  }
@@ -516,14 +531,18 @@ namespace detail
516
531
 
517
532
  template <typename Protocol, typename Executor, typename Iterator,
518
533
  typename ConnectCondition, typename IteratorConnectHandler>
519
- class iterator_connect_op : base_from_connect_condition<ConnectCondition>
534
+ class iterator_connect_op
535
+ : public base_from_cancellation_state<IteratorConnectHandler>,
536
+ base_from_connect_condition<ConnectCondition>
520
537
  {
521
538
  public:
522
539
  iterator_connect_op(basic_socket<Protocol, Executor>& sock,
523
540
  const Iterator& begin, const Iterator& end,
524
541
  const ConnectCondition& connect_condition,
525
542
  IteratorConnectHandler& handler)
526
- : base_from_connect_condition<ConnectCondition>(connect_condition),
543
+ : base_from_cancellation_state<IteratorConnectHandler>(
544
+ handler, enable_partial_cancellation()),
545
+ base_from_connect_condition<ConnectCondition>(connect_condition),
527
546
  socket_(sock),
528
547
  iter_(begin),
529
548
  end_(end),
@@ -534,7 +553,8 @@ namespace detail
534
553
 
535
554
  #if defined(BOOST_ASIO_HAS_MOVE)
536
555
  iterator_connect_op(const iterator_connect_op& other)
537
- : base_from_connect_condition<ConnectCondition>(other),
556
+ : base_from_cancellation_state<IteratorConnectHandler>(other),
557
+ base_from_connect_condition<ConnectCondition>(other),
538
558
  socket_(other.socket_),
539
559
  iter_(other.iter_),
540
560
  end_(other.end_),
@@ -544,7 +564,10 @@ namespace detail
544
564
  }
545
565
 
546
566
  iterator_connect_op(iterator_connect_op&& other)
547
- : base_from_connect_condition<ConnectCondition>(other),
567
+ : base_from_cancellation_state<IteratorConnectHandler>(
568
+ BOOST_ASIO_MOVE_CAST(base_from_cancellation_state<
569
+ IteratorConnectHandler>)(other)),
570
+ base_from_connect_condition<ConnectCondition>(other),
548
571
  socket_(other.socket_),
549
572
  iter_(other.iter_),
550
573
  end_(other.end_),
@@ -596,10 +619,17 @@ namespace detail
596
619
  if (!ec)
597
620
  break;
598
621
 
622
+ if (this->cancelled() != cancellation_type::none)
623
+ {
624
+ ec = boost::asio::error::operation_aborted;
625
+ break;
626
+ }
627
+
599
628
  ++iter_;
600
629
  }
601
630
 
602
- handler_(static_cast<const boost::system::error_code&>(ec),
631
+ BOOST_ASIO_MOVE_OR_LVALUE(IteratorConnectHandler)(handler_)(
632
+ static_cast<const boost::system::error_code&>(ec),
603
633
  static_cast<const Iterator&>(iter_));
604
634
  }
605
635
  }
@@ -724,86 +754,44 @@ namespace detail
724
754
 
725
755
  #if !defined(GENERATING_DOCUMENTATION)
726
756
 
727
- template <typename Protocol, typename Executor, typename EndpointSequence,
728
- typename ConnectCondition, typename RangeConnectHandler, typename Allocator>
729
- struct associated_allocator<
730
- detail::range_connect_op<Protocol, Executor, EndpointSequence,
731
- ConnectCondition, RangeConnectHandler>, Allocator>
757
+ template <template <typename, typename> class Associator,
758
+ typename Protocol, typename Executor, typename EndpointSequence,
759
+ typename ConnectCondition, typename RangeConnectHandler,
760
+ typename DefaultCandidate>
761
+ struct associator<Associator,
762
+ detail::range_connect_op<Protocol, Executor,
763
+ EndpointSequence, ConnectCondition, RangeConnectHandler>,
764
+ DefaultCandidate>
765
+ : Associator<RangeConnectHandler, DefaultCandidate>
732
766
  {
733
- typedef typename associated_allocator<
734
- RangeConnectHandler, Allocator>::type type;
735
-
736
- static type get(
737
- const detail::range_connect_op<Protocol, Executor, EndpointSequence,
738
- ConnectCondition, RangeConnectHandler>& h,
739
- const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
767
+ static typename Associator<RangeConnectHandler, DefaultCandidate>::type get(
768
+ const detail::range_connect_op<Protocol, Executor,
769
+ EndpointSequence, ConnectCondition, RangeConnectHandler>& h,
770
+ const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
740
771
  {
741
- return associated_allocator<RangeConnectHandler,
742
- Allocator>::get(h.handler_, a);
772
+ return Associator<RangeConnectHandler, DefaultCandidate>::get(
773
+ h.handler_, c);
743
774
  }
744
775
  };
745
776
 
746
- template <typename Protocol, typename Executor, typename EndpointSequence,
747
- typename ConnectCondition, typename RangeConnectHandler, typename Executor1>
748
- struct associated_executor<
749
- detail::range_connect_op<Protocol, Executor, EndpointSequence,
750
- ConnectCondition, RangeConnectHandler>, Executor1>
751
- : detail::associated_executor_forwarding_base<RangeConnectHandler, Executor1>
752
- {
753
- typedef typename associated_executor<
754
- RangeConnectHandler, Executor1>::type type;
755
-
756
- static type get(
757
- const detail::range_connect_op<Protocol, Executor, EndpointSequence,
758
- ConnectCondition, RangeConnectHandler>& h,
759
- const Executor1& ex = Executor1()) BOOST_ASIO_NOEXCEPT
760
- {
761
- return associated_executor<RangeConnectHandler,
762
- Executor1>::get(h.handler_, ex);
763
- }
764
- };
765
-
766
- template <typename Protocol, typename Executor, typename Iterator,
767
- typename ConnectCondition, typename IteratorConnectHandler,
768
- typename Allocator>
769
- struct associated_allocator<
770
- detail::iterator_connect_op<Protocol, Executor,
771
- Iterator, ConnectCondition, IteratorConnectHandler>,
772
- Allocator>
773
- {
774
- typedef typename associated_allocator<
775
- IteratorConnectHandler, Allocator>::type type;
776
-
777
- static type get(
778
- const detail::iterator_connect_op<Protocol, Executor,
779
- Iterator, ConnectCondition, IteratorConnectHandler>& h,
780
- const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
781
- {
782
- return associated_allocator<IteratorConnectHandler,
783
- Allocator>::get(h.handler_, a);
784
- }
785
- };
786
-
787
- template <typename Protocol, typename Executor, typename Iterator,
777
+ template <template <typename, typename> class Associator,
778
+ typename Protocol, typename Executor, typename Iterator,
788
779
  typename ConnectCondition, typename IteratorConnectHandler,
789
- typename Executor1>
790
- struct associated_executor<
780
+ typename DefaultCandidate>
781
+ struct associator<Associator,
791
782
  detail::iterator_connect_op<Protocol, Executor,
792
783
  Iterator, ConnectCondition, IteratorConnectHandler>,
793
- Executor1>
794
- : detail::associated_executor_forwarding_base<
795
- IteratorConnectHandler, Executor1>
784
+ DefaultCandidate>
785
+ : Associator<IteratorConnectHandler, DefaultCandidate>
796
786
  {
797
- typedef typename associated_executor<
798
- IteratorConnectHandler, Executor1>::type type;
799
-
800
- static type get(
787
+ static typename Associator<IteratorConnectHandler, DefaultCandidate>::type
788
+ get(
801
789
  const detail::iterator_connect_op<Protocol, Executor,
802
790
  Iterator, ConnectCondition, IteratorConnectHandler>& h,
803
- const Executor1& ex = Executor1()) BOOST_ASIO_NOEXCEPT
791
+ const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
804
792
  {
805
- return associated_executor<IteratorConnectHandler,
806
- Executor1>::get(h.handler_, ex);
793
+ return Associator<IteratorConnectHandler, DefaultCandidate>::get(
794
+ h.handler_, c);
807
795
  }
808
796
  };
809
797