summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-03-10 16:36:52 +0300
committerAndrei Karas <akaras@inbox.ru>2016-03-10 16:36:52 +0300
commitb3f38fd1cac82b68fb057db5cf6c6e80e0cdfd90 (patch)
tree07a2236398d464bc81ed38beb2e1b675a92fcdf6 /src
parent3131f766339fa58875bce8257f6127136c217a30 (diff)
downloadmv-b3f38fd1cac82b68fb057db5cf6c6e80e0cdfd90.tar.gz
mv-b3f38fd1cac82b68fb057db5cf6c6e80e0cdfd90.tar.bz2
mv-b3f38fd1cac82b68fb057db5cf6c6e80e0cdfd90.tar.xz
mv-b3f38fd1cac82b68fb057db5cf6c6e80e0cdfd90.zip
For unknown packet field values show packet id and field value.
Diffstat (limited to 'src')
-rw-r--r--src/logger.cpp18
-rw-r--r--src/logger.h6
-rw-r--r--src/net/ea/beingrecv.cpp2
-rw-r--r--src/net/ea/chatrecv.cpp2
-rw-r--r--src/net/ea/npcrecv.cpp2
-rw-r--r--src/net/ea/partyrecv.cpp4
-rw-r--r--src/net/ea/playerrecv.cpp2
-rw-r--r--src/net/eathena/beingrecv.cpp14
-rw-r--r--src/net/eathena/chatrecv.cpp12
-rw-r--r--src/net/eathena/inventoryrecv.cpp4
-rw-r--r--src/net/eathena/loginrecv.cpp2
-rw-r--r--src/net/eathena/mailrecv.cpp12
-rw-r--r--src/net/eathena/playerhandler.cpp2
-rw-r--r--src/net/eathena/playerrecv.cpp2
-rw-r--r--src/net/eathena/skillrecv.cpp2
-rw-r--r--src/net/eathena/traderecv.cpp2
-rw-r--r--src/net/tmwa/beingrecv.cpp4
-rw-r--r--src/net/tmwa/inventoryrecv.cpp2
-rw-r--r--src/net/tmwa/playerhandler.cpp3
-rw-r--r--src/net/tmwa/skillrecv.cpp6
-rw-r--r--src/net/tmwa/traderecv.cpp2
21 files changed, 64 insertions, 41 deletions
diff --git a/src/logger.cpp b/src/logger.cpp
index 5b8b7819b..71f26fe25 100644
--- a/src/logger.cpp
+++ b/src/logger.cpp
@@ -384,7 +384,23 @@ void Logger::unimplimented(const int id)
return;
const std::string str = strprintf("Unimplimented packet: %d (0x%x)",
- id, CAST_U32(id));
+ id,
+ CAST_U32(id));
+ DebugMessageListener::distributeEvent(str);
+ log(str);
+}
+
+void Logger::unimplimented(const int id,
+ const int id2)
+{
+ if (!mReportUnimplimented)
+ return;
+
+ const std::string str = strprintf(
+ "Unimplimented field value %d for packet %d (0x%x)",
+ id2,
+ id,
+ CAST_U32(id));
DebugMessageListener::distributeEvent(str);
log(str);
}
diff --git a/src/logger.h b/src/logger.h
index 51966b5e5..98cf2186a 100644
--- a/src/logger.h
+++ b/src/logger.h
@@ -53,6 +53,9 @@
#define UNIMPLIMENTEDPACKET \
logger->unimplimented(msg.getId())
+#define UNIMPLIMENTEDPACKETFIELD(field) \
+ logger->unimplimented(msg.getId(), field)
+
/**
* The Log Class : Useful to write debug or info messages
*/
@@ -174,6 +177,9 @@ class Logger final
void unimplimented(const int id);
+ void unimplimented(const int id,
+ const int id2);
+
private:
std::ofstream mLogFile;
std::vector<std::string> mDelayedLog;
diff --git a/src/net/ea/beingrecv.cpp b/src/net/ea/beingrecv.cpp
index 364236a08..aa84b0143 100644
--- a/src/net/ea/beingrecv.cpp
+++ b/src/net/ea/beingrecv.cpp
@@ -261,7 +261,7 @@ void BeingRecv::processBeingAction(Net::MessageIn &msg)
case AttackType::TOUCH_SKILL:
case AttackType::MISS:
case AttackType::SKILLMISS:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(CAST_S32(type));
break;
}
BLOCK_END("BeingRecv::processBeingAction")
diff --git a/src/net/ea/chatrecv.cpp b/src/net/ea/chatrecv.cpp
index 9a49e6f94..4e4695cf6 100644
--- a/src/net/ea/chatrecv.cpp
+++ b/src/net/ea/chatrecv.cpp
@@ -117,7 +117,7 @@ void ChatRecv::processWhisperResponseContinue(Net::MessageIn &msg,
}
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
BLOCK_END("ChatRecv::processWhisperResponse")
diff --git a/src/net/ea/npcrecv.cpp b/src/net/ea/npcrecv.cpp
index 89bacfd2d..ad3a6da10 100644
--- a/src/net/ea/npcrecv.cpp
+++ b/src/net/ea/npcrecv.cpp
@@ -212,7 +212,7 @@ void NpcRecv::processNpcCommand(Net::MessageIn &msg)
break;
}
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(cmd);
break;
}
}
diff --git a/src/net/ea/partyrecv.cpp b/src/net/ea/partyrecv.cpp
index c3c87c145..6d7146ab5 100644
--- a/src/net/ea/partyrecv.cpp
+++ b/src/net/ea/partyrecv.cpp
@@ -86,7 +86,7 @@ void PartyRecv::processPartySettingsContinue(Net::MessageIn &msg,
break;
default:
case PartyShare::UNKNOWN:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(CAST_S32(exp));
break;
}
@@ -112,7 +112,7 @@ void PartyRecv::processPartySettingsContinue(Net::MessageIn &msg,
break;
default:
case PartyShare::UNKNOWN:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(CAST_S32(item));
break;
}
}
diff --git a/src/net/ea/playerrecv.cpp b/src/net/ea/playerrecv.cpp
index a739ece3a..466c73063 100644
--- a/src/net/ea/playerrecv.cpp
+++ b/src/net/ea/playerrecv.cpp
@@ -209,7 +209,7 @@ void PlayerRecv::processPlayerArrowMessage(Net::MessageIn &msg)
// arrows equiped
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
BLOCK_END("PlayerRecv::processPlayerArrowMessage")
diff --git a/src/net/eathena/beingrecv.cpp b/src/net/eathena/beingrecv.cpp
index 060ac2724..c5c7acfcc 100644
--- a/src/net/eathena/beingrecv.cpp
+++ b/src/net/eathena/beingrecv.cpp
@@ -253,7 +253,7 @@ void BeingRecv::processBeingChangeLookContinue(const Net::MessageIn &msg,
localPlayer->imitateOutfit(dstBeing, SPRITE_EVOL6);
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
}
@@ -783,7 +783,7 @@ void BeingRecv::processMapType(Net::MessageIn &msg)
if (type == 19)
NotifyManager::notify(NotifyTypes::MAP_TYPE_BATTLEFIELD);
else
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
}
void BeingRecv::processSkillCasting(Net::MessageIn &msg)
@@ -802,7 +802,7 @@ void BeingRecv::processSkillCasting(Net::MessageIn &msg)
if (srcId == BeingId_zero)
{
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(0);
return;
}
else if (dstId != BeingId_zero)
@@ -1010,7 +1010,7 @@ void BeingRecv::processBeingAction2(Net::MessageIn &msg)
default:
case AttackType::MISS:
case AttackType::SKILLMISS:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(CAST_S32(type));
break;
}
BLOCK_END("BeingRecv::processBeingAction2")
@@ -1368,7 +1368,7 @@ void BeingRecv::processBeingStatUpdate1(Net::MessageIn &msg)
if (type != Sp::MANNER)
{
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
return;
}
dstBeing->setManner(value);
@@ -1716,7 +1716,7 @@ Being *BeingRecv::createBeing2(Net::MessageIn &msg,
break;
case BeingType::CHAT:
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(beingType);
type = ActorType::Monster;
logger->log("not supported object type: %d, job: %d",
CAST_S32(beingType), CAST_S32(job));
@@ -1802,7 +1802,7 @@ void BeingRecv::applyPlayerAction(Net::MessageIn &msg,
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
}
diff --git a/src/net/eathena/chatrecv.cpp b/src/net/eathena/chatrecv.cpp
index 553fb748e..2eb763cdf 100644
--- a/src/net/eathena/chatrecv.cpp
+++ b/src/net/eathena/chatrecv.cpp
@@ -415,7 +415,7 @@ void ChatRecv::processChatRoomLeave(Net::MessageIn &msg)
NotifyManager::notify(NotifyTypes::ROOM_KICKED, name);
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(status);
break;
}
if (localPlayer && name == localPlayer->getName())
@@ -578,7 +578,7 @@ void ChatRecv::processChatRoomCreateAck(Net::MessageIn &msg)
NotifyManager::notify(NotifyTypes::ROOM_ALREADY_EXISTS);
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(result);
break;
}
mChatRoom.clear();
@@ -619,7 +619,7 @@ void ChatRecv::processChatRoomJoinFailed(Net::MessageIn &msg)
NotifyManager::notify(NotifyTypes::ROOM_ERROR_RACE);
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(result);
}
}
@@ -669,7 +669,7 @@ void ChatRecv::processChatRoomRoleChange(Net::MessageIn &msg)
// dont show normal role
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(role);
break;
}
}
@@ -702,7 +702,7 @@ void ChatRecv::processMannerMessage(Net::MessageIn &msg)
case 5:
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(result);
break;
}
}
@@ -721,7 +721,7 @@ void ChatRecv::processChatSilence(Net::MessageIn &msg)
NotifyManager::notify(NotifyTypes::MANNER_NEGATIVE_POINTS, name);
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(result);
break;
}
}
diff --git a/src/net/eathena/inventoryrecv.cpp b/src/net/eathena/inventoryrecv.cpp
index 3b0114cb9..f1d17a6ca 100644
--- a/src/net/eathena/inventoryrecv.cpp
+++ b/src/net/eathena/inventoryrecv.cpp
@@ -246,7 +246,7 @@ void InventoryRecv::processPlayerInventoryAdd(Net::MessageIn &msg)
break;
default:
pickup = Pickup::UNKNOWN;
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(err);
break;
}
if (localPlayer)
@@ -980,7 +980,7 @@ void InventoryRecv::processPlayerRefine(Net::MessageIn &msg)
notifyType = NotifyTypes::REFINE_DOWNGRADE;
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(flag);
notifyType = NotifyTypes::REFINE_UNKNOWN;
break;
}
diff --git a/src/net/eathena/loginrecv.cpp b/src/net/eathena/loginrecv.cpp
index 220257ba6..c9164e4e2 100644
--- a/src/net/eathena/loginrecv.cpp
+++ b/src/net/eathena/loginrecv.cpp
@@ -114,7 +114,7 @@ void LoginRecv::processLoginError2(Net::MessageIn &msg)
default:
// TRANSLATORS: error message
errorMessage = _("Unknown error.");
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(code);
break;
}
client->setState(State::ERROR);
diff --git a/src/net/eathena/mailrecv.cpp b/src/net/eathena/mailrecv.cpp
index e89c730e9..4450be2af 100644
--- a/src/net/eathena/mailrecv.cpp
+++ b/src/net/eathena/mailrecv.cpp
@@ -62,7 +62,7 @@ void MailRecv::processMailOpen(Net::MessageIn &msg)
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(flag);
break;
}
}
@@ -115,7 +115,8 @@ void MailRecv::processReadMail(Net::MessageIn &msg)
void MailRecv::processGetAttachment(Net::MessageIn &msg)
{
- switch (msg.readUInt8("flag"))
+ const uint8_t flag = msg.readUInt8("flag");
+ switch (flag)
{
case 0:
NotifyManager::notify(NotifyTypes::MAIL_GET_ATTACH_OK);
@@ -127,14 +128,15 @@ void MailRecv::processGetAttachment(Net::MessageIn &msg)
NotifyManager::notify(NotifyTypes::MAIL_GET_ATTACH_TOO_MANY_ITEMS);
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(flag);
break;
}
}
void MailRecv::processSendMailAck(Net::MessageIn &msg)
{
- switch (msg.readUInt8("fail flag"))
+ const uint8_t flag = msg.readUInt8("fail flag");
+ switch (flag)
{
case 0:
NotifyManager::notify(NotifyTypes::MAIL_SEND_OK);
@@ -143,7 +145,7 @@ void MailRecv::processSendMailAck(Net::MessageIn &msg)
NotifyManager::notify(NotifyTypes::MAIL_SEND_ERROR);
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(flag);
break;
}
}
diff --git a/src/net/eathena/playerhandler.cpp b/src/net/eathena/playerhandler.cpp
index 8a6a7e878..429ea1f21 100644
--- a/src/net/eathena/playerhandler.cpp
+++ b/src/net/eathena/playerhandler.cpp
@@ -438,7 +438,7 @@ void PlayerHandler::setStat(Net::MessageIn &msg,
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
}
diff --git a/src/net/eathena/playerrecv.cpp b/src/net/eathena/playerrecv.cpp
index 9b5c50c96..28f3fe96d 100644
--- a/src/net/eathena/playerrecv.cpp
+++ b/src/net/eathena/playerrecv.cpp
@@ -195,7 +195,7 @@ void PlayerRecv::processPlayerGetExp(Net::MessageIn &msg)
else if (stat == 2)
localPlayer->addJobMessage(exp);
else
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(stat);
}
// need show particle depend on isQuest flag, for now ignored
}
diff --git a/src/net/eathena/skillrecv.cpp b/src/net/eathena/skillrecv.cpp
index 52f2e3b2b..8053dce54 100644
--- a/src/net/eathena/skillrecv.cpp
+++ b/src/net/eathena/skillrecv.cpp
@@ -339,7 +339,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg)
}
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(reason);
break;
}
diff --git a/src/net/eathena/traderecv.cpp b/src/net/eathena/traderecv.cpp
index cdae4788e..3d7d51dfe 100644
--- a/src/net/eathena/traderecv.cpp
+++ b/src/net/eathena/traderecv.cpp
@@ -157,7 +157,7 @@ void TradeRecv::processTradeItemAddResponse(Net::MessageIn &msg)
break;
default:
NotifyManager::notify(NotifyTypes::TRADE_ADD_ERROR);
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(res);
break;
}
}
diff --git a/src/net/tmwa/beingrecv.cpp b/src/net/tmwa/beingrecv.cpp
index bbae0a1bd..6d473a853 100644
--- a/src/net/tmwa/beingrecv.cpp
+++ b/src/net/tmwa/beingrecv.cpp
@@ -213,7 +213,7 @@ void BeingRecv::processBeingChangeLookContinue(const Net::MessageIn &msg,
dstBeing->setLook(CAST_U16(id));
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
}
@@ -1369,7 +1369,7 @@ void BeingRecv::applyPlayerAction(Net::MessageIn &msg,
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
}
diff --git a/src/net/tmwa/inventoryrecv.cpp b/src/net/tmwa/inventoryrecv.cpp
index fbada97cf..1586c5aa7 100644
--- a/src/net/tmwa/inventoryrecv.cpp
+++ b/src/net/tmwa/inventoryrecv.cpp
@@ -198,7 +198,7 @@ void InventoryRecv::processPlayerInventoryAdd(Net::MessageIn &msg)
break;
default:
pickup = Pickup::UNKNOWN;
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(err);
break;
}
if (localPlayer)
diff --git a/src/net/tmwa/playerhandler.cpp b/src/net/tmwa/playerhandler.cpp
index c34aca907..4ec61960f 100644
--- a/src/net/tmwa/playerhandler.cpp
+++ b/src/net/tmwa/playerhandler.cpp
@@ -413,10 +413,9 @@ void PlayerHandler::setStat(Net::MessageIn &msg,
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(type);
break;
}
-
}
#undef setStatComplex
diff --git a/src/net/tmwa/skillrecv.cpp b/src/net/tmwa/skillrecv.cpp
index df914568b..9ad5023b1 100644
--- a/src/net/tmwa/skillrecv.cpp
+++ b/src/net/tmwa/skillrecv.cpp
@@ -133,7 +133,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg)
txt = _("Cannot shout!");
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(bskill);
break;
}
@@ -185,7 +185,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg)
default:
// TRANSLATORS: error message
txt.append(_("Huh? What's that?"));
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(reason);
break;
}
}
@@ -206,7 +206,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg)
txt = _("Poison had no effect...");
break;
default:
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(skillId);
break;
}
}
diff --git a/src/net/tmwa/traderecv.cpp b/src/net/tmwa/traderecv.cpp
index feb65c3a6..393502273 100644
--- a/src/net/tmwa/traderecv.cpp
+++ b/src/net/tmwa/traderecv.cpp
@@ -145,7 +145,7 @@ void TradeRecv::processTradeItemAddResponse(Net::MessageIn &msg)
break;
default:
NotifyManager::notify(NotifyTypes::TRADE_ADD_ERROR);
- UNIMPLIMENTEDPACKET;
+ UNIMPLIMENTEDPACKETFIELD(res);
logger->log("QQQ SMSG_TRADE_ITEM_ADD_RESPONSE: "
+ toString(res));
break;