about summary refs log tree commit diff
path: root/src/engine/server/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/server/server.cpp')
-rw-r--r--src/engine/server/server.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 96071ceb..620599c8 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1078,6 +1078,7 @@ int CServer::Run()
 					m_CurrentGameTick = 0;
 					Kernel()->ReregisterInterface(GameServer());
 					GameServer()->OnInit();
+					UpdateServerInfo();
 				}
 				else
 				{
@@ -1209,10 +1210,20 @@ void CServer::ConBan(IConsole::IResult *pResult, void *pUser)
 void CServer::ConUnban(IConsole::IResult *pResult, void *pUser)
 {
 	NETADDR Addr;
+	CServer *pServer = (CServer *)pUser;
 	const char *pStr = pResult->GetString(0);
 	
 	if(net_addr_from_str(&Addr, pStr) == 0)
-		((CServer *)pUser)->BanRemove(Addr);
+		pServer->BanRemove(Addr);
+	else if(StrAllnum(pStr))
+	{
+		int BanIndex = str_toint(pStr);
+		CNetServer::CBanInfo Info;
+		if(BanIndex < 0 || !pServer->m_NetServer.BanGet(BanIndex, &Info))
+			dbg_msg("server", "invalid ban index");
+		else
+			pServer->BanRemove(Info.m_Addr);
+	}
 	else
 		dbg_msg("server", "invalid network address");
 }