From c18004e67869a9de88d9f8038a7a1957f20f63fc Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 11 Sep 2009 15:04:47 +0200 Subject: Net: Add support for packets >64K Need too secure this against DoS... --- src/Net/Packet.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/Net/Packet.h') diff --git a/src/Net/Packet.h b/src/Net/Packet.h index 567c9c3..3844bad 100644 --- a/src/Net/Packet.h +++ b/src/Net/Packet.h @@ -38,15 +38,16 @@ namespace Net { class MAD_NET_EXPORT Packet { public: struct Header { + boost::uint32_t length; boost::uint16_t requestId; - boost::uint16_t length; + boost::uint16_t reserved; }; protected: Header *rawData; public: - Packet(boost::uint16_t requestId, const void *data = 0, boost::uint16_t length = 0); + Packet(boost::uint16_t requestId, const void *data = 0, boost::uint32_t length = 0); Packet(const Packet &p) { rawData = reinterpret_cast(std::malloc(p.getRawDataLength())); @@ -63,8 +64,8 @@ class MAD_NET_EXPORT Packet { return ntohs(rawData->requestId); } - boost::uint16_t getLength() const { - return ntohs(rawData->length); + boost::uint32_t getLength() const { + return ntohl(rawData->length); } const boost::uint8_t* getData() const { @@ -76,7 +77,7 @@ class MAD_NET_EXPORT Packet { } unsigned long getRawDataLength() const { - return sizeof(Header) + ntohs(rawData->length); + return sizeof(Header) + getLength(); } }; -- cgit v1.2.3