diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-03-15 18:24:39 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-03-15 18:24:39 +0300 |
commit | 77afc97b4d6e4caace275d8bc21a94525ad070e2 (patch) | |
tree | 2c31833c1ecb84effd209aa3c568f2d2b3a175c2 /src | |
parent | e45a51342495eccdb8280f1f1a7963c7b78f4772 (diff) | |
download | manaplus-77afc97b4d6e4caace275d8bc21a94525ad070e2.tar.gz manaplus-77afc97b4d6e4caace275d8bc21a94525ad070e2.tar.bz2 manaplus-77afc97b4d6e4caace275d8bc21a94525ad070e2.tar.xz manaplus-77afc97b4d6e4caace275d8bc21a94525ad070e2.zip |
Show info about wrong packet size in chat if enabled show unimplimentaed packets.
Diffstat (limited to 'src')
-rw-r--r-- | src/logger.cpp | 16 | ||||
-rw-r--r-- | src/logger.h | 7 | ||||
-rw-r--r-- | src/net/messagein.cpp | 1 |
3 files changed, 24 insertions, 0 deletions
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<std::string> 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 |