mirror of
https://github.com/overte-org/overte.git
synced 2025-04-13 14:28:03 +02:00
verify replicated packets in packet filter
This commit is contained in:
parent
ea45e341ee
commit
6da5a63152
2 changed files with 36 additions and 2 deletions
|
@ -257,8 +257,41 @@ bool LimitedNodeList::packetSourceAndHashMatchAndTrackBandwidth(const udt::Packe
|
|||
PacketType headerType = NLPacket::typeInHeader(packet);
|
||||
|
||||
if (NON_SOURCED_PACKETS.contains(headerType)) {
|
||||
emit dataReceived(NodeType::Unassigned, packet.getPayloadSize());
|
||||
return true;
|
||||
if (REPLICATED_PACKET_MAPPING.key(headerType) != PacketType::Unknown) {
|
||||
// this is a replicated packet type - make sure the socket that sent it to us matches
|
||||
// one from one of our current upstream nodes
|
||||
|
||||
NodeType_t sendingNodeType { NodeType::Unassigned };
|
||||
|
||||
eachNodeBreakable([&packet, &sendingNodeType](const SharedNodePointer& node){
|
||||
if (node->getType() == NodeType::upstreamType(node->getType())
|
||||
&& node->getPublicSocket() == packet.getSenderSockAddr()) {
|
||||
sendingNodeType = node->getType();
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
if (sendingNodeType != NodeType::Unassigned) {
|
||||
emit dataReceived(sendingNodeType, packet.getPayloadSize());
|
||||
return true;
|
||||
} else {
|
||||
static const QString UNSOLICITED_REPLICATED_REGEX =
|
||||
"Replicated packet of type \\d+ \\([\\sa-zA-Z:]+\\) received from unknown upstream";
|
||||
static QString repeatedMessage
|
||||
= LogHandler::getInstance().addRepeatedMessageRegex(UNSOLICITED_REPLICATED_REGEX);
|
||||
|
||||
qCDebug(networking) << "Replicated packet of type" << headerType
|
||||
<< "received from unknown upstream" << packet.getSenderSockAddr();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
} else {
|
||||
emit dataReceived(NodeType::Unassigned, packet.getPayloadSize());
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
QUuid sourceID = NLPacket::sourceIDInHeader(packet);
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ const QHash<PacketType, PacketType> REPLICATED_PACKET_MAPPING {
|
|||
{ PacketType::SilentAudioFrame, PacketType::ReplicatedSilentAudioFrame },
|
||||
{ PacketType::AvatarIdentity, PacketType::ReplicatedAvatarIdentity },
|
||||
{ PacketType::KillAvatar, PacketType::ReplicatedKillAvatar },
|
||||
{ PacketType::BulkAvatarData, PacketType::ReplicatedBulkAvatarData }
|
||||
};
|
||||
|
||||
PacketVersion versionForPacketType(PacketType packetType) {
|
||||
|
|
Loading…
Reference in a new issue