mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 02:36:54 +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,
|
&& (receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
|
||||||
nodeSockAddr.getAddressPointer(),
|
nodeSockAddr.getAddressPointer(),
|
||||||
nodeSockAddr.getPortPointer())) &&
|
nodeSockAddr.getPortPointer())) &&
|
||||||
packetVersionMatch(packetData)) {
|
packetVersionMatch(packetData, nodeSockAddr)) {
|
||||||
|
|
||||||
if (packetData[0] == PACKET_TYPE_JURISDICTION) {
|
if (packetData[0] == PACKET_TYPE_JURISDICTION) {
|
||||||
int headerBytes = numBytesForPacketHeader(packetData);
|
int headerBytes = numBytesForPacketHeader(packetData);
|
||||||
|
|
|
@ -111,7 +111,7 @@ void AssignmentClient::readPendingDatagrams() {
|
||||||
if ((receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
|
if ((receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
|
||||||
senderSockAddr.getAddressPointer(),
|
senderSockAddr.getAddressPointer(),
|
||||||
senderSockAddr.getPortPointer()))
|
senderSockAddr.getPortPointer()))
|
||||||
&& packetVersionMatch(packetData)) {
|
&& packetVersionMatch(packetData, senderSockAddr)) {
|
||||||
|
|
||||||
if (_currentAssignment) {
|
if (_currentAssignment) {
|
||||||
// have the threaded current assignment handle this datagram
|
// have the threaded current assignment handle this datagram
|
||||||
|
|
|
@ -54,14 +54,13 @@ void DataServer::readPendingDatagrams() {
|
||||||
qint64 receivedBytes = 0;
|
qint64 receivedBytes = 0;
|
||||||
static unsigned char packetData[MAX_PACKET_SIZE];
|
static unsigned char packetData[MAX_PACKET_SIZE];
|
||||||
|
|
||||||
QHostAddress senderAddress;
|
HifiSockAddr senderSockAddr;
|
||||||
quint16 senderPort;
|
|
||||||
|
|
||||||
while (_socket.hasPendingDatagrams() &&
|
while (_socket.hasPendingDatagrams() &&
|
||||||
(receivedBytes = _socket.readDatagram(reinterpret_cast<char*>(packetData), MAX_PACKET_SIZE,
|
(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) &&
|
if ((packetData[0] == PACKET_TYPE_DATA_SERVER_PUT || packetData[0] == PACKET_TYPE_DATA_SERVER_GET) &&
|
||||||
packetVersionMatch(packetData)) {
|
packetVersionMatch(packetData, senderSockAddr)) {
|
||||||
|
|
||||||
int readBytes = numBytesForPacketHeader(packetData);
|
int readBytes = numBytesForPacketHeader(packetData);
|
||||||
|
|
||||||
|
@ -126,7 +125,7 @@ void DataServer::readPendingDatagrams() {
|
||||||
// which is the sent packet with the header replaced
|
// which is the sent packet with the header replaced
|
||||||
packetData[0] = PACKET_TYPE_DATA_SERVER_CONFIRM;
|
packetData[0] = PACKET_TYPE_DATA_SERVER_CONFIRM;
|
||||||
_socket.writeDatagram(reinterpret_cast<char*>(packetData), receivedBytes,
|
_socket.writeDatagram(reinterpret_cast<char*>(packetData), receivedBytes,
|
||||||
senderAddress, senderPort);
|
senderSockAddr.getAddress(), senderSockAddr.getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
freeReplyObject(reply);
|
freeReplyObject(reply);
|
||||||
|
@ -190,7 +189,7 @@ void DataServer::readPendingDatagrams() {
|
||||||
|
|
||||||
// reply back with the send packet
|
// reply back with the send packet
|
||||||
_socket.writeDatagram(reinterpret_cast<char*>(packetData), numSendPacketBytes,
|
_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,
|
if ((receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
|
||||||
senderSockAddr.getAddressPointer(),
|
senderSockAddr.getAddressPointer(),
|
||||||
senderSockAddr.getPortPointer()))
|
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) {
|
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
|
// this is an RFD or domain list request packet, and there is a version match
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ void DatagramProcessor::processDatagrams() {
|
||||||
_packetCount++;
|
_packetCount++;
|
||||||
_byteCount += bytesReceived;
|
_byteCount += bytesReceived;
|
||||||
|
|
||||||
if (packetVersionMatch(incomingPacket)) {
|
if (packetVersionMatch(incomingPacket, senderSockAddr)) {
|
||||||
// only process this packet if we have a match on the packet version
|
// only process this packet if we have a match on the packet version
|
||||||
switch (incomingPacket[0]) {
|
switch (incomingPacket[0]) {
|
||||||
case PACKET_TYPE_TRANSMITTER_DATA_V2:
|
case PACKET_TYPE_TRANSMITTER_DATA_V2:
|
||||||
|
|
|
@ -45,7 +45,7 @@ void VoxelPacketProcessor::processPacket(const HifiSockAddr& senderSockAddr, uns
|
||||||
if (messageLength > statsMessageLength) {
|
if (messageLength > statsMessageLength) {
|
||||||
packetData += statsMessageLength;
|
packetData += statsMessageLength;
|
||||||
messageLength -= statsMessageLength;
|
messageLength -= statsMessageLength;
|
||||||
if (!packetVersionMatch(packetData)) {
|
if (!packetVersionMatch(packetData, senderSockAddr)) {
|
||||||
return; // bail since piggyback data doesn't match our versioning
|
return; // bail since piggyback data doesn't match our versioning
|
||||||
}
|
}
|
||||||
} else {
|
} 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
|
// 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
|
// 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) {
|
if (packetHeader[1] == versionForPacketType(packetHeader[0]) || packetHeader[0] == PACKET_TYPE_STUN_RESPONSE) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} 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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#ifndef hifi_PacketHeaders_h
|
#ifndef hifi_PacketHeaders_h
|
||||||
#define hifi_PacketHeaders_h
|
#define hifi_PacketHeaders_h
|
||||||
|
|
||||||
|
#include "HifiSockAddr.h"
|
||||||
|
|
||||||
typedef char PACKET_TYPE;
|
typedef char PACKET_TYPE;
|
||||||
const PACKET_TYPE PACKET_TYPE_UNKNOWN = 0;
|
const PACKET_TYPE PACKET_TYPE_UNKNOWN = 0;
|
||||||
const PACKET_TYPE PACKET_TYPE_STUN_RESPONSE = 1;
|
const PACKET_TYPE PACKET_TYPE_STUN_RESPONSE = 1;
|
||||||
|
@ -55,7 +57,7 @@ typedef char PACKET_VERSION;
|
||||||
|
|
||||||
PACKET_VERSION versionForPacketType(PACKET_TYPE type);
|
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 populateTypeAndVersion(unsigned char* destinationHeader, PACKET_TYPE type);
|
||||||
int numBytesForPacketHeader(const unsigned char* packetHeader);
|
int numBytesForPacketHeader(const unsigned char* packetHeader);
|
||||||
|
|
Loading…
Reference in a new issue