mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-23 08:22:58 +00:00
Cvars to do bad network things in DEVELOP, fixes to bad network things
This commit is contained in:
parent
7f479d14c2
commit
137f166043
4 changed files with 97 additions and 19 deletions
|
|
@ -175,7 +175,13 @@ uint8_t awaitingChallenge[32];
|
|||
consvar_t cv_allowguests = CVAR_INIT ("allowguests", "On", CV_SAVE, CV_OnOff, NULL);
|
||||
|
||||
#ifdef DEVELOP
|
||||
consvar_t cv_sigfail = CVAR_INIT ("sigfail", "Off", CV_SAVE, CV_OnOff, NULL);
|
||||
consvar_t cv_badjoin = CVAR_INIT ("badjoin", "0", 0, CV_Unsigned, NULL);
|
||||
consvar_t cv_badtraffic = CVAR_INIT ("badtraffic", "0", 0, CV_Unsigned, NULL);
|
||||
consvar_t cv_badresponse = CVAR_INIT ("badresponse", "0", 0, CV_Unsigned, NULL);
|
||||
consvar_t cv_noresponse = CVAR_INIT ("noresponse", "0", 0, CV_Unsigned, NULL);
|
||||
consvar_t cv_nochallenge = CVAR_INIT ("nochallenge", "0", 0, CV_Unsigned, NULL);
|
||||
consvar_t cv_badresults = CVAR_INIT ("badresults", "0", 0, CV_Unsigned, NULL);
|
||||
consvar_t cv_noresults = CVAR_INIT ("noresults", "0", 0, CV_Unsigned, NULL);
|
||||
#endif
|
||||
|
||||
// engine
|
||||
|
|
@ -867,9 +873,10 @@ static boolean CL_SendJoin(void)
|
|||
}
|
||||
|
||||
#ifdef DEVELOP
|
||||
if (cv_sigfail.value)
|
||||
if (cv_badjoin.value)
|
||||
{
|
||||
CONS_Alert(CONS_WARNING, "SIGFAIL enabled, scrubbing signature from CL_SendJoin\n");
|
||||
CV_AddValue(&cv_badjoin, -1);
|
||||
CONS_Alert(CONS_WARNING, "cv_badjoin enabled, scrubbing signature from CL_SendJoin\n");
|
||||
memset(signature, 0, 64);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -5252,6 +5259,15 @@ static void HandlePacketFromPlayer(SINT8 node)
|
|||
|
||||
netbuffer->packettype = PT_RESPONSEALL;
|
||||
|
||||
#ifdef DEVELOP
|
||||
if (cv_noresponse.value)
|
||||
{
|
||||
CV_AddValue(&cv_noresponse, -1);
|
||||
CONS_Alert(CONS_WARNING, "cv_noresponse enabled, not sending PT_RESPONSEALL\n");
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
memset(&netbuffer->u.responseall, 0, sizeof(netbuffer->u.responseall));
|
||||
|
||||
for (challengeplayers = 0; challengeplayers <= splitscreen; challengeplayers++)
|
||||
|
|
@ -5271,9 +5287,10 @@ static void HandlePacketFromPlayer(SINT8 node)
|
|||
}
|
||||
|
||||
#ifdef DEVELOP
|
||||
if (cv_sigfail.value)
|
||||
if (cv_badresponse.value)
|
||||
{
|
||||
CONS_Alert(CONS_WARNING, "SIGFAIL enabled, scrubbing signature from PT_RESPONSEALL\n");
|
||||
CV_AddValue(&cv_badresponse, -1);
|
||||
CONS_Alert(CONS_WARNING, "cv_badresponse enabled, scrubbing signature from PT_RESPONSEALL\n");
|
||||
memset(signature, 0, 64);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -5308,9 +5325,9 @@ static void HandlePacketFromPlayer(SINT8 node)
|
|||
players[targetplayer].public_key, lastChallengeAll, sizeof(lastChallengeAll)))
|
||||
{
|
||||
CONS_Alert(CONS_WARNING, "Invalid PT_RESPONSEALL from node %d player %d split %d\n", node, targetplayer, responseplayer);
|
||||
if (node != -1 && node != 0) // NO IDEA.
|
||||
if (playernode[targetplayer] != 0) // NO IDEA.
|
||||
{
|
||||
SendKick(node, KICK_MSG_SIGFAIL);
|
||||
SendKick(targetplayer, KICK_MSG_SIGFAIL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -5328,6 +5345,8 @@ static void HandlePacketFromPlayer(SINT8 node)
|
|||
uint8_t allzero[64];
|
||||
memset(allzero, 0, sizeof(allzero));
|
||||
|
||||
CONS_Printf("Got PT_RESULTSALL\n");
|
||||
|
||||
if (demo.playback)
|
||||
break;
|
||||
|
||||
|
|
@ -5337,6 +5356,8 @@ static void HandlePacketFromPlayer(SINT8 node)
|
|||
if (!expectChallenge)
|
||||
break;
|
||||
|
||||
CONS_Printf("Checking PT_RESULTSALL\n");
|
||||
|
||||
for (resultsplayer = 0; resultsplayer < MAXPLAYERS; resultsplayer++)
|
||||
{
|
||||
if (!playeringame[resultsplayer])
|
||||
|
|
@ -5376,6 +5397,7 @@ static void HandlePacketFromPlayer(SINT8 node)
|
|||
}
|
||||
}
|
||||
}
|
||||
csprng(lastChallengeAll, sizeof(lastChallengeAll));
|
||||
expectChallenge = false;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -6201,6 +6223,15 @@ static void UpdateChallenges(void)
|
|||
{
|
||||
netbuffer->packettype = PT_CHALLENGEALL;
|
||||
|
||||
#ifdef DEVELOP
|
||||
if (cv_nochallenge.value)
|
||||
{
|
||||
CV_AddValue(&cv_nochallenge, -1);
|
||||
CONS_Alert(CONS_WARNING, "cv_nochallenge enabled, not sending PT_CHALLENGEALL\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Random noise so it's difficult to reuse the response
|
||||
// Current time so that difficult to reuse the challenge (TODO: ACTUALLY DO THIS)
|
||||
csprng(netbuffer->u.serverchallenge.secret, sizeof(netbuffer->u.serverchallenge.secret));
|
||||
|
|
@ -6221,10 +6252,39 @@ static void UpdateChallenges(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (Playing() && (leveltime == CHALLENGEALL_SERVERCUTOFF))
|
||||
if (Playing() && (leveltime == CHALLENGEALL_KICKUNRESPONSIVE))
|
||||
{
|
||||
uint8_t allZero[64];
|
||||
memset(allZero, 0, sizeof(allZero));
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i])
|
||||
continue;
|
||||
if (memcmp(lastReceivedSignature[i], allZero, sizeof(allZero)) == 0) // We never got a response!
|
||||
{
|
||||
if (!IsPlayerGuest(i))
|
||||
{
|
||||
CONS_Printf("We never got a response from player %d, goodbye\n", i);
|
||||
SendKick(i, KICK_MSG_SIGFAIL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Playing() && (leveltime == CHALLENGEALL_SENDRESULTS))
|
||||
{
|
||||
netbuffer->packettype = PT_RESULTSALL;
|
||||
|
||||
#ifdef DEVELOP
|
||||
if (cv_noresults.value)
|
||||
{
|
||||
CV_AddValue(&cv_noresults, -1);
|
||||
CONS_Alert(CONS_WARNING, "cv_noresults enabled, not sending PT_RESULTSALL\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
uint8_t allZero[64];
|
||||
memset(allZero, 0, sizeof(allZero));
|
||||
memset(&netbuffer->u.resultsall, 0, sizeof(netbuffer->u.resultsall));
|
||||
|
|
@ -6235,16 +6295,20 @@ static void UpdateChallenges(void)
|
|||
continue;
|
||||
if (memcmp(lastReceivedSignature[i], allZero, sizeof(allZero)) == 0) // We never got a response!
|
||||
{
|
||||
if (!IsPlayerGuest(i))
|
||||
{
|
||||
CONS_Printf("We never got a response from player %d, goodbye\n", i);
|
||||
//SendKick(i, KICK_MSG_SIGFAIL);
|
||||
}
|
||||
CONS_Alert(CONS_WARNING, "Unreceived signature for player %d, who is still in-game\n", i);
|
||||
}
|
||||
else
|
||||
{
|
||||
CONS_Printf("Player %d passed checkall and has key %s, adding...\n", i, GetPrettyRRID(players[i].public_key, true));
|
||||
memcpy(netbuffer->u.resultsall.signature[i], lastReceivedSignature[i], sizeof(netbuffer->u.resultsall.signature[i]));
|
||||
#ifdef DEVELOP
|
||||
if (cv_badresults.value)
|
||||
{
|
||||
CV_AddValue(&cv_badresults, -1);
|
||||
CONS_Alert(CONS_WARNING, "cv_badresults enabled, scrubbing signature from PT_RESULTSALL\n");
|
||||
memset(netbuffer->u.resultsall.signature[i], 0, sizeof(netbuffer->u.resultsall.signature[i]));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -492,8 +492,9 @@ extern boolean expectChallenge;
|
|||
// We give clients a chance to verify each other once per race.
|
||||
// When is that challenge sent, and when should clients bail if they don't receive the responses?
|
||||
#define CHALLENGEALL_START (TICRATE*10)
|
||||
#define CHALLENGEALL_SERVERCUTOFF (TICRATE*12)
|
||||
#define CHALLENGEALL_CLIENTCUTOFF (TICRATE*14)
|
||||
#define CHALLENGEALL_KICKUNRESPONSIVE (TICRATE*12)
|
||||
#define CHALLENGEALL_SENDRESULTS (TICRATE*14)
|
||||
#define CHALLENGEALL_CLIENTCUTOFF (TICRATE*16)
|
||||
|
||||
void Command_Ping_f(void);
|
||||
extern tic_t connectiontimeout;
|
||||
|
|
@ -519,7 +520,13 @@ extern consvar_t cv_discordinvites;
|
|||
extern consvar_t cv_allowguests;
|
||||
|
||||
#ifdef DEVELOP
|
||||
extern consvar_t cv_sigfail;
|
||||
extern consvar_t cv_badjoin;
|
||||
extern consvar_t cv_badtraffic;
|
||||
extern consvar_t cv_badresponse;
|
||||
extern consvar_t cv_noresponse;
|
||||
extern consvar_t cv_nochallenge;
|
||||
extern consvar_t cv_badresults;
|
||||
extern consvar_t cv_noresults;
|
||||
#endif
|
||||
|
||||
// Used in d_net, the only dependence
|
||||
|
|
|
|||
|
|
@ -1047,9 +1047,10 @@ boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlen
|
|||
}
|
||||
|
||||
#ifdef DEVELOP
|
||||
if (cv_sigfail.value)
|
||||
if (cv_badtraffic.value)
|
||||
{
|
||||
CONS_Alert(CONS_WARNING, "SIGFAIL enabled, scrubbing signature from HSendPacket\n");
|
||||
CV_AddValue(&cv_badtraffic, -1);
|
||||
CONS_Alert(CONS_WARNING, "cv_badtraffic enabled, scrubbing signature from HSendPacket\n");
|
||||
memset(netbuffer->signature, 0, sizeof(netbuffer->signature));
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -949,7 +949,13 @@ void D_RegisterClientCommands(void)
|
|||
CV_RegisterVar(&cv_allowguests);
|
||||
|
||||
#ifdef DEVELOP
|
||||
CV_RegisterVar(&cv_sigfail);
|
||||
CV_RegisterVar(&cv_badjoin); // implemented
|
||||
CV_RegisterVar(&cv_badtraffic); // implemented
|
||||
CV_RegisterVar(&cv_badresponse); // implemented
|
||||
CV_RegisterVar(&cv_noresponse);
|
||||
CV_RegisterVar(&cv_nochallenge); // implemented
|
||||
CV_RegisterVar(&cv_badresults); // implemented
|
||||
CV_RegisterVar(&cv_noresults); // implemented
|
||||
#endif
|
||||
|
||||
// HUD
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue