mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 17:14:59 +02:00
add extra debugging to packet mismatch
This commit is contained in:
parent
604f436d4b
commit
9d71671a52
8 changed files with 17 additions and 14 deletions
|
@ -832,7 +832,7 @@ void AnimationServer::readPendingDatagrams() {
|
|||
&& (receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
|
||||
nodeSockAddr.getAddressPointer(),
|
||||
nodeSockAddr.getPortPointer())) &&
|
||||
packetVersionMatch(packetData)) {
|
||||
packetVersionMatch(packetData, nodeSockAddr)) {
|
||||
|
||||
if (packetData[0] == PACKET_TYPE_JURISDICTION) {
|
||||
int headerBytes = numBytesForPacketHeader(packetData);
|
||||
|
|
|
@ -111,7 +111,7 @@ void AssignmentClient::readPendingDatagrams() {
|
|||
if ((receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
|
||||
senderSockAddr.getAddressPointer(),
|
||||
senderSockAddr.getPortPointer()))
|
||||
&& packetVersionMatch(packetData)) {
|
||||
&& packetVersionMatch(packetData, senderSockAddr)) {
|
||||
|
||||
if (_currentAssignment) {
|
||||
// have the threaded current assignment handle this datagram
|
||||
|
|
|
@ -54,14 +54,13 @@ void DataServer::readPendingDatagrams() {
|
|||
qint64 receivedBytes = 0;
|
||||
static unsigned char packetData[MAX_PACKET_SIZE];
|
||||
|
||||
QHostAddress senderAddress;
|
||||
quint16 senderPort;
|
||||
HifiSockAddr senderSockAddr;
|
||||
|
||||
while (_socket.hasPendingDatagrams() &&
|
||||
(receivedBytes = _socket.readDatagram(reinterpret_cast<char*>(packetData), MAX_PACKET_SIZE,
|
||||
&senderAddress, &senderPort))) {
|
||||
senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer()))) {
|
||||
if ((packetData[0] == PACKET_TYPE_DATA_SERVER_PUT || packetData[0] == PACKET_TYPE_DATA_SERVER_GET) &&
|
||||
packetVersionMatch(packetData)) {
|
||||
packetVersionMatch(packetData, senderSockAddr)) {
|
||||
|
||||
int readBytes = numBytesForPacketHeader(packetData);
|
||||
|
||||
|
@ -126,7 +125,7 @@ void DataServer::readPendingDatagrams() {
|
|||
// which is the sent packet with the header replaced
|
||||
packetData[0] = PACKET_TYPE_DATA_SERVER_CONFIRM;
|
||||
_socket.writeDatagram(reinterpret_cast<char*>(packetData), receivedBytes,
|
||||
senderAddress, senderPort);
|
||||
senderSockAddr.getAddress(), senderSockAddr.getPort());
|
||||
}
|
||||
|
||||
freeReplyObject(reply);
|
||||
|
@ -190,7 +189,7 @@ void DataServer::readPendingDatagrams() {
|
|||
|
||||
// reply back with the send packet
|
||||
_socket.writeDatagram(reinterpret_cast<char*>(packetData), numSendPacketBytes,
|
||||
senderAddress, senderPort);
|
||||
senderSockAddr.getAddress(), senderSockAddr.getPort());
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -116,7 +116,7 @@ void DomainServer::readAvailableDatagrams() {
|
|||
if ((receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
|
||||
senderSockAddr.getAddressPointer(),
|
||||
senderSockAddr.getPortPointer()))
|
||||
&& packetVersionMatch((unsigned char*) packetData)) {
|
||||
&& packetVersionMatch((unsigned char*) packetData, senderSockAddr)) {
|
||||
if (packetData[0] == PACKET_TYPE_DOMAIN_REPORT_FOR_DUTY || packetData[0] == PACKET_TYPE_DOMAIN_LIST_REQUEST) {
|
||||
// this is an RFD or domain list request packet, and there is a version match
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ void DatagramProcessor::processDatagrams() {
|
|||
_packetCount++;
|
||||
_byteCount += bytesReceived;
|
||||
|
||||
if (packetVersionMatch(incomingPacket)) {
|
||||
if (packetVersionMatch(incomingPacket, senderSockAddr)) {
|
||||
// only process this packet if we have a match on the packet version
|
||||
switch (incomingPacket[0]) {
|
||||
case PACKET_TYPE_TRANSMITTER_DATA_V2:
|
||||
|
|
|
@ -45,7 +45,7 @@ void VoxelPacketProcessor::processPacket(const HifiSockAddr& senderSockAddr, uns
|
|||
if (messageLength > statsMessageLength) {
|
||||
packetData += statsMessageLength;
|
||||
messageLength -= statsMessageLength;
|
||||
if (!packetVersionMatch(packetData)) {
|
||||
if (!packetVersionMatch(packetData, senderSockAddr)) {
|
||||
return; // bail since piggyback data doesn't match our versioning
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -64,13 +64,15 @@ PACKET_VERSION versionForPacketType(PACKET_TYPE type) {
|
|||
}
|
||||
}
|
||||
|
||||
bool packetVersionMatch(unsigned char* packetHeader) {
|
||||
bool packetVersionMatch(unsigned char* packetHeader, const HifiSockAddr& senderSockAddr) {
|
||||
// currently this just checks if the version in the packet matches our return from versionForPacketType
|
||||
// may need to be expanded in the future for types and versions that take > than 1 byte
|
||||
if (packetHeader[1] == versionForPacketType(packetHeader[0]) || packetHeader[0] == PACKET_TYPE_STUN_RESPONSE) {
|
||||
return true;
|
||||
} else {
|
||||
qDebug("There is a packet version mismatch for packet with header %c", packetHeader[0]);
|
||||
qDebug() << "Packet version mismatch for" << packetHeader[0] << ". Sender"
|
||||
<< senderSockAddr << "sent" << packetHeader[1] << "but" << versionForPacketType(packetHeader[0])
|
||||
<< "was expected.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#ifndef hifi_PacketHeaders_h
|
||||
#define hifi_PacketHeaders_h
|
||||
|
||||
#include "HifiSockAddr.h"
|
||||
|
||||
typedef char PACKET_TYPE;
|
||||
const PACKET_TYPE PACKET_TYPE_UNKNOWN = 0;
|
||||
const PACKET_TYPE PACKET_TYPE_STUN_RESPONSE = 1;
|
||||
|
@ -55,7 +57,7 @@ typedef char PACKET_VERSION;
|
|||
|
||||
PACKET_VERSION versionForPacketType(PACKET_TYPE type);
|
||||
|
||||
bool packetVersionMatch(unsigned char* packetHeader);
|
||||
bool packetVersionMatch(unsigned char* packetHeader, const HifiSockAddr& senderSockAddr);
|
||||
|
||||
int populateTypeAndVersion(unsigned char* destinationHeader, PACKET_TYPE type);
|
||||
int numBytesForPacketHeader(const unsigned char* packetHeader);
|
||||
|
|
Loading…
Reference in a new issue