diff --git a/src/net/clientthread.h b/src/net/clientthread.h index 71dc7845..87dcf3a8 100644 --- a/src/net/clientthread.h +++ b/src/net/clientthread.h @@ -85,9 +85,7 @@ public: void SendReportAvatar(unsigned reportedPlayerId, const std::string &avatarHash); void StartAsyncRead(); - virtual void CloseSession(boost::shared_ptr /*session*/) { - // TODO - } + virtual void CloseSession(boost::shared_ptr session); virtual void HandlePacket(boost::shared_ptr session, boost::shared_ptr packet); void SelectServer(unsigned serverId); diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index 79f8a6fb..0e70000b 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -365,6 +365,12 @@ ClientThread::StartAsyncRead() GetContext().GetSessionData()->GetReceiveBuffer().StartAsyncRead(GetContext().GetSessionData()); } +void +ClientThread::CloseSession(boost::shared_ptr session) +{ + throw NetException(__FILE__, __LINE__, ERR_SOCK_CONN_RESET, 0); +} + void ClientThread::HandlePacket(boost::shared_ptr /*session*/, boost::shared_ptr packet) { diff --git a/src/net/common/receivebuffer.cpp b/src/net/common/receivebuffer.cpp index 34c499ac..29de7ff3 100644 --- a/src/net/common/receivebuffer.cpp +++ b/src/net/common/receivebuffer.cpp @@ -23,7 +23,6 @@ #include #include #include -#include #include using namespace std; @@ -68,6 +67,7 @@ ReceiveBuffer::HandleRead(boost::shared_ptr session, const boost::s } } catch (const exception &e) { LOG_ERROR("Session " << session->GetId() << " - unhandled exception in HandleRead: " << e.what()); + throw; } } } @@ -109,13 +109,7 @@ ReceiveBuffer::ProcessPackets(boost::shared_ptr session) while (!receivedPackets.empty()) { boost::shared_ptr p = receivedPackets.front(); receivedPackets.pop_front(); - // We need to catch specific exceptions, so that they do not affect the server. - try { - session->HandlePacket(p); - } catch (const PokerTHException &e) { - LOG_ERROR("Session " << session->GetId() << " - Read handler exception: " << e.what()); - // TODO add error handling, close session. - } + session->HandlePacket(p); } if (recvBufUsed >= RECV_BUF_SIZE) { LOG_ERROR("Session " << session->GetId() << " - Receive buf full: " << recvBufUsed);