passenger 6.0.23 → 6.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG +26 -1
- data/Rakefile +7 -3
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +17 -2
- data/build/apache2.rb +1 -1
- data/build/basics.rb +10 -4
- data/build/cxx_tests.rb +18 -7
- data/build/support/cxx_dependency_map.rb +40 -6
- data/build/test_basics.rb +4 -12
- data/package.json +1 -1
- data/passenger.gemspec +1 -1
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group.h +15 -5
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -1
- data/src/agent/Core/ApplicationPool/Pool.h +0 -2
- data/src/agent/Core/ApplicationPool/Process.h +22 -6
- data/src/agent/Core/ApplicationPool/Session.h +6 -1
- data/src/agent/Core/Config.h +7 -3
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
- data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
- data/src/agent/Core/SpawningKit/Spawner.h +4 -0
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
- data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
- data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
- data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -3
- data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
- data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
- data/src/cxx_supportlib/ServerKit/Server.h +0 -6
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
- data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
- data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +21 -8
@@ -1603,7 +1603,7 @@ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1603
1603
|
* Regardless of whether the asynchronous operation completes immediately or
|
1604
1604
|
* not, the completion handler will not be invoked from within this function.
|
1605
1605
|
* On immediate completion, invocation of the handler will be performed in a
|
1606
|
-
* manner equivalent to using boost::asio::
|
1606
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1607
1607
|
*
|
1608
1608
|
* @par Completion Signature
|
1609
1609
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1656,7 +1656,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v1,
|
|
1656
1656
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1657
1657
|
std::size_t)) ReadToken = default_completion_token_t<
|
1658
1658
|
typename AsyncReadStream::executor_type>>
|
1659
|
-
auto async_read_until(AsyncReadStream& s,
|
1659
|
+
inline auto async_read_until(AsyncReadStream& s,
|
1660
1660
|
DynamicBuffer_v1&& buffers, char delim,
|
1661
1661
|
ReadToken&& token = default_completion_token_t<
|
1662
1662
|
typename AsyncReadStream::executor_type>(),
|
@@ -1670,7 +1670,13 @@ auto async_read_until(AsyncReadStream& s,
|
|
1670
1670
|
async_initiate<ReadToken,
|
1671
1671
|
void (boost::system::error_code, std::size_t)>(
|
1672
1672
|
declval<detail::initiate_async_read_until_delim_v1<AsyncReadStream>>(),
|
1673
|
-
token, static_cast<DynamicBuffer_v1&&>(buffers), delim))
|
1673
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers), delim))
|
1674
|
+
{
|
1675
|
+
return async_initiate<ReadToken,
|
1676
|
+
void (boost::system::error_code, std::size_t)>(
|
1677
|
+
detail::initiate_async_read_until_delim_v1<AsyncReadStream>(s),
|
1678
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers), delim);
|
1679
|
+
}
|
1674
1680
|
|
1675
1681
|
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
1676
1682
|
/// until it contains a specified delimiter.
|
@@ -1720,7 +1726,7 @@ auto async_read_until(AsyncReadStream& s,
|
|
1720
1726
|
* Regardless of whether the asynchronous operation completes immediately or
|
1721
1727
|
* not, the completion handler will not be invoked from within this function.
|
1722
1728
|
* On immediate completion, invocation of the handler will be performed in a
|
1723
|
-
* manner equivalent to using boost::asio::
|
1729
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1724
1730
|
*
|
1725
1731
|
* @par Completion Signature
|
1726
1732
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1773,7 +1779,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v1,
|
|
1773
1779
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1774
1780
|
std::size_t)) ReadToken = default_completion_token_t<
|
1775
1781
|
typename AsyncReadStream::executor_type>>
|
1776
|
-
auto async_read_until(AsyncReadStream& s,
|
1782
|
+
inline auto async_read_until(AsyncReadStream& s,
|
1777
1783
|
DynamicBuffer_v1&& buffers,
|
1778
1784
|
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
1779
1785
|
ReadToken&& token = default_completion_token_t<
|
@@ -1790,7 +1796,14 @@ auto async_read_until(AsyncReadStream& s,
|
|
1790
1796
|
declval<detail::initiate_async_read_until_delim_string_v1<
|
1791
1797
|
AsyncReadStream>>(),
|
1792
1798
|
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
1793
|
-
static_cast<std::string>(delim)))
|
1799
|
+
static_cast<std::string>(delim)))
|
1800
|
+
{
|
1801
|
+
return async_initiate<ReadToken,
|
1802
|
+
void (boost::system::error_code, std::size_t)>(
|
1803
|
+
detail::initiate_async_read_until_delim_string_v1<AsyncReadStream>(s),
|
1804
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
1805
|
+
static_cast<std::string>(delim));
|
1806
|
+
}
|
1794
1807
|
|
1795
1808
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
1796
1809
|
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
@@ -1848,7 +1861,7 @@ auto async_read_until(AsyncReadStream& s,
|
|
1848
1861
|
* Regardless of whether the asynchronous operation completes immediately or
|
1849
1862
|
* not, the completion handler will not be invoked from within this function.
|
1850
1863
|
* On immediate completion, invocation of the handler will be performed in a
|
1851
|
-
* manner equivalent to using boost::asio::
|
1864
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1852
1865
|
*
|
1853
1866
|
* @par Completion Signature
|
1854
1867
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1902,7 +1915,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v1, typename Traits,
|
|
1902
1915
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1903
1916
|
std::size_t)) ReadToken = default_completion_token_t<
|
1904
1917
|
typename AsyncReadStream::executor_type>>
|
1905
|
-
auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
|
1918
|
+
inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
|
1906
1919
|
const boost::basic_regex<char, Traits>& expr,
|
1907
1920
|
ReadToken&& token = default_completion_token_t<
|
1908
1921
|
typename AsyncReadStream::executor_type>(),
|
@@ -1916,7 +1929,13 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
|
|
1916
1929
|
async_initiate<ReadToken,
|
1917
1930
|
void (boost::system::error_code, std::size_t)>(
|
1918
1931
|
declval<detail::initiate_async_read_until_expr_v1<AsyncReadStream>>(),
|
1919
|
-
token, static_cast<DynamicBuffer_v1&&>(buffers), expr))
|
1932
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers), expr))
|
1933
|
+
{
|
1934
|
+
return async_initiate<ReadToken,
|
1935
|
+
void (boost::system::error_code, std::size_t)>(
|
1936
|
+
detail::initiate_async_read_until_expr_v1<AsyncReadStream>(s),
|
1937
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers), expr);
|
1938
|
+
}
|
1920
1939
|
|
1921
1940
|
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
1922
1941
|
// || defined(GENERATING_DOCUMENTATION)
|
@@ -1984,7 +2003,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v1&& buffers,
|
|
1984
2003
|
* Regardless of whether the asynchronous operation completes immediately or
|
1985
2004
|
* not, the completion handler will not be invoked from within this function.
|
1986
2005
|
* On immediate completion, invocation of the handler will be performed in a
|
1987
|
-
* manner equivalent to using boost::asio::
|
2006
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1988
2007
|
*
|
1989
2008
|
* @note After a successful async_read_until operation, the dynamic buffer
|
1990
2009
|
* sequence may contain additional data beyond that which matched the function
|
@@ -2070,7 +2089,7 @@ template <typename AsyncReadStream,
|
|
2070
2089
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2071
2090
|
std::size_t)) ReadToken = default_completion_token_t<
|
2072
2091
|
typename AsyncReadStream::executor_type>>
|
2073
|
-
auto async_read_until(AsyncReadStream& s,
|
2092
|
+
inline auto async_read_until(AsyncReadStream& s,
|
2074
2093
|
DynamicBuffer_v1&& buffers, MatchCondition match_condition,
|
2075
2094
|
ReadToken&& token = default_completion_token_t<
|
2076
2095
|
typename AsyncReadStream::executor_type>(),
|
@@ -2088,7 +2107,14 @@ auto async_read_until(AsyncReadStream& s,
|
|
2088
2107
|
void (boost::system::error_code, std::size_t)>(
|
2089
2108
|
declval<detail::initiate_async_read_until_match_v1<AsyncReadStream>>(),
|
2090
2109
|
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
2091
|
-
match_condition))
|
2110
|
+
match_condition))
|
2111
|
+
{
|
2112
|
+
return async_initiate<ReadToken,
|
2113
|
+
void (boost::system::error_code, std::size_t)>(
|
2114
|
+
detail::initiate_async_read_until_match_v1<AsyncReadStream>(s),
|
2115
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
2116
|
+
match_condition);
|
2117
|
+
}
|
2092
2118
|
|
2093
2119
|
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
2094
2120
|
|
@@ -2139,7 +2165,7 @@ auto async_read_until(AsyncReadStream& s,
|
|
2139
2165
|
* Regardless of whether the asynchronous operation completes immediately or
|
2140
2166
|
* not, the completion handler will not be invoked from within this function.
|
2141
2167
|
* On immediate completion, invocation of the handler will be performed in a
|
2142
|
-
* manner equivalent to using boost::asio::
|
2168
|
+
* manner equivalent to using boost::asio::async_immediate().
|
2143
2169
|
*
|
2144
2170
|
* @par Completion Signature
|
2145
2171
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -2191,7 +2217,7 @@ template <typename AsyncReadStream, typename Allocator,
|
|
2191
2217
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2192
2218
|
std::size_t)) ReadToken = default_completion_token_t<
|
2193
2219
|
typename AsyncReadStream::executor_type>>
|
2194
|
-
auto async_read_until(AsyncReadStream& s,
|
2220
|
+
inline auto async_read_until(AsyncReadStream& s,
|
2195
2221
|
boost::asio::basic_streambuf<Allocator>& b, char delim,
|
2196
2222
|
ReadToken&& token = default_completion_token_t<
|
2197
2223
|
typename AsyncReadStream::executor_type>())
|
@@ -2199,7 +2225,13 @@ auto async_read_until(AsyncReadStream& s,
|
|
2199
2225
|
async_initiate<ReadToken,
|
2200
2226
|
void (boost::system::error_code, std::size_t)>(
|
2201
2227
|
declval<detail::initiate_async_read_until_delim_v1<AsyncReadStream>>(),
|
2202
|
-
token, basic_streambuf_ref<Allocator>(b), delim))
|
2228
|
+
token, basic_streambuf_ref<Allocator>(b), delim))
|
2229
|
+
{
|
2230
|
+
return async_initiate<ReadToken,
|
2231
|
+
void (boost::system::error_code, std::size_t)>(
|
2232
|
+
detail::initiate_async_read_until_delim_v1<AsyncReadStream>(s),
|
2233
|
+
token, basic_streambuf_ref<Allocator>(b), delim);
|
2234
|
+
}
|
2203
2235
|
|
2204
2236
|
/// Start an asynchronous operation to read data into a streambuf until it
|
2205
2237
|
/// contains a specified delimiter.
|
@@ -2248,7 +2280,7 @@ auto async_read_until(AsyncReadStream& s,
|
|
2248
2280
|
* Regardless of whether the asynchronous operation completes immediately or
|
2249
2281
|
* not, the completion handler will not be invoked from within this function.
|
2250
2282
|
* On immediate completion, invocation of the handler will be performed in a
|
2251
|
-
* manner equivalent to using boost::asio::
|
2283
|
+
* manner equivalent to using boost::asio::async_immediate().
|
2252
2284
|
*
|
2253
2285
|
* @par Completion Signature
|
2254
2286
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -2300,7 +2332,7 @@ template <typename AsyncReadStream, typename Allocator,
|
|
2300
2332
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2301
2333
|
std::size_t)) ReadToken = default_completion_token_t<
|
2302
2334
|
typename AsyncReadStream::executor_type>>
|
2303
|
-
auto async_read_until(AsyncReadStream& s,
|
2335
|
+
inline auto async_read_until(AsyncReadStream& s,
|
2304
2336
|
boost::asio::basic_streambuf<Allocator>& b,
|
2305
2337
|
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
2306
2338
|
ReadToken&& token = default_completion_token_t<
|
@@ -2311,7 +2343,14 @@ auto async_read_until(AsyncReadStream& s,
|
|
2311
2343
|
declval<detail::initiate_async_read_until_delim_string_v1<
|
2312
2344
|
AsyncReadStream>>(),
|
2313
2345
|
token, basic_streambuf_ref<Allocator>(b),
|
2314
|
-
static_cast<std::string>(delim)))
|
2346
|
+
static_cast<std::string>(delim)))
|
2347
|
+
{
|
2348
|
+
return async_initiate<ReadToken,
|
2349
|
+
void (boost::system::error_code, std::size_t)>(
|
2350
|
+
detail::initiate_async_read_until_delim_string_v1<AsyncReadStream>(s),
|
2351
|
+
token, basic_streambuf_ref<Allocator>(b),
|
2352
|
+
static_cast<std::string>(delim));
|
2353
|
+
}
|
2315
2354
|
|
2316
2355
|
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
2317
2356
|
|| defined(GENERATING_DOCUMENTATION)
|
@@ -2365,7 +2404,7 @@ auto async_read_until(AsyncReadStream& s,
|
|
2365
2404
|
* Regardless of whether the asynchronous operation completes immediately or
|
2366
2405
|
* not, the completion handler will not be invoked from within this function.
|
2367
2406
|
* On immediate completion, invocation of the handler will be performed in a
|
2368
|
-
* manner equivalent to using boost::asio::
|
2407
|
+
* manner equivalent to using boost::asio::async_immediate().
|
2369
2408
|
*
|
2370
2409
|
* @par Completion Signature
|
2371
2410
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -2418,7 +2457,7 @@ template <typename AsyncReadStream, typename Allocator, typename Traits,
|
|
2418
2457
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2419
2458
|
std::size_t)) ReadToken = default_completion_token_t<
|
2420
2459
|
typename AsyncReadStream::executor_type>>
|
2421
|
-
auto async_read_until(AsyncReadStream& s,
|
2460
|
+
inline auto async_read_until(AsyncReadStream& s,
|
2422
2461
|
boost::asio::basic_streambuf<Allocator>& b,
|
2423
2462
|
const boost::basic_regex<char, Traits>& expr,
|
2424
2463
|
ReadToken&& token = default_completion_token_t<
|
@@ -2427,7 +2466,13 @@ auto async_read_until(AsyncReadStream& s,
|
|
2427
2466
|
async_initiate<ReadToken,
|
2428
2467
|
void (boost::system::error_code, std::size_t)>(
|
2429
2468
|
declval<detail::initiate_async_read_until_expr_v1<AsyncReadStream>>(),
|
2430
|
-
token, basic_streambuf_ref<Allocator>(b), expr))
|
2469
|
+
token, basic_streambuf_ref<Allocator>(b), expr))
|
2470
|
+
{
|
2471
|
+
return async_initiate<ReadToken,
|
2472
|
+
void (boost::system::error_code, std::size_t)>(
|
2473
|
+
detail::initiate_async_read_until_expr_v1<AsyncReadStream>(s),
|
2474
|
+
token, basic_streambuf_ref<Allocator>(b), expr);
|
2475
|
+
}
|
2431
2476
|
|
2432
2477
|
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
2433
2478
|
// || defined(GENERATING_DOCUMENTATION)
|
@@ -2492,7 +2537,7 @@ auto async_read_until(AsyncReadStream& s,
|
|
2492
2537
|
* Regardless of whether the asynchronous operation completes immediately or
|
2493
2538
|
* not, the completion handler will not be invoked from within this function.
|
2494
2539
|
* On immediate completion, invocation of the handler will be performed in a
|
2495
|
-
* manner equivalent to using boost::asio::
|
2540
|
+
* manner equivalent to using boost::asio::async_immediate().
|
2496
2541
|
*
|
2497
2542
|
* @note After a successful async_read_until operation, the streambuf may
|
2498
2543
|
* contain additional data beyond that which matched the function object. An
|
@@ -2576,7 +2621,7 @@ template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
|
|
2576
2621
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2577
2622
|
std::size_t)) ReadToken = default_completion_token_t<
|
2578
2623
|
typename AsyncReadStream::executor_type>>
|
2579
|
-
auto async_read_until(AsyncReadStream& s,
|
2624
|
+
inline auto async_read_until(AsyncReadStream& s,
|
2580
2625
|
boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
|
2581
2626
|
ReadToken&& token = default_completion_token_t<
|
2582
2627
|
typename AsyncReadStream::executor_type>(),
|
@@ -2585,7 +2630,13 @@ auto async_read_until(AsyncReadStream& s,
|
|
2585
2630
|
async_initiate<ReadToken,
|
2586
2631
|
void (boost::system::error_code, std::size_t)>(
|
2587
2632
|
declval<detail::initiate_async_read_until_match_v1<AsyncReadStream>>(),
|
2588
|
-
token, basic_streambuf_ref<Allocator>(b), match_condition))
|
2633
|
+
token, basic_streambuf_ref<Allocator>(b), match_condition))
|
2634
|
+
{
|
2635
|
+
return async_initiate<ReadToken,
|
2636
|
+
void (boost::system::error_code, std::size_t)>(
|
2637
|
+
detail::initiate_async_read_until_match_v1<AsyncReadStream>(s),
|
2638
|
+
token, basic_streambuf_ref<Allocator>(b), match_condition);
|
2639
|
+
}
|
2589
2640
|
|
2590
2641
|
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
2591
2642
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
@@ -2640,7 +2691,7 @@ auto async_read_until(AsyncReadStream& s,
|
|
2640
2691
|
* Regardless of whether the asynchronous operation completes immediately or
|
2641
2692
|
* not, the completion handler will not be invoked from within this function.
|
2642
2693
|
* On immediate completion, invocation of the handler will be performed in a
|
2643
|
-
* manner equivalent to using boost::asio::
|
2694
|
+
* manner equivalent to using boost::asio::async_immediate().
|
2644
2695
|
*
|
2645
2696
|
* @par Completion Signature
|
2646
2697
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -2693,7 +2744,8 @@ template <typename AsyncReadStream, typename DynamicBuffer_v2,
|
|
2693
2744
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2694
2745
|
std::size_t)) ReadToken = default_completion_token_t<
|
2695
2746
|
typename AsyncReadStream::executor_type>>
|
2696
|
-
auto async_read_until(AsyncReadStream& s,
|
2747
|
+
inline auto async_read_until(AsyncReadStream& s,
|
2748
|
+
DynamicBuffer_v2 buffers, char delim,
|
2697
2749
|
ReadToken&& token = default_completion_token_t<
|
2698
2750
|
typename AsyncReadStream::executor_type>(),
|
2699
2751
|
constraint_t<
|
@@ -2703,7 +2755,13 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
|
|
2703
2755
|
async_initiate<ReadToken,
|
2704
2756
|
void (boost::system::error_code, std::size_t)>(
|
2705
2757
|
declval<detail::initiate_async_read_until_delim_v2<AsyncReadStream>>(),
|
2706
|
-
token, static_cast<DynamicBuffer_v2&&>(buffers), delim))
|
2758
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers), delim))
|
2759
|
+
{
|
2760
|
+
return async_initiate<ReadToken,
|
2761
|
+
void (boost::system::error_code, std::size_t)>(
|
2762
|
+
detail::initiate_async_read_until_delim_v2<AsyncReadStream>(s),
|
2763
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers), delim);
|
2764
|
+
}
|
2707
2765
|
|
2708
2766
|
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
2709
2767
|
/// until it contains a specified delimiter.
|
@@ -2753,7 +2811,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
|
|
2753
2811
|
* Regardless of whether the asynchronous operation completes immediately or
|
2754
2812
|
* not, the completion handler will not be invoked from within this function.
|
2755
2813
|
* On immediate completion, invocation of the handler will be performed in a
|
2756
|
-
* manner equivalent to using boost::asio::
|
2814
|
+
* manner equivalent to using boost::asio::async_immediate().
|
2757
2815
|
*
|
2758
2816
|
* @par Completion Signature
|
2759
2817
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -2806,7 +2864,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v2,
|
|
2806
2864
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2807
2865
|
std::size_t)) ReadToken = default_completion_token_t<
|
2808
2866
|
typename AsyncReadStream::executor_type>>
|
2809
|
-
auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
2867
|
+
inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
2810
2868
|
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
2811
2869
|
ReadToken&& token = default_completion_token_t<
|
2812
2870
|
typename AsyncReadStream::executor_type>(),
|
@@ -2819,7 +2877,14 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
2819
2877
|
declval<detail::initiate_async_read_until_delim_string_v2<
|
2820
2878
|
AsyncReadStream>>(),
|
2821
2879
|
token, static_cast<DynamicBuffer_v2&&>(buffers),
|
2822
|
-
static_cast<std::string>(delim)))
|
2880
|
+
static_cast<std::string>(delim)))
|
2881
|
+
{
|
2882
|
+
return async_initiate<ReadToken,
|
2883
|
+
void (boost::system::error_code, std::size_t)>(
|
2884
|
+
detail::initiate_async_read_until_delim_string_v2<AsyncReadStream>(s),
|
2885
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers),
|
2886
|
+
static_cast<std::string>(delim));
|
2887
|
+
}
|
2823
2888
|
|
2824
2889
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
2825
2890
|
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
@@ -2877,7 +2942,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
2877
2942
|
* Regardless of whether the asynchronous operation completes immediately or
|
2878
2943
|
* not, the completion handler will not be invoked from within this function.
|
2879
2944
|
* On immediate completion, invocation of the handler will be performed in a
|
2880
|
-
* manner equivalent to using boost::asio::
|
2945
|
+
* manner equivalent to using boost::asio::async_immediate().
|
2881
2946
|
*
|
2882
2947
|
* @par Completion Signature
|
2883
2948
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -2931,7 +2996,7 @@ template <typename AsyncReadStream, typename DynamicBuffer_v2, typename Traits,
|
|
2931
2996
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
2932
2997
|
std::size_t)) ReadToken = default_completion_token_t<
|
2933
2998
|
typename AsyncReadStream::executor_type>>
|
2934
|
-
auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
2999
|
+
inline auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
2935
3000
|
const boost::basic_regex<char, Traits>& expr,
|
2936
3001
|
ReadToken&& token = default_completion_token_t<
|
2937
3002
|
typename AsyncReadStream::executor_type>(),
|
@@ -2942,7 +3007,13 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
2942
3007
|
async_initiate<ReadToken,
|
2943
3008
|
void (boost::system::error_code, std::size_t)>(
|
2944
3009
|
declval<detail::initiate_async_read_until_expr_v2<AsyncReadStream>>(),
|
2945
|
-
token, static_cast<DynamicBuffer_v2&&>(buffers), expr))
|
3010
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers), expr))
|
3011
|
+
{
|
3012
|
+
return async_initiate<ReadToken,
|
3013
|
+
void (boost::system::error_code, std::size_t)>(
|
3014
|
+
detail::initiate_async_read_until_expr_v2<AsyncReadStream>(s),
|
3015
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers), expr);
|
3016
|
+
}
|
2946
3017
|
|
2947
3018
|
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
2948
3019
|
// || defined(GENERATING_DOCUMENTATION)
|
@@ -3010,7 +3081,7 @@ auto async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
3010
3081
|
* Regardless of whether the asynchronous operation completes immediately or
|
3011
3082
|
* not, the completion handler will not be invoked from within this function.
|
3012
3083
|
* On immediate completion, invocation of the handler will be performed in a
|
3013
|
-
* manner equivalent to using boost::asio::
|
3084
|
+
* manner equivalent to using boost::asio::async_immediate().
|
3014
3085
|
*
|
3015
3086
|
* @note After a successful async_read_until operation, the dynamic buffer
|
3016
3087
|
* sequence may contain additional data beyond that which matched the function
|
@@ -3096,7 +3167,7 @@ template <typename AsyncReadStream,
|
|
3096
3167
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
3097
3168
|
std::size_t)) ReadToken = default_completion_token_t<
|
3098
3169
|
typename AsyncReadStream::executor_type>>
|
3099
|
-
auto async_read_until(AsyncReadStream& s,
|
3170
|
+
inline auto async_read_until(AsyncReadStream& s,
|
3100
3171
|
DynamicBuffer_v2 buffers, MatchCondition match_condition,
|
3101
3172
|
ReadToken&& token = default_completion_token_t<
|
3102
3173
|
typename AsyncReadStream::executor_type>(),
|
@@ -3110,7 +3181,14 @@ auto async_read_until(AsyncReadStream& s,
|
|
3110
3181
|
async_initiate<ReadToken,
|
3111
3182
|
void (boost::system::error_code, std::size_t)>(
|
3112
3183
|
declval<detail::initiate_async_read_until_match_v2<AsyncReadStream>>(),
|
3113
|
-
token, static_cast<DynamicBuffer_v2&&>(buffers), match_condition))
|
3184
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers), match_condition))
|
3185
|
+
{
|
3186
|
+
return async_initiate<ReadToken,
|
3187
|
+
void (boost::system::error_code, std::size_t)>(
|
3188
|
+
detail::initiate_async_read_until_match_v2<AsyncReadStream>(s),
|
3189
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers),
|
3190
|
+
match_condition);
|
3191
|
+
}
|
3114
3192
|
|
3115
3193
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
3116
3194
|
|
@@ -34,7 +34,7 @@ template <typename CompletionToken>
|
|
34
34
|
class redirect_error_t
|
35
35
|
{
|
36
36
|
public:
|
37
|
-
/// Constructor.
|
37
|
+
/// Constructor.
|
38
38
|
template <typename T>
|
39
39
|
redirect_error_t(T&& completion_token, boost::system::error_code& ec)
|
40
40
|
: token_(static_cast<T&&>(completion_token)),
|
@@ -47,10 +47,50 @@ public:
|
|
47
47
|
boost::system::error_code& ec_;
|
48
48
|
};
|
49
49
|
|
50
|
+
/// A function object type that adapts a @ref completion_token to capture
|
51
|
+
/// error_code values to a variable.
|
52
|
+
/**
|
53
|
+
* May also be used directly as a completion token, in which case it adapts the
|
54
|
+
* asynchronous operation's default completion token (or boost::asio::deferred
|
55
|
+
* if no default is available).
|
56
|
+
*/
|
57
|
+
class partial_redirect_error
|
58
|
+
{
|
59
|
+
public:
|
60
|
+
/// Constructor that specifies the variable used to capture error_code values.
|
61
|
+
explicit partial_redirect_error(boost::system::error_code& ec)
|
62
|
+
: ec_(ec)
|
63
|
+
{
|
64
|
+
}
|
65
|
+
|
66
|
+
/// Adapt a @ref completion_token to specify that the completion handler
|
67
|
+
/// should capture error_code values to a variable.
|
68
|
+
template <typename CompletionToken>
|
69
|
+
BOOST_ASIO_NODISCARD inline
|
70
|
+
constexpr redirect_error_t<decay_t<CompletionToken>>
|
71
|
+
operator()(CompletionToken&& completion_token) const
|
72
|
+
{
|
73
|
+
return redirect_error_t<decay_t<CompletionToken>>(
|
74
|
+
static_cast<CompletionToken&&>(completion_token), ec_);
|
75
|
+
}
|
76
|
+
|
77
|
+
//private:
|
78
|
+
boost::system::error_code& ec_;
|
79
|
+
};
|
80
|
+
|
81
|
+
/// Create a partial completion token adapter that captures error_code values
|
82
|
+
/// to a variable.
|
83
|
+
BOOST_ASIO_NODISCARD inline partial_redirect_error
|
84
|
+
redirect_error(boost::system::error_code& ec)
|
85
|
+
{
|
86
|
+
return partial_redirect_error(ec);
|
87
|
+
}
|
88
|
+
|
50
89
|
/// Adapt a @ref completion_token to capture error_code values to a variable.
|
51
90
|
template <typename CompletionToken>
|
52
|
-
inline redirect_error_t<decay_t<CompletionToken>>
|
53
|
-
|
91
|
+
BOOST_ASIO_NODISCARD inline redirect_error_t<decay_t<CompletionToken>>
|
92
|
+
redirect_error(CompletionToken&& completion_token,
|
93
|
+
boost::system::error_code& ec)
|
54
94
|
{
|
55
95
|
return redirect_error_t<decay_t<CompletionToken>>(
|
56
96
|
static_cast<CompletionToken&&>(completion_token), ec);
|
@@ -79,7 +79,7 @@ private:
|
|
79
79
|
};
|
80
80
|
|
81
81
|
/// Holds a registered buffer over modifiable data.
|
82
|
-
/**
|
82
|
+
/**
|
83
83
|
* Satisfies the @c MutableBufferSequence type requirements.
|
84
84
|
*/
|
85
85
|
class mutable_registered_buffer
|
@@ -150,7 +150,7 @@ private:
|
|
150
150
|
};
|
151
151
|
|
152
152
|
/// Holds a registered buffer over non-modifiable data.
|
153
|
-
/**
|
153
|
+
/**
|
154
154
|
* Satisfies the @c ConstBufferSequence type requirements.
|
155
155
|
*/
|
156
156
|
class const_registered_buffer
|
@@ -38,7 +38,7 @@ public:
|
|
38
38
|
{
|
39
39
|
#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
|
40
40
|
::SSL_library_init();
|
41
|
-
::SSL_load_error_strings();
|
41
|
+
::SSL_load_error_strings();
|
42
42
|
::OpenSSL_add_all_algorithms();
|
43
43
|
|
44
44
|
mutexes_.resize(::CRYPTO_num_locks());
|
@@ -124,7 +124,7 @@ private:
|
|
124
124
|
#endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
|
125
125
|
|
126
126
|
#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
|
127
|
-
static void openssl_locking_func(int mode, int n,
|
127
|
+
static void openssl_locking_func(int mode, int n,
|
128
128
|
const char* /*file*/, int /*line*/)
|
129
129
|
{
|
130
130
|
if (mode & CRYPTO_LOCK)
|
@@ -270,8 +270,9 @@ context::context(context::method m)
|
|
270
270
|
#endif // defined(SSL_TXT_TLSV1_2)
|
271
271
|
|
272
272
|
// TLS v1.3.
|
273
|
-
#if (OPENSSL_VERSION_NUMBER >= 0x10101000L) \
|
274
|
-
|
273
|
+
#if ((OPENSSL_VERSION_NUMBER >= 0x10101000L) \
|
274
|
+
&& !defined(LIBRESSL_VERSION_NUMBER)) \
|
275
|
+
|| defined(BOOST_ASIO_USE_WOLFSSL)
|
275
276
|
case context::tlsv13:
|
276
277
|
handle_ = ::SSL_CTX_new(::TLS_method());
|
277
278
|
if (handle_)
|
@@ -296,16 +297,18 @@ context::context(context::method m)
|
|
296
297
|
SSL_CTX_set_max_proto_version(handle_, TLS1_3_VERSION);
|
297
298
|
}
|
298
299
|
break;
|
299
|
-
#else // (OPENSSL_VERSION_NUMBER >= 0x10101000L)
|
300
|
-
//
|
300
|
+
#else // ((OPENSSL_VERSION_NUMBER >= 0x10101000L)
|
301
|
+
// && !defined(LIBRESSL_VERSION_NUMBER))
|
302
|
+
// || defined(BOOST_ASIO_USE_WOLFSSL)
|
301
303
|
case context::tlsv13:
|
302
304
|
case context::tlsv13_client:
|
303
305
|
case context::tlsv13_server:
|
304
306
|
boost::asio::detail::throw_error(
|
305
307
|
boost::asio::error::invalid_argument, "context");
|
306
308
|
break;
|
307
|
-
#endif // (OPENSSL_VERSION_NUMBER >= 0x10101000L)
|
308
|
-
//
|
309
|
+
#endif // ((OPENSSL_VERSION_NUMBER >= 0x10101000L)
|
310
|
+
// && !defined(LIBRESSL_VERSION_NUMBER))
|
311
|
+
// || defined(BOOST_ASIO_USE_WOLFSSL)
|
309
312
|
|
310
313
|
// Any supported SSL/TLS version.
|
311
314
|
case context::sslv23:
|
@@ -795,7 +798,7 @@ BOOST_ASIO_SYNC_OP_VOID context::use_certificate_chain(
|
|
795
798
|
BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
|
796
799
|
}
|
797
800
|
}
|
798
|
-
|
801
|
+
|
799
802
|
result = ::ERR_peek_last_error();
|
800
803
|
if ((ERR_GET_LIB(result) == ERR_LIB_PEM)
|
801
804
|
&& (ERR_GET_REASON(result) == PEM_R_NO_START_LINE))
|
@@ -482,7 +482,7 @@ public:
|
|
482
482
|
* Regardless of whether the asynchronous operation completes immediately or
|
483
483
|
* not, the completion handler will not be invoked from within this function.
|
484
484
|
* On immediate completion, invocation of the handler will be performed in a
|
485
|
-
* manner equivalent to using boost::asio::
|
485
|
+
* manner equivalent to using boost::asio::async_immediate().
|
486
486
|
*
|
487
487
|
* @par Completion Signature
|
488
488
|
* @code void(boost::system::error_code) @endcode
|
@@ -539,7 +539,7 @@ public:
|
|
539
539
|
* Regardless of whether the asynchronous operation completes immediately or
|
540
540
|
* not, the completion handler will not be invoked from within this function.
|
541
541
|
* On immediate completion, invocation of the handler will be performed in a
|
542
|
-
* manner equivalent to using boost::asio::
|
542
|
+
* manner equivalent to using boost::asio::async_immediate().
|
543
543
|
*
|
544
544
|
* @par Completion Signature
|
545
545
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -619,7 +619,7 @@ public:
|
|
619
619
|
* Regardless of whether the asynchronous operation completes immediately or
|
620
620
|
* not, the completion handler will not be invoked from within this function.
|
621
621
|
* On immediate completion, invocation of the handler will be performed in a
|
622
|
-
* manner equivalent to using boost::asio::
|
622
|
+
* manner equivalent to using boost::asio::async_immediate().
|
623
623
|
*
|
624
624
|
* @par Completion Signature
|
625
625
|
* @code void(boost::system::error_code) @endcode
|
@@ -723,7 +723,7 @@ public:
|
|
723
723
|
* Regardless of whether the asynchronous operation completes immediately or
|
724
724
|
* not, the completion handler will not be invoked from within this function.
|
725
725
|
* On immediate completion, invocation of the handler will be performed in a
|
726
|
-
* manner equivalent to using boost::asio::
|
726
|
+
* manner equivalent to using boost::asio::async_immediate().
|
727
727
|
*
|
728
728
|
* @par Completion Signature
|
729
729
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -831,7 +831,7 @@ public:
|
|
831
831
|
* Regardless of whether the asynchronous operation completes immediately or
|
832
832
|
* not, the completion handler will not be invoked from within this function.
|
833
833
|
* On immediate completion, invocation of the handler will be performed in a
|
834
|
-
* manner equivalent to using boost::asio::
|
834
|
+
* manner equivalent to using boost::asio::async_immediate().
|
835
835
|
*
|
836
836
|
* @par Completion Signature
|
837
837
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -33,7 +33,7 @@ struct executor_t
|
|
33
33
|
};
|
34
34
|
|
35
35
|
/// Awaitable object that returns the executor of the current coroutine.
|
36
|
-
constexpr executor_t executor;
|
36
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr executor_t executor;
|
37
37
|
|
38
38
|
/// Awaitable type that returns the cancellation state of the current coroutine.
|
39
39
|
struct cancellation_state_t
|
@@ -58,7 +58,7 @@ struct cancellation_state_t
|
|
58
58
|
* // ...
|
59
59
|
* } @endcode
|
60
60
|
*/
|
61
|
-
constexpr cancellation_state_t cancellation_state;
|
61
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr cancellation_state_t cancellation_state;
|
62
62
|
|
63
63
|
#if defined(GENERATING_DOCUMENTATION)
|
64
64
|
|
@@ -146,9 +146,9 @@ struct use_awaitable_t
|
|
146
146
|
* See the documentation for boost::asio::use_awaitable_t for a usage example.
|
147
147
|
*/
|
148
148
|
#if defined(GENERATING_DOCUMENTATION)
|
149
|
-
constexpr use_awaitable_t<> use_awaitable;
|
149
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr use_awaitable_t<> use_awaitable;
|
150
150
|
#else
|
151
|
-
constexpr use_awaitable_t<> use_awaitable(0, 0, 0);
|
151
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr use_awaitable_t<> use_awaitable(0, 0, 0);
|
152
152
|
#endif
|
153
153
|
|
154
154
|
} // namespace asio
|
@@ -146,7 +146,7 @@ private:
|
|
146
146
|
/**
|
147
147
|
* See the documentation for boost::asio::use_future_t for a usage example.
|
148
148
|
*/
|
149
|
-
constexpr use_future_t<> use_future;
|
149
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr use_future_t<> use_future;
|
150
150
|
|
151
151
|
} // namespace asio
|
152
152
|
} // namespace boost
|
@@ -46,7 +46,7 @@ struct executor_arg_t
|
|
46
46
|
* See boost::asio::executor_arg_t and boost::asio::uses_executor
|
47
47
|
* for more information.
|
48
48
|
*/
|
49
|
-
constexpr executor_arg_t executor_arg;
|
49
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr executor_arg_t executor_arg;
|
50
50
|
|
51
51
|
/// The uses_executor trait detects whether a type T has an associated executor
|
52
52
|
/// that is convertible from type Executor.
|
@@ -18,6 +18,6 @@
|
|
18
18
|
// BOOST_ASIO_VERSION % 100 is the sub-minor version
|
19
19
|
// BOOST_ASIO_VERSION / 100 % 1000 is the minor version
|
20
20
|
// BOOST_ASIO_VERSION / 100000 is the major version
|
21
|
-
#define BOOST_ASIO_VERSION
|
21
|
+
#define BOOST_ASIO_VERSION 103200 // 1.32.0
|
22
22
|
|
23
23
|
#endif // BOOST_ASIO_VERSION_HPP
|