From 584b6ea3036076d5960be51d980c10eef9120fe1 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 26 Nov 2014 07:51:24 +1100 Subject: [PATCH] Fixed a bug in deserializePacket() --- common/network/serial_utility.cpp | 2 +- server/server_logic.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/common/network/serial_utility.cpp b/common/network/serial_utility.cpp index 086e6a7..d440eb8 100644 --- a/common/network/serial_utility.cpp +++ b/common/network/serial_utility.cpp @@ -95,7 +95,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) { SerialPacketType type; memcpy(&type, buffer, sizeof(SerialPacketType)); - switch(packet->type) { + switch(type) { case SerialPacketType::PING: case SerialPacketType::PONG: case SerialPacketType::BROADCAST_REQUEST: diff --git a/server/server_logic.cpp b/server/server_logic.cpp index df12171..5bc30e2 100644 --- a/server/server_logic.cpp +++ b/server/server_logic.cpp @@ -163,10 +163,18 @@ void ServerApplication::Init(int argc, char* argv[]) { void ServerApplication::Proc() { SerialPacket* packetBuffer = reinterpret_cast(new char[MAX_PACKET_SIZE]); + memset(packetBuffer, 0, MAX_PACKET_SIZE); //zero the buffer + while(running) { //suck in the waiting packets & process them while(UDPNetworkUtility::GetSingleton().Receive(packetBuffer)) { - HandlePacket(packetBuffer); + try { + HandlePacket(packetBuffer); + } + catch(std::exception& e) { + std::cerr << "HandlePacket Error: " << e.what() << std::endl; + } + memset(packetBuffer, 0, MAX_PACKET_SIZE); //reset the buffer } //update the internals //...