mirror of
https://github.com/lubosz/overte.git
synced 2025-04-24 03:53:52 +02:00
fix packet header size constraints
This commit is contained in:
parent
8384ff79df
commit
fe410ae3e9
4 changed files with 10 additions and 9 deletions
|
@ -30,8 +30,8 @@ typedef uint16_t OCTREE_PACKET_INTERNAL_SECTION_SIZE;
|
|||
const int MAX_OCTREE_PACKET_SIZE = MAX_PACKET_SIZE;
|
||||
|
||||
// this is overly conservative - sizeof(PacketType) is 8 bytes but a packed PacketType could be as small as one byte
|
||||
const int OCTREE_PACKET_HEADER_SIZE = (sizeof(PacketType) + sizeof(PacketVersion) + sizeof(OCTREE_PACKET_FLAGS)
|
||||
+ sizeof(OCTREE_PACKET_SEQUENCE) + sizeof(OCTREE_PACKET_SENT_TIME));
|
||||
const int OCTREE_PACKET_HEADER_SIZE = MAX_PACKET_HEADER_BYTES + sizeof(OCTREE_PACKET_FLAGS)
|
||||
+ sizeof(OCTREE_PACKET_SEQUENCE) + sizeof(OCTREE_PACKET_SENT_TIME);
|
||||
|
||||
const int MAX_OCTREE_PACKET_DATA_SIZE = MAX_PACKET_SIZE - OCTREE_PACKET_HEADER_SIZE;
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <QtCore/QDebug>
|
||||
|
||||
#include "NodeList.h"
|
||||
#include "UUID.h"
|
||||
|
||||
#include "PacketHeaders.h"
|
||||
|
||||
|
@ -50,10 +49,8 @@ PacketVersion versionForPacketType(PacketType type) {
|
|||
}
|
||||
}
|
||||
|
||||
const int MAX_HEADER_BYTES = sizeof(PacketType) + sizeof(PacketVersion) + NUM_BYTES_RFC4122_UUID;
|
||||
|
||||
QByteArray byteArrayWithPopluatedHeader(PacketType type, const QUuid& connectionUUID) {
|
||||
QByteArray freshByteArray(MAX_HEADER_BYTES, 0);
|
||||
QByteArray freshByteArray(MAX_PACKET_HEADER_BYTES, 0);
|
||||
freshByteArray.resize(populatePacketHeader(freshByteArray, type, connectionUUID));
|
||||
return freshByteArray;
|
||||
}
|
||||
|
@ -73,7 +70,7 @@ int populatePacketHeader(char* packet, PacketType type, const QUuid& connectionU
|
|||
QUuid packUUID = connectionUUID.isNull() ? NodeList::getInstance()->getOwnerUUID() : connectionUUID;
|
||||
|
||||
QByteArray rfcUUID = packUUID.toRfc4122();
|
||||
memcpy(packet + numTypeBytes + sizeof(PacketVersion), rfcUUID, NUM_BYTES_RFC4122_UUID);
|
||||
memcpy(packet + numTypeBytes + sizeof(PacketVersion), rfcUUID.constData(), NUM_BYTES_RFC4122_UUID);
|
||||
|
||||
// return the number of bytes written for pointer pushing
|
||||
return numTypeBytes + sizeof(PacketVersion) + NUM_BYTES_RFC4122_UUID;
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
#include <QtCore/QUuid>
|
||||
|
||||
#include "UUID.h"
|
||||
|
||||
enum PacketType {
|
||||
PacketTypeUnknown,
|
||||
PacketTypeStunResponse,
|
||||
|
@ -54,6 +56,8 @@ enum PacketType {
|
|||
|
||||
typedef char PacketVersion;
|
||||
|
||||
const int MAX_PACKET_HEADER_BYTES = sizeof(PacketType) + sizeof(PacketVersion) + NUM_BYTES_RFC4122_UUID;;
|
||||
|
||||
PacketVersion versionForPacketType(PacketType type);
|
||||
|
||||
const QUuid nullUUID = QUuid();
|
||||
|
|
|
@ -33,8 +33,8 @@ typedef uint16_t VOXEL_PACKET_INTERNAL_SECTION_SIZE;
|
|||
const int MAX_VOXEL_PACKET_SIZE = MAX_PACKET_SIZE;
|
||||
|
||||
// this is overly conservative - uses 8 bytes for PacketType which could be as compact as a single byte
|
||||
const int VOXEL_PACKET_HEADER_SIZE = (sizeof(PacketType) + sizeof(PacketVersion) + sizeof(VOXEL_PACKET_FLAGS)
|
||||
+ sizeof(VOXEL_PACKET_SEQUENCE) + sizeof(VOXEL_PACKET_SENT_TIME));
|
||||
const int VOXEL_PACKET_HEADER_SIZE = MAX_PACKET_HEADER_BYTES + sizeof(VOXEL_PACKET_FLAGS)
|
||||
+ sizeof(VOXEL_PACKET_SEQUENCE) + sizeof(VOXEL_PACKET_SENT_TIME);
|
||||
|
||||
const int MAX_VOXEL_PACKET_DATA_SIZE = MAX_PACKET_SIZE - VOXEL_PACKET_HEADER_SIZE;
|
||||
|
||||
|
|
Loading…
Reference in a new issue