diff options
author | Andrey Nazarov <skuller@skuller.net> | 2013-02-14 01:35:10 +0400 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2013-02-14 01:35:10 +0400 |
commit | 8365d2eb8b9f5683bb6532fb62913e5fe0fb4f23 (patch) | |
tree | df6a3ed658ca2e6c8f44b57a959473a16dd0bece | |
parent | e444152054b0fc358156b13f4cf8bb6038d2e3a4 (diff) |
Fix writing compressed layouts to older clients.
All protocol 35 clients and Q2PRO client before 727e7b1 can't seamlessly
write contents of svc_zpacket to demo. Disable writing compressed
layouts to such clients when they are recording.
Also use clients maxpacketlen value for deciding if layout is large
enough to be compressed.
-rw-r--r-- | src/server/send.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/server/send.c b/src/server/send.c index 6cb9fdc..baf5448 100644 --- a/src/server/send.c +++ b/src/server/send.c @@ -346,8 +346,16 @@ static qboolean compress_message(client_t *client, int flags) if (!client->has_zlib) return qfalse; - // FIXME: make this configurable? - if (msg_write.cursize < MAX_PACKETLEN_DEFAULT / 2) + // older clients have problems seamlessly writing svc_zpackets + if (client->settings[CLS_RECORDING]) { + if (client->protocol != PROTOCOL_VERSION_Q2PRO) + return qfalse; + if (client->version < PROTOCOL_VERSION_Q2PRO_EXTENDED_LAYOUT) + return qfalse; + } + + // compress only sufficiently large layouts + if (msg_write.cursize < client->netchan->maxpacketlen / 2) return qfalse; deflateReset(&svs.z); |