don't cache disconnected sockets
Some checks failed
BlockStorage/repertory_mac/pipeline/head There was a failure building this commit
BlockStorage/repertory/pipeline/head This commit looks good

This commit is contained in:
2025-08-04 10:59:03 -05:00
parent c91e51a445
commit ccb56485d8

View File

@@ -71,6 +71,7 @@ void packet_client::connect(client &cli) {
boost::asio::connect(cli.socket, resolve_results_); boost::asio::connect(cli.socket, resolve_results_);
cli.socket.set_option(boost::asio::ip::tcp::no_delay(true)); 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::linger(false, 0));
cli.socket.set_option(boost::asio::socket_base::keep_alive(true));
packet response; packet response;
auto res = read_packet(cli, response); auto res = read_packet(cli, response);
@@ -103,7 +104,11 @@ auto packet_client::get_client() -> std::shared_ptr<packet_client::client> {
} }
void packet_client::put_client(std::shared_ptr<client> &cli) { void packet_client::put_client(std::shared_ptr<client> &cli) {
mutex_lock clientsLock(clients_mutex_); if (not cli->socket.is_open()) {
return;
}
mutex_lock clients_lock(clients_mutex_);
if (clients_.size() < cfg_.max_connections) { if (clients_.size() < cfg_.max_connections) {
clients_.emplace_back(cli); clients_.emplace_back(cli);
} }