forked from boostorg/mqtt5
Open and set socket options on the lowest layer before initiating connect_op
Summary: related to T13767 Reviewers: ivica Reviewed By: ivica Subscribers: miljen, iljazovic Differential Revision: https://repo.mireo.local/D28111
This commit is contained in:
@ -90,9 +90,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void open() {
|
void open() {
|
||||||
error_code ec;
|
open_lowest_layer(_stream_ptr);
|
||||||
lowest_layer(*_stream_ptr).open(asio::ip::tcp::v4(), ec);
|
|
||||||
lowest_layer(*_stream_ptr).set_option(asio::ip::tcp::no_delay(true), ec);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cancel() {
|
void cancel() {
|
||||||
@ -155,6 +153,14 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static void open_lowest_layer(stream_ptr sptr) {
|
||||||
|
error_code ec;
|
||||||
|
auto& layer = lowest_layer(*sptr);
|
||||||
|
layer.open(asio::ip::tcp::v4(), ec);
|
||||||
|
layer.set_option(asio::socket_base::reuse_address(true), ec);
|
||||||
|
layer.set_option(asio::ip::tcp::no_delay(true), ec);
|
||||||
|
}
|
||||||
|
|
||||||
stream_ptr construct_next_layer() const {
|
stream_ptr construct_next_layer() const {
|
||||||
stream_ptr sptr;
|
stream_ptr sptr;
|
||||||
if constexpr (has_tls_context<StreamContext>)
|
if constexpr (has_tls_context<StreamContext>)
|
||||||
@ -164,11 +170,12 @@ private:
|
|||||||
else
|
else
|
||||||
sptr = std::make_shared<stream_type>(_stream_executor);
|
sptr = std::make_shared<stream_type>(_stream_executor);
|
||||||
|
|
||||||
error_code ec;
|
return sptr;
|
||||||
lowest_layer(*sptr).set_option(
|
}
|
||||||
asio::socket_base::reuse_address(true), ec
|
|
||||||
);
|
|
||||||
|
|
||||||
|
stream_ptr construct_and_open_next_layer() const {
|
||||||
|
auto sptr = construct_next_layer();
|
||||||
|
open_lowest_layer(sptr);
|
||||||
return sptr;
|
return sptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ public:
|
|||||||
if (ec == asio::error::host_not_found)
|
if (ec == asio::error::host_not_found)
|
||||||
return complete(asio::error::no_recovery);
|
return complete(asio::error::no_recovery);
|
||||||
|
|
||||||
auto sptr = _owner.construct_next_layer();
|
auto sptr = _owner.construct_and_open_next_layer();
|
||||||
|
|
||||||
if constexpr (has_tls_context<typename Owner::stream_context_type>)
|
if constexpr (has_tls_context<typename Owner::stream_context_type>)
|
||||||
setup_tls_sni(
|
setup_tls_sni(
|
||||||
|
Reference in New Issue
Block a user