Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarNetPackets.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-07-27 14:09:12 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2024-07-27 14:09:12 +1000
commit951fe787c437d43982f5eda77e1f19bf83998bfd (patch)
treed2e0c9a57451be75a968fedb6b7c407911ffbef4 /source/game/StarNetPackets.cpp
parent9e7a2e9bb9976a0f23fad5c0c91b151ffa2db24c (diff)
Networking changes (needs P2P testing, requires clients to update unfortunately)
Diffstat (limited to 'source/game/StarNetPackets.cpp')
-rw-r--r--source/game/StarNetPackets.cpp23
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(