diff --git a/repertory/librepertory/include/comm/packet/common.hpp b/repertory/librepertory/include/comm/packet/common.hpp index 06f4b5d2..a0507969 100644 --- a/repertory/librepertory/include/comm/packet/common.hpp +++ b/repertory/librepertory/include/comm/packet/common.hpp @@ -46,6 +46,8 @@ private: boost::asio::ip::tcp::socket &sock; }; +void apply_common_socket_properties(boost::asio::ip::tcp::socket &sock); + [[nodiscard]] auto is_socket_still_alive(boost::asio::ip::tcp::socket &sock) -> bool; diff --git a/repertory/librepertory/src/comm/packet/common.cpp b/repertory/librepertory/src/comm/packet/common.cpp index 1a4263b7..630a8d15 100644 --- a/repertory/librepertory/src/comm/packet/common.cpp +++ b/repertory/librepertory/src/comm/packet/common.cpp @@ -77,6 +77,12 @@ auto is_socket_still_alive(boost::asio::ip::tcp::socket &sock) -> bool { return false; } +void apply_common_socket_properties(boost::asio::ip::tcp::socket &sock) { + sock.set_option(boost::asio::ip::tcp::no_delay(true)); + sock.set_option(boost::asio::socket_base::linger(false, 0)); + sock.set_option(boost::asio::socket_base::keep_alive(true)); +} + template void run_with_deadline(boost::asio::io_context &io_ctx, boost::asio::ip::tcp::socket &sock, op_t &&operation, diff --git a/repertory/librepertory/src/comm/packet/packet_client.cpp b/repertory/librepertory/src/comm/packet/packet_client.cpp index aecd9a3c..ac37ac27 100644 --- a/repertory/librepertory/src/comm/packet/packet_client.cpp +++ b/repertory/librepertory/src/comm/packet/packet_client.cpp @@ -89,9 +89,7 @@ auto packet_client::check_version(std::uint32_t client_version, connect_with_deadline(ctx, cli.socket, resolve_results, std::chrono::milliseconds(cfg_.conn_timeout_ms)); - cli.socket.set_option(boost::asio::ip::tcp::no_delay(true)); - cli.socket.set_option(boost::asio::socket_base::linger(false, 0)); - cli.socket.set_option(boost::asio::socket_base::keep_alive(true)); + comm::apply_common_socket_properties(cli.socket); if (not handshake(cli, ctx, min_version)) { return api_error::comm_error; diff --git a/repertory/librepertory/src/comm/packet/packet_server.cpp b/repertory/librepertory/src/comm/packet/packet_server.cpp index 5ff79102..60e5e16a 100644 --- a/repertory/librepertory/src/comm/packet/packet_server.cpp +++ b/repertory/librepertory/src/comm/packet/packet_server.cpp @@ -232,9 +232,7 @@ void packet_server::on_accept(std::shared_ptr conn, return; } - conn->socket.set_option(boost::asio::ip::tcp::no_delay(true)); - conn->socket.set_option(boost::asio::socket_base::linger(false, 0)); - conn->socket.set_option(boost::asio::socket_base::keep_alive(true)); + comm::apply_common_socket_properties(conn->socket); boost::asio::dispatch(conn->socket.get_executor(), [this, conn]() { if (not handshake(conn)) {