From 77afc97b4d6e4caace275d8bc21a94525ad070e2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 15 Mar 2016 18:24:39 +0300 Subject: Show info about wrong packet size in chat if enabled show unimplimentaed packets. --- src/logger.cpp | 16 ++++++++++++++++ src/logger.h | 7 +++++++ src/net/messagein.cpp | 1 + 3 files changed, 24 insertions(+) (limited to 'src') diff --git a/src/logger.cpp b/src/logger.cpp index 71f26fe25..c2538803d 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -404,3 +404,19 @@ void Logger::unimplimented(const int id, DebugMessageListener::distributeEvent(str); log(str); } + +void Logger::unimplimented(const uint32_t id, + const uint32_t id2, + const uint32_t id3) +{ + if (!mReportUnimplimented) + return; + + const std::string str = strprintf( + "Wrong actual or planned inbound packet size!. " + "Packet id: %u, Planned size: %u, Actual size: %u", + id, + id2, + id3); + DebugMessageListener::distributeEvent(str); +} diff --git a/src/logger.h b/src/logger.h index 98cf2186a..19cf69ddb 100644 --- a/src/logger.h +++ b/src/logger.h @@ -56,6 +56,9 @@ #define UNIMPLIMENTEDPACKETFIELD(field) \ logger->unimplimented(msg.getId(), field) +#define WRONGPACKETSIZE \ + logger->unimplimented(CAST_U32(mId), mLength, mPos) + /** * The Log Class : Useful to write debug or info messages */ @@ -180,6 +183,10 @@ class Logger final void unimplimented(const int id, const int id2); + void unimplimented(const uint32_t id, + const uint32_t id2, + const uint32_t id3); + private: std::ofstream mLogFile; std::vector mDelayedLog; diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index f012a5e2c..db0318a4d 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -60,6 +60,7 @@ MessageIn::~MessageIn() CAST_U32(mId)); logger->log(" planned size: %u", mLength); logger->log(" read size: %u", mPos); + WRONGPACKETSIZE; } } else -- cgit v1.2.3-70-g09d2