Fixed server_manager to remove server connection from connection map

This commit is contained in:
Pauli Nieminen 2008-06-30 10:43:51 +00:00
parent e227bde107
commit 34a8afecb0
2 changed files with 8 additions and 5 deletions

View File

@ -273,11 +273,12 @@ void set_raw_data_only()
network_worker_pool::set_raw_data_only();
}
server_manager::server_manager(int port, CREATE_SERVER create_server) : free_(false)
server_manager::server_manager(int port, CREATE_SERVER create_server) : free_(false), connection_(0)
{
if(create_server != NO_SERVER && !server_socket) {
try {
server_socket = get_socket(connect("",port));
connection_ = connect("",port);
server_socket = get_socket(connection_);
} catch(network::error& e) {
if(create_server == MUST_CREATE_SERVER) {
throw e;
@ -300,6 +301,7 @@ void server_manager::stop()
{
if(free_) {
SDLNet_TCP_Close(server_socket);
remove_connection(connection_);
server_socket = 0;
free_ = false;
}

View File

@ -65,6 +65,9 @@ private:
void set_raw_data_only();
typedef int connection;
connection const null_connection = 0;
//! A server manager causes listening on a given port
//! to occur for the duration of its lifetime.
struct server_manager {
@ -83,11 +86,9 @@ struct server_manager {
private:
bool free_;
connection connection_;
};
typedef int connection;
connection const null_connection = 0;
//! The number of peers we are connected to.
size_t nconnections();