EXE_UNPURECLIENTDETECTED

Call of DutyCall of Duty: United OffensiveCall of Duty 2

EXE_UNPURECLIENTDETECTED
Unpure client detected. Invalid .PK3 files referenced

Cause

With sv_pure 1 the server audits the checksums of the paks each client has loaded and drops any client whose set does not match.

Legitimate reasons: the player has a custom pak the server does not have, or a modified stock pak, or a stale download from another server.

But on Call of Duty 1 patch 1.1 there is an engine bug that makes this fire against innocent clients. The 1.1 client never resets its pure checksum state at connect — only on a full filesystem shutdown. So a 1.1 client that has ever loaded a mod pak from any server carries that state into every subsequent connection and is dropped by every sv_pure 1 server it joins.

Patch 1.5 resets the state at connect and is unaffected.

This is the actual reason roughly 99% of surviving 1.1 servers run sv_pure 0.

Fix, server side

On Call of Duty 1 patch 1.1, set sv_pure 0. There is no configuration that makes sv_pure 1 workable there.

set sv_pure 0

On other versions, set sv_pure 0 whenever you load a mod pak unless you have tested the checksum path with real clients. sv_pure is a checksum audit, not a content filter — it does not reliably prevent a client from loading its own paks, so the security value you are buying with the support burden is smaller than it looks.

Fix, client side

If a specific server needs sv_pure 1, the player must remove custom paks from the gamedir:

CoD1:  <install>/main/*.pk3    — keep only pak0..pakb and localized_english_pak*
CoD2:  <install>/main/*.iwd    — keep only iw_00..iw_15 and localized_*

Move anything else out, including paks auto-downloaded from other servers.

Related