diff options
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/messagein.cpp | 11 | ||||
-rw-r--r-- | src/net/eathena/messagein.h | 3 | ||||
-rw-r--r-- | src/net/eathena/network.cpp | 5 |
3 files changed, 16 insertions, 3 deletions
diff --git a/src/net/eathena/messagein.cpp b/src/net/eathena/messagein.cpp index 3a71e0c76..7b21b7485 100644 --- a/src/net/eathena/messagein.cpp +++ b/src/net/eathena/messagein.cpp @@ -40,12 +40,21 @@ MessageIn::MessageIn(const char *const data, { } -void MessageIn::postInit(const char *const str) +void MessageIn::postInit(const char *const str, + const unsigned int version) { // Read the message ID mId = readId(); + mVersion = version; IGNOREDEBUGLOG; DEBUGLOG2("Receive packet", 0, "MessageIn"); +#ifdef ENABLEDEBUGLOG + if (mVersion > 0) + { + const std::string verStr = toString(mVersion); + DEBUGLOG2("Version", 0, verStr.c_str()); + } +#endif readInt16(str); } diff --git a/src/net/eathena/messagein.h b/src/net/eathena/messagein.h index da5f57d7d..5ba13ea9c 100644 --- a/src/net/eathena/messagein.h +++ b/src/net/eathena/messagein.h @@ -46,7 +46,8 @@ class MessageIn final : public Net::MessageIn A_DELETE_COPY(MessageIn) - void postInit(const char *const str); + void postInit(const char *const str, + const unsigned int version); /**< Reads a short. */ int16_t readInt16(const char *const str) override final; diff --git a/src/net/eathena/network.cpp b/src/net/eathena/network.cpp index fc0cd3837..96bebd320 100644 --- a/src/net/eathena/network.cpp +++ b/src/net/eathena/network.cpp @@ -134,7 +134,10 @@ void Network::dispatchMessages() len = readWord(2); MessageIn msg(mInBuffer, len); - msg.postInit(mPackets[msgId].name); + unsigned int ver = mPackets[msgId].version; + if (ver == 0) + ver = packetVersion; + msg.postInit(mPackets[msgId].name, ver); SDL_mutexV(mMutexIn); if (len == 0) |