summaryrefslogtreecommitdiff
path: root/src/server/send.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2013-02-14 01:35:10 +0400
committerAndrey Nazarov <skuller@skuller.net>2013-02-14 01:35:10 +0400
commit8365d2eb8b9f5683bb6532fb62913e5fe0fb4f23 (patch)
treedf6a3ed658ca2e6c8f44b57a959473a16dd0bece /src/server/send.c
parente444152054b0fc358156b13f4cf8bb6038d2e3a4 (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.
Diffstat (limited to 'src/server/send.c')
-rw-r--r--src/server/send.c12
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);