fix packet header size constraints

This commit is contained in:
Stephen Birarda 2014-01-28 12:56:05 -08:00
parent 8384ff79df
commit fe410ae3e9
4 changed files with 10 additions and 9 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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();

View file

@ -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;