This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository openjk.

commit 9bbba0a4de24e9f3be1c0c4f1b4144ba6b0487a0
Author: Razish <[email protected]>
Date:   Tue Dec 12 17:03:13 2017 +1100

    [MP] Added sv_floodProtectSlow (0 = don't reset timer on rejected 
commands). Allowed sv_floodProtect to specify flood time in ms
---
 codemp/server/server.h      |  3 ++-
 codemp/server/sv_client.cpp | 22 ++++++++++++++--------
 codemp/server/sv_init.cpp   |  1 +
 codemp/server/sv_main.cpp   |  1 +
 4 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/codemp/server/server.h b/codemp/server/server.h
index e64b97e..78a2617 100644
--- a/codemp/server/server.h
+++ b/codemp/server/server.h
@@ -168,7 +168,7 @@ typedef struct client_s {
        int                             downloadSendTime;       // time we last 
got an ack from the client
 
        int                             deltaMessage;           // frame last 
client usercmd message
-       int                             nextReliableTime;       // svs.time 
when another reliable command will be allowed
+       int                             lastReliableTime;       // svs.time 
when reliable command was last received
        int                             lastPacketTime;         // svs.time 
when packet was last received
        int                             lastConnectTime;        // svs.time 
when connection started
        int                             nextSnapshotTime;       // send another 
snapshot when svs.time >= nextSnapshotTime
@@ -264,6 +264,7 @@ extern      cvar_t  *sv_maxPing;
 extern cvar_t  *sv_gametype;
 extern cvar_t  *sv_pure;
 extern cvar_t  *sv_floodProtect;
+extern cvar_t  *sv_floodProtectSlow;
 extern cvar_t  *sv_lanForceRate;
 extern cvar_t  *sv_needpass;
 extern cvar_t  *sv_filterCommands;
diff --git a/codemp/server/sv_client.cpp b/codemp/server/sv_client.cpp
index d88ed6e..bb8bf8d 100644
--- a/codemp/server/sv_client.cpp
+++ b/codemp/server/sv_client.cpp
@@ -1336,16 +1336,22 @@ static qboolean SV_ClientCommand( client_t *cl, msg_t 
*msg ) {
        // normal to spam a lot of commands when downloading
        if ( !com_cl_running->integer &&
                cl->state >= CS_ACTIVE &&
-               sv_floodProtect->integer &&
-               svs.time < cl->nextReliableTime ) {
-               // ignore any other text messages from this client but let them 
keep playing
-               // TTimo - moved the ignored verbose to the actual processing 
in SV_ExecuteClientCommand, only printing if the core doesn't intercept
-               clientOk = qfalse;
+               sv_floodProtect->integer )
+       {
+               const int floodTime = (sv_floodProtect->integer == 1) ? 1000 : 
sv_floodProtect->integer;
+               if ( svs.time < (cl->lastReliableTime + floodTime) ) {
+                       // ignore any other text messages from this client but 
let them keep playing
+                       // TTimo - moved the ignored verbose to the actual 
processing in SV_ExecuteClientCommand, only printing if the core doesn't 
intercept
+                       clientOk = qfalse;
+               }
+               else {
+                       cl->lastReliableTime = svs.time;
+               }
+               if ( sv_floodProtectSlow->integer ) {
+                       cl->lastReliableTime = svs.time;
+               }
        }
 
-       // don't allow another command for one second
-       cl->nextReliableTime = svs.time + 1000;
-
        SV_ExecuteClientCommand( cl, s, clientOk );
 
        cl->lastClientCommand = seq;
diff --git a/codemp/server/sv_init.cpp b/codemp/server/sv_init.cpp
index 0a29a43..11ec030 100644
--- a/codemp/server/sv_init.cpp
+++ b/codemp/server/sv_init.cpp
@@ -963,6 +963,7 @@ void SV_Init (void) {
        sv_minPing = Cvar_Get ("sv_minPing", "0", CVAR_ARCHIVE_ND | 
CVAR_SERVERINFO );
        sv_maxPing = Cvar_Get ("sv_maxPing", "0", CVAR_ARCHIVE_ND | 
CVAR_SERVERINFO );
        sv_floodProtect = Cvar_Get ("sv_floodProtect", "1", CVAR_ARCHIVE | 
CVAR_SERVERINFO, "Protect against flooding of server commands" );
+       sv_floodProtectSlow = Cvar_Get ("sv_floodProtectSlow", "1", 
CVAR_ARCHIVE | CVAR_SERVERINFO, "Use original method of delaying commands with 
flood protection" );
        // systeminfo
        Cvar_Get ("sv_cheats", "1", CVAR_SYSTEMINFO | CVAR_ROM, "Allow cheats 
on server if set to 1" );
        sv_serverid = Cvar_Get ("sv_serverid", "0", CVAR_SYSTEMINFO | CVAR_ROM 
);
diff --git a/codemp/server/sv_main.cpp b/codemp/server/sv_main.cpp
index a968c4d..64f593c 100644
--- a/codemp/server/sv_main.cpp
+++ b/codemp/server/sv_main.cpp
@@ -60,6 +60,7 @@ cvar_t        *sv_maxPing;
 cvar_t *sv_gametype;
 cvar_t *sv_pure;
 cvar_t *sv_floodProtect;
+cvar_t *sv_floodProtectSlow;
 cvar_t *sv_lanForceRate; // dedicated 1 (LAN) server forces local client rates 
to 99999 (bug #491)
 cvar_t *sv_needpass;
 cvar_t *sv_filterCommands; // strict filtering on commands (1: strip ['\r', 
'\n'], 2: also strip ';')

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/openjk.git

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to