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