about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/server/server.cpp2
-rw-r--r--src/engine/shared/econ.cpp8
-rw-r--r--src/engine/shared/econ.h1
-rw-r--r--src/engine/shared/network_console.cpp9
4 files changed, 19 insertions, 1 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 55208caa..2d288740 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1331,6 +1331,8 @@ int CServer::Run()
 	{
 		if(m_aClients[i].m_State != CClient::STATE_EMPTY)
 			m_NetServer.Drop(i, "Server shutdown");
+
+		m_Econ.Shutdown();
 	}
 
 	GameServer()->OnShutdown();
diff --git a/src/engine/shared/econ.cpp b/src/engine/shared/econ.cpp
index ba86e5c0..0bc3a988 100644
--- a/src/engine/shared/econ.cpp
+++ b/src/engine/shared/econ.cpp
@@ -145,3 +145,11 @@ void CEcon::Send(int ClientID, const char *pLine)
 	else if(ClientID >= 0 && ClientID < NET_MAX_CONSOLE_CLIENTS && m_aClients[ClientID].m_State == CClient::STATE_AUTHED)
 		m_NetConsole.Send(ClientID, pLine);
 }
+
+void CEcon::Shutdown()
+{
+	if(!m_Ready)
+		return;
+
+	m_NetConsole.Close();
+}
diff --git a/src/engine/shared/econ.h b/src/engine/shared/econ.h
index 33b23ea6..3ec19e28 100644
--- a/src/engine/shared/econ.h
+++ b/src/engine/shared/econ.h
@@ -38,6 +38,7 @@ public:
 	void Init(IConsole *pConsole);
 	void Update();
 	void Send(int ClientID, const char *pLine);
+	void Shutdown();
 };
 
 #endif
diff --git a/src/engine/shared/network_console.cpp b/src/engine/shared/network_console.cpp
index 0cf2a718..f77e40f2 100644
--- a/src/engine/shared/network_console.cpp
+++ b/src/engine/shared/network_console.cpp
@@ -7,6 +7,9 @@ bool CNetConsole::Open(NETADDR BindAddr, int Flags)
 {
 	// zero out the whole structure
 	mem_zero(this, sizeof(*this));
+	m_Socket.type = NETTYPE_INVALID;
+	m_Socket.ipv4sock = -1;
+	m_Socket.ipv6sock = -1;
 
 	// open socket
 	m_Socket = net_tcp_create(BindAddr);
@@ -31,7 +34,11 @@ void CNetConsole::SetCallbacks(NETFUNC_NEWCLIENT pfnNewClient, NETFUNC_DELCLIENT
 
 int CNetConsole::Close()
 {
-	// TODO: implement me
+	for(int i = 0; i < NET_MAX_CONSOLE_CLIENTS; i++)
+		m_aSlots[i].m_Connection.Disconnect("closing console");
+
+	net_tcp_close(m_Socket);
+
 	return 0;
 }