From 9bf9aea7f2ef3e910ac2eb151330576b8733e90e Mon Sep 17 00:00:00 2001 From: lotodore Date: Fri, 3 Sep 2010 21:40:14 +0000 Subject: [PATCH] Do not perform denial of service check in LAN games. --- src/net/common/serverlobbythread.cpp | 26 +++++++++++++++----------- src/net/serverlobbythread.h | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index d844fcac..23cb4a6b 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -989,18 +989,22 @@ ServerLobbyThread::HandleNetPacketInit(SessionWrapper session, const InitMessage // Before any other processing, perform some denial of service and // brute force attack prevention by checking whether the user recently sent an // Init packet. - bool recentlySentInit = false; + // This check is not performed on LAN servers. + if (m_mode != SERVER_MODE_LAN) { - boost::mutex::scoped_lock lock(m_timerClientAddressMapMutex); - if (m_timerClientAddressMap.find(session.sessionData->GetClientAddr()) != m_timerClientAddressMap.end()) - recentlySentInit = true; - else - m_timerClientAddressMap[session.sessionData->GetClientAddr()] = boost::timers::portable::microsec_timer(); - } - if (recentlySentInit) - { - SessionError(session, ERR_NET_INIT_BLOCKED); - return; + bool recentlySentInit = false; + { + boost::mutex::scoped_lock lock(m_timerClientAddressMapMutex); + if (m_timerClientAddressMap.find(session.sessionData->GetClientAddr()) != m_timerClientAddressMap.end()) + recentlySentInit = true; + else + m_timerClientAddressMap[session.sessionData->GetClientAddr()] = boost::timers::portable::microsec_timer(); + } + if (recentlySentInit) + { + SessionError(session, ERR_NET_INIT_BLOCKED); + return; + } } // Check the protocol version. diff --git a/src/net/serverlobbythread.h b/src/net/serverlobbythread.h index 22ea1574..760454cb 100644 --- a/src/net/serverlobbythread.h +++ b/src/net/serverlobbythread.h @@ -223,7 +223,7 @@ private: ServerIrcBotCallback &m_ircBotCb; AvatarManager &m_avatarManager; - ServerMode m_mode; + const ServerMode m_mode; std::string m_statisticsFileName; ConfigFile *m_serverConfig; u_int32_t m_curGameId;