don't cache disconnected sockets
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user