diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-07-27 14:09:12 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-07-27 14:09:12 +1000 |
commit | 951fe787c437d43982f5eda77e1f19bf83998bfd (patch) | |
tree | d2e0c9a57451be75a968fedb6b7c407911ffbef4 /source/game/StarNetPackets.cpp | |
parent | 9e7a2e9bb9976a0f23fad5c0c91b151ffa2db24c (diff) |
Networking changes (needs P2P testing, requires clients to update unfortunately)
Diffstat (limited to 'source/game/StarNetPackets.cpp')
-rw-r--r-- | source/game/StarNetPackets.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/source/game/StarNetPackets.cpp b/source/game/StarNetPackets.cpp index 3cbb3ad..d0aacac 100644 --- a/source/game/StarNetPackets.cpp +++ b/source/game/StarNetPackets.cpp @@ -78,6 +78,11 @@ EnumMap<PacketType> const PacketTypeNames{ {PacketType::SystemObjectSpawn, "SystemObjectSpawn"} }; +EnumMap<NetCompressionMode> const NetCompressionModeNames { + {NetCompressionMode::None, "None"}, + {NetCompressionMode::Zstd, "Zstd"} +}; + Packet::~Packet() {} void Packet::readLegacy(DataStream& ds) { read(ds); } @@ -187,17 +192,29 @@ void ProtocolRequestPacket::write(DataStream& ds) const { ds.write(requestProtocolVersion); } -ProtocolResponsePacket::ProtocolResponsePacket(bool allowed) - : allowed(allowed) {} +ProtocolResponsePacket::ProtocolResponsePacket(bool allowed, Json info) + : allowed(allowed), info(info) {} void ProtocolResponsePacket::read(DataStream& ds) { ds.read(allowed); + if (compressionMode() == PacketCompressionMode::Enabled) { + // gross hack for backwards compatibility with older OpenSB servers + // can be removed later + auto externalBuffer = as<DataStreamExternalBuffer>(&ds); + if (!externalBuffer || !externalBuffer->atEnd()) + ds.read(info); + } } -void ProtocolResponsePacket::write(DataStream& ds) const { +void ProtocolResponsePacket::writeLegacy(DataStream& ds) const { ds.write(allowed); } +void ProtocolResponsePacket::write(DataStream& ds) const { + writeLegacy(ds); + ds.write(info); +} + ConnectSuccessPacket::ConnectSuccessPacket() {} ConnectSuccessPacket::ConnectSuccessPacket( |