passenger 6.0.15 → 6.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +46 -2
  3. data/build/integration_tests.rb +6 -6
  4. data/build/ruby_tests.rb +1 -1
  5. data/build/test_basics.rb +0 -1
  6. data/src/agent/Core/Config.h +1 -1
  7. data/src/agent/Core/Controller/Config.h +1 -1
  8. data/src/agent/Core/SpawningKit/PipeWatcher.h +18 -3
  9. data/src/agent/Watchdog/Config.h +1 -1
  10. data/src/cxx_supportlib/Constants.h +1 -1
  11. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  12. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +1 -1
  13. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +344 -0
  14. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +686 -0
  15. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +56 -0
  16. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +81 -25
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +68 -8
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +46 -11
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +4 -4
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +1 -1
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +4 -4
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +2 -2
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +2 -2
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +3 -3
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +2 -2
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +3 -3
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +4 -4
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +2 -2
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +2 -2
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +13 -3
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +14 -3
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +13 -3
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +30 -305
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +90 -0
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +17 -18
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +98 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +330 -0
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +81 -15
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +4 -4
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +19 -11
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +37 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +3 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +10 -2
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +14 -1
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +18 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +1 -2
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +7 -3
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +4 -14
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +22 -3
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +447 -142
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +57 -8
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +51 -6
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +5 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +41 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +5 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +13 -2
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +13 -2
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +4 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +9 -2
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +11 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +52 -8
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +13 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +5 -0
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +39 -6
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +5 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +39 -6
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +5 -0
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +5 -0
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +5 -0
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +5 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +5 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +5 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +5 -0
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +5 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +6 -9
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +3 -3
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +3 -3
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +70 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +146 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +35 -5
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +13 -3
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +7 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +180 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +89 -66
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +66 -45
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +13 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +1134 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +130 -106
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +377 -3
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +168 -29
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +149 -203
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +256 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +76 -80
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +40 -14
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +132 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +12 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +12 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +12 -3
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +25 -6
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +25 -6
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +34 -45
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +28 -6
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +204 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +33 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +13 -3
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +21 -9
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +33 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +12 -3
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +40 -9
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +27 -6
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +104 -24
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +12 -3
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +70 -15
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +25 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +38 -30
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +27 -6
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -13
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +2 -2
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +17 -18
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +3 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +13 -3
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +11 -7
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -13
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +23 -18
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +2 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +2 -2
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +4 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  147. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  148. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +3 -3
  150. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +2 -2
  152. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +2 -2
  153. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  154. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +10 -3
  157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +9 -3
  158. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +9 -3
  159. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +6 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +8 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +33 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +9 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +29 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +13 -13
  169. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +80 -95
  170. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +10 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  172. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +738 -34
  173. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +38 -10
  174. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +1 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +2 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +3 -4
  177. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1150 -1213
  178. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +104 -12
  180. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +1 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +11 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +31 -331
  183. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +173 -0
  185. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +133 -0
  186. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +461 -566
  187. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +24 -24
  188. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +91 -0
  189. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +38 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +73 -0
  191. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +39 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +32 -4
  193. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -16
  195. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +46 -0
  196. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  198. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  199. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  200. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  201. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +2 -2
  202. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  203. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  204. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  205. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  209. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +159 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +9 -9
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +45 -45
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +8 -8
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +37 -38
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -0
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +145 -90
  222. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +2 -0
  223. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +7 -7
  224. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +5 -5
  225. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +11 -9
  226. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +7 -7
  227. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  228. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +8 -5
  230. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +4 -2
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +2 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +8 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +111 -0
  235. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  238. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  239. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +6 -2
  240. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +7 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +2 -2
  244. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +10 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +38 -43
  246. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +52 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  249. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  250. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  251. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +37 -7
  252. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +1921 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +66 -82
  254. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +6 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +109 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  257. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +45 -0
  258. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +732 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +49 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +586 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +49 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +166 -66
  263. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +145 -28
  264. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  265. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +143 -261
  266. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +763 -947
  267. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1477 -1487
  268. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +1 -1
  269. data/src/ruby_native_extension/extconf.rb +1 -1
  270. data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
  271. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +3 -2
  272. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +1 -1
  273. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +5 -5
  274. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  275. metadata +36 -19
  276. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  277. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  278. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  279. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  280. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  281. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  282. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  283. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  284. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  285. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -196
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -709
  288. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  289. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  290. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  291. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  292. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
@@ -1060,10 +1060,20 @@ struct associator<Associator,
1060
1060
  DefaultCandidate>
1061
1061
  : Associator<ReadHandler, DefaultCandidate>
1062
1062
  {
1063
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
1064
- const detail::read_until_delim_op_v1<AsyncReadStream,
1063
+ static typename Associator<ReadHandler, DefaultCandidate>::type
1064
+ get(const detail::read_until_delim_op_v1<AsyncReadStream,
1065
+ DynamicBuffer_v1, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
1066
+ {
1067
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
1068
+ }
1069
+
1070
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1071
+ typename Associator<ReadHandler, DefaultCandidate>::type)
1072
+ get(const detail::read_until_delim_op_v1<AsyncReadStream,
1065
1073
  DynamicBuffer_v1, ReadHandler>& h,
1066
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1074
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1075
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1076
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
1067
1077
  {
1068
1078
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
1069
1079
  }
@@ -1367,10 +1377,20 @@ struct associator<Associator,
1367
1377
  DefaultCandidate>
1368
1378
  : Associator<ReadHandler, DefaultCandidate>
1369
1379
  {
1370
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
1371
- const detail::read_until_delim_string_op_v1<AsyncReadStream,
1380
+ static typename Associator<ReadHandler, DefaultCandidate>::type
1381
+ get(const detail::read_until_delim_string_op_v1<AsyncReadStream,
1382
+ DynamicBuffer_v1, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
1383
+ {
1384
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
1385
+ }
1386
+
1387
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1388
+ typename Associator<ReadHandler, DefaultCandidate>::type)
1389
+ get(const detail::read_until_delim_string_op_v1<AsyncReadStream,
1372
1390
  DynamicBuffer_v1, ReadHandler>& h,
1373
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1391
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1392
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1393
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
1374
1394
  {
1375
1395
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
1376
1396
  }
@@ -1683,10 +1703,20 @@ struct associator<Associator,
1683
1703
  DefaultCandidate>
1684
1704
  : Associator<ReadHandler, DefaultCandidate>
1685
1705
  {
1686
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
1687
- const detail::read_until_expr_op_v1<AsyncReadStream,
1706
+ static typename Associator<ReadHandler, DefaultCandidate>::type
1707
+ get(const detail::read_until_expr_op_v1<AsyncReadStream,
1708
+ DynamicBuffer_v1, RegEx, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
1709
+ {
1710
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
1711
+ }
1712
+
1713
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1714
+ typename Associator<ReadHandler, DefaultCandidate>::type)
1715
+ get(const detail::read_until_expr_op_v1<AsyncReadStream,
1688
1716
  DynamicBuffer_v1, RegEx, ReadHandler>& h,
1689
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1717
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1718
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1719
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
1690
1720
  {
1691
1721
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
1692
1722
  }
@@ -1995,10 +2025,20 @@ struct associator<Associator,
1995
2025
  DefaultCandidate>
1996
2026
  : Associator<ReadHandler, DefaultCandidate>
1997
2027
  {
1998
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
1999
- const detail::read_until_match_op_v1<AsyncReadStream,
2028
+ static typename Associator<ReadHandler, DefaultCandidate>::type
2029
+ get(const detail::read_until_match_op_v1<AsyncReadStream,
2030
+ DynamicBuffer_v1, MatchCondition, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
2031
+ {
2032
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
2033
+ }
2034
+
2035
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
2036
+ typename Associator<ReadHandler, DefaultCandidate>::type)
2037
+ get(const detail::read_until_match_op_v1<AsyncReadStream,
2000
2038
  DynamicBuffer_v1, MatchCondition, ReadHandler>& h,
2001
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
2039
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
2040
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
2041
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
2002
2042
  {
2003
2043
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
2004
2044
  }
@@ -2380,10 +2420,20 @@ struct associator<Associator,
2380
2420
  DefaultCandidate>
2381
2421
  : Associator<ReadHandler, DefaultCandidate>
2382
2422
  {
2383
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
2384
- const detail::read_until_delim_op_v2<AsyncReadStream,
2423
+ static typename Associator<ReadHandler, DefaultCandidate>::type
2424
+ get(const detail::read_until_delim_op_v2<AsyncReadStream,
2425
+ DynamicBuffer_v2, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
2426
+ {
2427
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
2428
+ }
2429
+
2430
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
2431
+ typename Associator<ReadHandler, DefaultCandidate>::type)
2432
+ get(const detail::read_until_delim_op_v2<AsyncReadStream,
2385
2433
  DynamicBuffer_v2, ReadHandler>& h,
2386
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
2434
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
2435
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
2436
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
2387
2437
  {
2388
2438
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
2389
2439
  }
@@ -2691,10 +2741,20 @@ struct associator<Associator,
2691
2741
  DefaultCandidate>
2692
2742
  : Associator<ReadHandler, DefaultCandidate>
2693
2743
  {
2694
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
2695
- const detail::read_until_delim_string_op_v2<AsyncReadStream,
2744
+ static typename Associator<ReadHandler, DefaultCandidate>::type
2745
+ get(const detail::read_until_delim_string_op_v2<AsyncReadStream,
2746
+ DynamicBuffer_v2, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
2747
+ {
2748
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
2749
+ }
2750
+
2751
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
2752
+ typename Associator<ReadHandler, DefaultCandidate>::type)
2753
+ get(const detail::read_until_delim_string_op_v2<AsyncReadStream,
2696
2754
  DynamicBuffer_v2, ReadHandler>& h,
2697
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
2755
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
2756
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
2757
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
2698
2758
  {
2699
2759
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
2700
2760
  }
@@ -3013,10 +3073,20 @@ struct associator<Associator,
3013
3073
  DefaultCandidate>
3014
3074
  : Associator<ReadHandler, DefaultCandidate>
3015
3075
  {
3016
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
3017
- const detail::read_until_expr_op_v2<AsyncReadStream,
3076
+ static typename Associator<ReadHandler, DefaultCandidate>::type
3077
+ get(const detail::read_until_expr_op_v2<AsyncReadStream,
3078
+ DynamicBuffer_v2, RegEx, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
3079
+ {
3080
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
3081
+ }
3082
+
3083
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
3084
+ typename Associator<ReadHandler, DefaultCandidate>::type)
3085
+ get(const detail::read_until_expr_op_v2<AsyncReadStream,
3018
3086
  DynamicBuffer_v2, RegEx, ReadHandler>& h,
3019
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
3087
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
3088
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
3089
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
3020
3090
  {
3021
3091
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
3022
3092
  }
@@ -3328,10 +3398,20 @@ struct associator<Associator,
3328
3398
  DefaultCandidate>
3329
3399
  : Associator<ReadHandler, DefaultCandidate>
3330
3400
  {
3331
- static typename Associator<ReadHandler, DefaultCandidate>::type get(
3332
- const detail::read_until_match_op_v2<AsyncReadStream,
3401
+ static typename Associator<ReadHandler, DefaultCandidate>::type
3402
+ get(const detail::read_until_match_op_v2<AsyncReadStream,
3403
+ DynamicBuffer_v2, MatchCondition, ReadHandler>& h) BOOST_ASIO_NOEXCEPT
3404
+ {
3405
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_);
3406
+ }
3407
+
3408
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
3409
+ typename Associator<ReadHandler, DefaultCandidate>::type)
3410
+ get(const detail::read_until_match_op_v2<AsyncReadStream,
3333
3411
  DynamicBuffer_v2, MatchCondition, ReadHandler>& h,
3334
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
3412
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
3413
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
3414
+ Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c)))
3335
3415
  {
3336
3416
  return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
3337
3417
  }
@@ -593,9 +593,18 @@ struct associator<Associator,
593
593
  detail::redirect_error_handler<Handler>, DefaultCandidate>
594
594
  : Associator<Handler, DefaultCandidate>
595
595
  {
596
- static typename Associator<Handler, DefaultCandidate>::type get(
597
- const detail::redirect_error_handler<Handler>& h,
598
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
596
+ static typename Associator<Handler, DefaultCandidate>::type
597
+ get(const detail::redirect_error_handler<Handler>& h) BOOST_ASIO_NOEXCEPT
598
+ {
599
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
600
+ }
601
+
602
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
603
+ typename Associator<Handler, DefaultCandidate>::type)
604
+ get(const detail::redirect_error_handler<Handler>& h,
605
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
606
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
607
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
599
608
  {
600
609
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
601
610
  }
@@ -22,6 +22,7 @@
22
22
  #include <boost/asio/async_result.hpp>
23
23
  #include <boost/asio/bind_executor.hpp>
24
24
  #include <boost/asio/detail/atomic_count.hpp>
25
+ #include <boost/asio/detail/bind_handler.hpp>
25
26
  #include <boost/asio/detail/handler_alloc_helpers.hpp>
26
27
  #include <boost/asio/detail/handler_cont_helpers.hpp>
27
28
  #include <boost/asio/detail/handler_invoke_helpers.hpp>
@@ -46,6 +47,14 @@ namespace boost {
46
47
  namespace asio {
47
48
  namespace detail {
48
49
 
50
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
51
+ inline void spawned_thread_rethrow(void* ex)
52
+ {
53
+ if (*static_cast<exception_ptr*>(ex))
54
+ rethrow_exception(*static_cast<exception_ptr*>(ex));
55
+ }
56
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
57
+
49
58
  #if defined(BOOST_ASIO_HAS_BOOST_COROUTINE)
50
59
 
51
60
  // Spawned thread implementation using Boost.Coroutine.
@@ -118,6 +127,8 @@ public:
118
127
  {
119
128
  callee_type callee;
120
129
  callee.swap(callee_);
130
+ if (terminal_)
131
+ callee();
121
132
  }
122
133
 
123
134
  private:
@@ -140,8 +151,26 @@ private:
140
151
  *spawned_thread_out_ = &spawned_thread;
141
152
  spawned_thread_out_ = 0;
142
153
  spawned_thread.suspend();
143
- function(&spawned_thread);
144
- spawned_thread.suspend();
154
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
155
+ try
156
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
157
+ {
158
+ function(&spawned_thread);
159
+ spawned_thread.terminal_ = true;
160
+ spawned_thread.suspend();
161
+ }
162
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
163
+ catch (const boost::coroutines::detail::forced_unwind&)
164
+ {
165
+ throw;
166
+ }
167
+ catch (...)
168
+ {
169
+ exception_ptr ex = current_exception();
170
+ spawned_thread.terminal_ = true;
171
+ spawned_thread.suspend_with(spawned_thread_rethrow, &ex);
172
+ }
173
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
145
174
  }
146
175
 
147
176
  private:
@@ -226,7 +255,8 @@ public:
226
255
  void destroy()
227
256
  {
228
257
  fiber_type callee = BOOST_ASIO_MOVE_CAST(fiber_type)(callee_);
229
- (void)callee;
258
+ if (terminal_)
259
+ fiber_type(BOOST_ASIO_MOVE_CAST(fiber_type)(callee)).resume();
230
260
  }
231
261
 
232
262
  private:
@@ -250,9 +280,27 @@ private:
250
280
  *spawned_thread_out_ = &spawned_thread;
251
281
  spawned_thread_out_ = 0;
252
282
  spawned_thread.suspend();
253
- function(&spawned_thread);
254
- spawned_thread.suspend();
255
- return {};
283
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
284
+ try
285
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
286
+ {
287
+ function(&spawned_thread);
288
+ spawned_thread.terminal_ = true;
289
+ spawned_thread.suspend();
290
+ }
291
+ #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
292
+ catch (const boost::context::detail::forced_unwind&)
293
+ {
294
+ throw;
295
+ }
296
+ catch (...)
297
+ {
298
+ exception_ptr ex = current_exception();
299
+ spawned_thread.terminal_ = true;
300
+ spawned_thread.suspend_with(spawned_thread_rethrow, &ex);
301
+ }
302
+ #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
303
+ return BOOST_ASIO_MOVE_CAST(fiber_type)(spawned_thread.caller_);
256
304
  }
257
305
 
258
306
  private:
@@ -963,7 +1011,8 @@ public:
963
1011
  BOOST_ASIO_MOVE_ARG(F) f, BOOST_ASIO_MOVE_ARG(H) h)
964
1012
  : executor_(ex),
965
1013
  function_(BOOST_ASIO_MOVE_CAST(F)(f)),
966
- handler_(BOOST_ASIO_MOVE_CAST(H)(h))
1014
+ handler_(BOOST_ASIO_MOVE_CAST(H)(h)),
1015
+ work_(handler_, executor_)
967
1016
  {
968
1017
  }
969
1018
 
@@ -985,7 +1034,9 @@ private:
985
1034
  function_(yield);
986
1035
  if (!yield.spawned_thread_->has_context_switched())
987
1036
  (post)(yield);
988
- BOOST_ASIO_MOVE_OR_LVALUE(Handler)(handler_)(exception_ptr());
1037
+ detail::binder1<Handler, exception_ptr>
1038
+ handler(handler_, exception_ptr());
1039
+ work_.complete(handler, handler.handler_);
989
1040
  }
990
1041
  #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
991
1042
  # if defined(BOOST_ASIO_HAS_BOOST_CONTEXT_FIBER)
@@ -1005,7 +1056,8 @@ private:
1005
1056
  exception_ptr ex = current_exception();
1006
1057
  if (!yield.spawned_thread_->has_context_switched())
1007
1058
  (post)(yield);
1008
- BOOST_ASIO_MOVE_OR_LVALUE(Handler)(handler_)(ex);
1059
+ detail::binder1<Handler, exception_ptr> handler(handler_, ex);
1060
+ work_.complete(handler, handler.handler_);
1009
1061
  }
1010
1062
  #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
1011
1063
  }
@@ -1020,8 +1072,9 @@ private:
1020
1072
  T result(function_(yield));
1021
1073
  if (!yield.spawned_thread_->has_context_switched())
1022
1074
  (post)(yield);
1023
- BOOST_ASIO_MOVE_OR_LVALUE(Handler)(handler_)(
1024
- exception_ptr(), BOOST_ASIO_MOVE_CAST(T)(result));
1075
+ detail::binder2<Handler, exception_ptr, T>
1076
+ handler(handler_, exception_ptr(), BOOST_ASIO_MOVE_CAST(T)(result));
1077
+ work_.complete(handler, handler.handler_);
1025
1078
  }
1026
1079
  #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
1027
1080
  # if defined(BOOST_ASIO_HAS_BOOST_CONTEXT_FIBER)
@@ -1041,7 +1094,8 @@ private:
1041
1094
  exception_ptr ex = current_exception();
1042
1095
  if (!yield.spawned_thread_->has_context_switched())
1043
1096
  (post)(yield);
1044
- BOOST_ASIO_MOVE_OR_LVALUE(Handler)(handler_)(ex, T());
1097
+ detail::binder2<Handler, exception_ptr, T> handler(handler_, ex, T());
1098
+ work_.complete(handler, handler.handler_);
1045
1099
  }
1046
1100
  #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
1047
1101
  }
@@ -1049,6 +1103,7 @@ private:
1049
1103
  Executor executor_;
1050
1104
  Function function_;
1051
1105
  Handler handler_;
1106
+ handler_work<Handler, Executor> work_;
1052
1107
  };
1053
1108
 
1054
1109
  struct spawn_cancellation_signal_emitter
@@ -1066,8 +1121,8 @@ template <typename Handler, typename Executor, typename = void>
1066
1121
  class spawn_cancellation_handler
1067
1122
  {
1068
1123
  public:
1069
- spawn_cancellation_handler(const Handler& handler, const Executor& ex)
1070
- : ex_(boost::asio::get_associated_executor(handler, ex))
1124
+ spawn_cancellation_handler(const Handler&, const Executor& ex)
1125
+ : ex_(ex)
1071
1126
  {
1072
1127
  }
1073
1128
 
@@ -1084,7 +1139,7 @@ public:
1084
1139
 
1085
1140
  private:
1086
1141
  cancellation_signal signal_;
1087
- typename associated_executor<Handler, Executor>::type ex_;
1142
+ Executor ex_;
1088
1143
  };
1089
1144
 
1090
1145
 
@@ -19,6 +19,7 @@
19
19
  # error Do not compile Asio library source with BOOST_ASIO_HEADER_ONLY defined
20
20
  #endif
21
21
 
22
+ #include <boost/asio/impl/any_completion_executor.ipp>
22
23
  #include <boost/asio/impl/any_io_executor.ipp>
23
24
  #include <boost/asio/impl/cancellation_signal.ipp>
24
25
  #include <boost/asio/impl/connect_pipe.ipp>
@@ -212,6 +212,11 @@ public:
212
212
  {
213
213
  }
214
214
 
215
+ execution_context& query(execution::context_t) const BOOST_ASIO_NOEXCEPT
216
+ {
217
+ return boost::asio::query(system_executor(), execution::context);
218
+ }
219
+
215
220
  static BOOST_ASIO_CONSTEXPR Blocking query(execution::blocking_t)
216
221
  {
217
222
  return Blocking();
@@ -232,9 +237,14 @@ public:
232
237
  template <typename F>
233
238
  void execute(BOOST_ASIO_MOVE_ARG(F) f) const
234
239
  {
240
+ #if defined(BOOST_ASIO_NO_DEPRECATED)
241
+ boost::asio::require(system_executor(), Blocking()).execute(
242
+ promise_invoker<T, F>(p_, BOOST_ASIO_MOVE_CAST(F)(f)));
243
+ #else // defined(BOOST_ASIO_NO_DEPRECATED)
235
244
  execution::execute(
236
245
  boost::asio::require(system_executor(), Blocking()),
237
246
  promise_invoker<T, F>(p_, BOOST_ASIO_MOVE_CAST(F)(f)));
247
+ #endif // defined(BOOST_ASIO_NO_DEPRECATED)
238
248
  }
239
249
 
240
250
  #if !defined(BOOST_ASIO_NO_TS_EXECUTORS)
@@ -990,6 +1000,21 @@ struct query_static_constexpr_member<
990
1000
 
991
1001
  #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_TRAIT)
992
1002
 
1003
+ #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
1004
+
1005
+ template <typename T, typename Blocking>
1006
+ struct query_member<
1007
+ boost::asio::detail::promise_executor<T, Blocking>,
1008
+ execution::context_t
1009
+ >
1010
+ {
1011
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1012
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1013
+ typedef boost::asio::system_context& result_type;
1014
+ };
1015
+
1016
+ #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
1017
+
993
1018
  #if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
994
1019
 
995
1020
  template <typename T, typename Blocking>
@@ -512,10 +512,21 @@ struct associator<Associator,
512
512
  DefaultCandidate>
513
513
  : Associator<WriteHandler, DefaultCandidate>
514
514
  {
515
- static typename Associator<WriteHandler, DefaultCandidate>::type get(
516
- const detail::write_op<AsyncWriteStream, ConstBufferSequence,
515
+ static typename Associator<WriteHandler, DefaultCandidate>::type
516
+ get(const detail::write_op<AsyncWriteStream, ConstBufferSequence,
517
+ ConstBufferIterator, CompletionCondition, WriteHandler>& h)
518
+ BOOST_ASIO_NOEXCEPT
519
+ {
520
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_);
521
+ }
522
+
523
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
524
+ typename Associator<WriteHandler, DefaultCandidate>::type)
525
+ get(const detail::write_op<AsyncWriteStream, ConstBufferSequence,
517
526
  ConstBufferIterator, CompletionCondition, WriteHandler>& h,
518
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
527
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
528
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
529
+ Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c)))
519
530
  {
520
531
  return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
521
532
  }
@@ -758,10 +769,20 @@ struct associator<Associator,
758
769
  DefaultCandidate>
759
770
  : Associator<WriteHandler, DefaultCandidate>
760
771
  {
761
- static typename Associator<WriteHandler, DefaultCandidate>::type get(
762
- const detail::write_dynbuf_v1_op<AsyncWriteStream,
772
+ static typename Associator<WriteHandler, DefaultCandidate>::type
773
+ get(const detail::write_dynbuf_v1_op<AsyncWriteStream, DynamicBuffer_v1,
774
+ CompletionCondition, WriteHandler>& h) BOOST_ASIO_NOEXCEPT
775
+ {
776
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_);
777
+ }
778
+
779
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
780
+ typename Associator<WriteHandler, DefaultCandidate>::type)
781
+ get(const detail::write_dynbuf_v1_op<AsyncWriteStream,
763
782
  DynamicBuffer_v1, CompletionCondition, WriteHandler>& h,
764
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
783
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
784
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
785
+ Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c)))
765
786
  {
766
787
  return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
767
788
  }
@@ -1055,35 +1076,22 @@ struct associator<Associator,
1055
1076
  DefaultCandidate>
1056
1077
  : Associator<WriteHandler, DefaultCandidate>
1057
1078
  {
1058
- static typename Associator<WriteHandler, DefaultCandidate>::type get(
1059
- const detail::write_dynbuf_v2_op<AsyncWriteStream,
1060
- DynamicBuffer_v2, CompletionCondition, WriteHandler>& h,
1061
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1079
+ static typename Associator<WriteHandler, DefaultCandidate>::type
1080
+ get(const detail::write_dynbuf_v2_op<AsyncWriteStream, DynamicBuffer_v2,
1081
+ CompletionCondition, WriteHandler>& h) BOOST_ASIO_NOEXCEPT
1062
1082
  {
1063
- return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
1083
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_);
1064
1084
  }
1065
- };
1066
-
1067
- template <typename AsyncWriteStream, typename DynamicBuffer_v2,
1068
- typename CompletionCondition, typename WriteHandler,
1069
- typename CancellationSlot>
1070
- struct associated_cancellation_slot<
1071
- detail::write_dynbuf_v2_op<AsyncWriteStream,
1072
- DynamicBuffer_v2, CompletionCondition, WriteHandler>,
1073
- CancellationSlot>
1074
- : detail::associated_cancellation_slot_forwarding_base<
1075
- WriteHandler, CancellationSlot>
1076
- {
1077
- typedef typename associated_cancellation_slot<
1078
- WriteHandler, CancellationSlot>::type type;
1079
1085
 
1080
- static type get(
1081
- const detail::write_dynbuf_v2_op<AsyncWriteStream,
1086
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1087
+ typename Associator<WriteHandler, DefaultCandidate>::type)
1088
+ get(const detail::write_dynbuf_v2_op<AsyncWriteStream,
1082
1089
  DynamicBuffer_v2, CompletionCondition, WriteHandler>& h,
1083
- const CancellationSlot& s = CancellationSlot()) BOOST_ASIO_NOEXCEPT
1090
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1091
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1092
+ Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c)))
1084
1093
  {
1085
- return associated_cancellation_slot<WriteHandler,
1086
- CancellationSlot>::get(h.handler_, s);
1094
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
1087
1095
  }
1088
1096
  };
1089
1097
 
@@ -392,11 +392,22 @@ struct associator<Associator,
392
392
  DefaultCandidate>
393
393
  : Associator<WriteHandler, DefaultCandidate>
394
394
  {
395
- static typename Associator<WriteHandler, DefaultCandidate>::type get(
396
- const detail::write_at_op<AsyncRandomAccessWriteDevice,
395
+ static typename Associator<WriteHandler, DefaultCandidate>::type
396
+ get(const detail::write_at_op<AsyncRandomAccessWriteDevice,
397
+ ConstBufferSequence, ConstBufferIterator,
398
+ CompletionCondition, WriteHandler>& h) BOOST_ASIO_NOEXCEPT
399
+ {
400
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_);
401
+ }
402
+
403
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
404
+ typename Associator<WriteHandler, DefaultCandidate>::type)
405
+ get(const detail::write_at_op<AsyncRandomAccessWriteDevice,
397
406
  ConstBufferSequence, ConstBufferIterator,
398
407
  CompletionCondition, WriteHandler>& h,
399
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
408
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
409
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
410
+ Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c)))
400
411
  {
401
412
  return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
402
413
  }
@@ -599,9 +610,19 @@ struct associator<Associator,
599
610
  DefaultCandidate>
600
611
  : Associator<WriteHandler, DefaultCandidate>
601
612
  {
602
- static typename Associator<WriteHandler, DefaultCandidate>::type get(
603
- const detail::write_at_streambuf_op<Executor, WriteHandler>& h,
604
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
613
+ static typename Associator<WriteHandler, DefaultCandidate>::type
614
+ get(const detail::write_at_streambuf_op<Executor, WriteHandler>& h)
615
+ BOOST_ASIO_NOEXCEPT
616
+ {
617
+ return Associator<WriteHandler, DefaultCandidate>::get(h.handler_);
618
+ }
619
+
620
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
621
+ typename Associator<WriteHandler, DefaultCandidate>::type)
622
+ get(const detail::write_at_streambuf_op<Executor, WriteHandler>& h,
623
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
624
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
625
+ Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c)))
605
626
  {
606
627
  return Associator<WriteHandler, DefaultCandidate>::get(h.handler_, c);
607
628
  }
@@ -1006,20 +1006,7 @@ public:
1006
1006
  || static_cast<const Allocator&>(a) != static_cast<const Allocator&>(b);
1007
1007
  }
1008
1008
 
1009
- #if !defined(GENERATING_DOCUMENTATION)
1010
- private:
1011
- friend struct boost_asio_execution_execute_fn::impl;
1012
- #endif // !defined(GENERATING_DOCUMENTATION)
1013
-
1014
1009
  /// Execution function.
1015
- /**
1016
- * Do not call this function directly. It is intended for use with the
1017
- * execution::execute customisation point.
1018
- *
1019
- * For example:
1020
- * @code auto ex = my_io_context.get_executor();
1021
- * execution::execute(ex, my_function_object); @endcode
1022
- */
1023
1010
  template <typename Function>
1024
1011
  void execute(BOOST_ASIO_MOVE_ARG(Function) f) const;
1025
1012
 
@@ -130,7 +130,9 @@ std::string network_v4::to_string(boost::system::error_code& ec) const
130
130
  using namespace std; // For sprintf.
131
131
  ec = boost::system::error_code();
132
132
  char prefix_len[16];
133
- #if defined(BOOST_ASIO_HAS_SECURE_RTL)
133
+ #if defined(BOOST_ASIO_HAS_SNPRINTF)
134
+ snprintf(prefix_len, sizeof(prefix_len), "/%u", prefix_length_);
135
+ #elif defined(BOOST_ASIO_HAS_SECURE_RTL)
134
136
  sprintf_s(prefix_len, sizeof(prefix_len), "/%u", prefix_length_);
135
137
  #else // defined(BOOST_ASIO_HAS_SECURE_RTL)
136
138
  sprintf(prefix_len, "/%u", prefix_length_);
@@ -99,7 +99,9 @@ std::string network_v6::to_string(boost::system::error_code& ec) const
99
99
  using namespace std; // For sprintf.
100
100
  ec = boost::system::error_code();
101
101
  char prefix_len[16];
102
- #if defined(BOOST_ASIO_HAS_SECURE_RTL)
102
+ #if defined(BOOST_ASIO_HAS_SNPRINTF)
103
+ snprintf(prefix_len, sizeof(prefix_len), "/%u", prefix_length_);
104
+ #elif defined(BOOST_ASIO_HAS_SECURE_RTL)
103
105
  sprintf_s(prefix_len, sizeof(prefix_len), "/%u", prefix_length_);
104
106
  #else // defined(BOOST_ASIO_HAS_SECURE_RTL)
105
107
  sprintf(prefix_len, "/%u", prefix_length_);
@@ -253,7 +253,7 @@ public:
253
253
  #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
254
254
 
255
255
  /// Get the executor associated with the object.
256
- executor_type get_executor() BOOST_ASIO_NOEXCEPT
256
+ const executor_type& get_executor() BOOST_ASIO_NOEXCEPT
257
257
  {
258
258
  return impl_.get_executor();
259
259
  }
@@ -748,7 +748,7 @@ private:
748
748
  {
749
749
  }
750
750
 
751
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
751
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
752
752
  {
753
753
  return self_->get_executor();
754
754
  }