diff --git a/repertory/librepertory/src/rpc/server/server.cpp b/repertory/librepertory/src/rpc/server/server.cpp index 694c80a3..08ce3f10 100644 --- a/repertory/librepertory/src/rpc/server/server.cpp +++ b/repertory/librepertory/src/rpc/server/server.cpp @@ -144,13 +144,17 @@ void server::start() { initialize(*server_); server_thread_ = std::make_unique([this]() { -#ifdef _WIN32 server_->set_socket_options([](auto &&sock) { - int enable = 1; +#if defined(_WIN32) + int enable{1}; setsockopt(sock, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, reinterpret_cast(&enable), sizeof(enable)); +#else // !defined(_WIN32) + linger opt{1, 0}; + setsockopt(sock, SOL_SOCKET, SO_LINGER, + reinterpret_cast(&opt), sizeof(opt)); +#endif // defined(_WIN32) }); -#endif // _WIN32 server_->listen("127.0.0.1", config_.get_api_port()); }); diff --git a/repertory/repertory/src/ui/handlers.cpp b/repertory/repertory/src/ui/handlers.cpp index 2abfbaa6..21e8e64b 100644 --- a/repertory/repertory/src/ui/handlers.cpp +++ b/repertory/repertory/src/ui/handlers.cpp @@ -109,13 +109,17 @@ handlers::handlers(mgmt_app_config *config, httplib::Server *server) server_(server) { REPERTORY_USES_FUNCTION_NAME(); -#ifdef _WIN32 server_->set_socket_options([](auto &&sock) { - int enable = 1; +#if defined(_WIN32) + int enable{1}; setsockopt(sock, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, reinterpret_cast(&enable), sizeof(enable)); +#else // !defined(_WIN32) + linger opt{1, 0}; + setsockopt(sock, SOL_SOCKET, SO_LINGER, + reinterpret_cast(&opt), sizeof(opt)); +#endif // defined(_WIN32) }); -#endif // _WIN32 server_->set_pre_routing_handler( [this](const httplib::Request &req, diff --git a/support/src/utils/common.cpp b/support/src/utils/common.cpp index b6f6862a..816304f3 100644 --- a/support/src/utils/common.cpp +++ b/support/src/utils/common.cpp @@ -25,8 +25,8 @@ #include "utils/string.hpp" namespace repertory::utils { -auto compare_version_strings(std::string version1, - std::string version2) -> std::int32_t { +auto compare_version_strings(std::string version1, std::string version2) + -> std::int32_t { if (utils::string::contains(version1, "-")) { version1 = utils::string::split(version1, '-', true)[0U]; @@ -157,7 +157,7 @@ auto get_next_available_port(std::uint16_t first_port, ++check_port; continue; } - + acceptor.set_option(boost::asio::ip::tcp::acceptor::linger(true, 0)); acceptor.bind({tcp::v4(), static_cast(check_port)}, error_code); if (error_code) {