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 /src/server/send.c | |
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.
Diffstat (limited to 'src/server/send.c')
-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); |