mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 14:33:31 +02:00
fix supression of repeated messages for version mismatch
This commit is contained in:
parent
2a2eb39066
commit
b257daaef1
1 changed files with 23 additions and 7 deletions
|
@ -189,19 +189,35 @@ bool PacketReceiver::packetVersionMatch(const NLPacket& packet) {
|
|||
if (packet.getVersion() != versionForPacketType(packet.getType())
|
||||
&& packet.getType() != PacketType::StunResponse) {
|
||||
|
||||
static QMultiMap<QUuid, PacketType::Value> versionDebugSuppressMap;
|
||||
static QMultiHash<QUuid, PacketType::Value> sourcedVersionDebugSuppressMap;
|
||||
static QMultiHash<HifiSockAddr, PacketType::Value> versionDebugSuppressMap;
|
||||
|
||||
const QUuid& senderID = packet.getSourceID();
|
||||
|
||||
if (!versionDebugSuppressMap.contains(senderID, packet.getType())) {
|
||||
bool hasBeenOutput = false;
|
||||
QString senderString;
|
||||
|
||||
if (NON_SOURCED_PACKETS.contains(packet.getType())) {
|
||||
const HifiSockAddr& senderSockAddr = packet.getSenderSockAddr();
|
||||
hasBeenOutput = versionDebugSuppressMap.contains(senderSockAddr, packet.getType());
|
||||
|
||||
if (!hasBeenOutput) {
|
||||
versionDebugSuppressMap.insert(senderSockAddr, packet.getType());
|
||||
senderString = QString("%1:%2").arg(senderSockAddr.getAddress().toString()).arg(senderSockAddr.getPort());
|
||||
}
|
||||
} else {
|
||||
hasBeenOutput = sourcedVersionDebugSuppressMap.contains(packet.getSourceID(), packet.getType());
|
||||
|
||||
if (!hasBeenOutput) {
|
||||
sourcedVersionDebugSuppressMap.insert(packet.getSourceID(), packet.getType());
|
||||
senderString = uuidStringWithoutCurlyBraces(packet.getSourceID().toString());
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasBeenOutput) {
|
||||
qCDebug(networking) << "Packet version mismatch on" << packet.getType() << "- Sender"
|
||||
<< senderID << "sent" << qPrintable(QString::number(packet.getVersion())) << "but"
|
||||
<< senderString << "sent" << qPrintable(QString::number(packet.getVersion())) << "but"
|
||||
<< qPrintable(QString::number(versionForPacketType(packet.getType()))) << "expected.";
|
||||
|
||||
emit packetVersionMismatch(packet.getType());
|
||||
|
||||
versionDebugSuppressMap.insert(senderID, packet.getType());
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue