engine: don't bother calculating crc32 for local clients for better performance (thanks @tyabus for the idea)
This commit is contained in:
parent
785632a437
commit
38c82a3f76
2 changed files with 12 additions and 9 deletions
|
@ -825,7 +825,7 @@ static void CL_WritePacket( void )
|
||||||
buf.pData[key] = CRC32_BlockSequence( &buf.pData[key + 1], size, cls.netchan.outgoing_sequence );
|
buf.pData[key] = CRC32_BlockSequence( &buf.pData[key + 1], size, cls.netchan.outgoing_sequence );
|
||||||
COM_Munge( &buf.pData[key + 1], Q_min( size, 255 ), cls.netchan.outgoing_sequence );
|
COM_Munge( &buf.pData[key + 1], Q_min( size, 255 ), cls.netchan.outgoing_sequence );
|
||||||
}
|
}
|
||||||
else
|
else if( !Host_IsLocalClient( ))
|
||||||
{
|
{
|
||||||
int size = MSG_GetRealBytesWritten( &buf ) - key - 1;
|
int size = MSG_GetRealBytesWritten( &buf ) - key - 1;
|
||||||
buf.pData[key] = CRC32_BlockSequence( &buf.pData[key + 1], size, cls.netchan.outgoing_sequence );
|
buf.pData[key] = CRC32_BlockSequence( &buf.pData[key + 1], size, cls.netchan.outgoing_sequence );
|
||||||
|
|
|
@ -3227,7 +3227,7 @@ each of the backup packets.
|
||||||
static void SV_ParseClientMove( sv_client_t *cl, sizebuf_t *msg )
|
static void SV_ParseClientMove( sv_client_t *cl, sizebuf_t *msg )
|
||||||
{
|
{
|
||||||
client_frame_t *frame;
|
client_frame_t *frame;
|
||||||
int key, size, checksum1, checksum2;
|
int key, checksum1;
|
||||||
int i, numbackup, totalcmds, numcmds;
|
int i, numbackup, totalcmds, numcmds;
|
||||||
usercmd_t nullcmd, *to, *from;
|
usercmd_t nullcmd, *to, *from;
|
||||||
usercmd_t cmds[CMD_BACKUP];
|
usercmd_t cmds[CMD_BACKUP];
|
||||||
|
@ -3270,15 +3270,18 @@ static void SV_ParseClientMove( sv_client_t *cl, sizebuf_t *msg )
|
||||||
if( cl->state != cs_spawned )
|
if( cl->state != cs_spawned )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if( !Host_IsLocalClient( ))
|
||||||
|
{
|
||||||
// if the checksum fails, ignore the rest of the packet
|
// if the checksum fails, ignore the rest of the packet
|
||||||
size = MSG_GetRealBytesRead( msg ) - key - 1;
|
int size = MSG_GetRealBytesRead( msg ) - key - 1;
|
||||||
checksum2 = CRC32_BlockSequence( msg->pData + key + 1, size, cl->netchan.incoming_sequence );
|
int checksum2 = CRC32_BlockSequence( msg->pData + key + 1, size, cl->netchan.incoming_sequence );
|
||||||
|
|
||||||
if( checksum2 != checksum1 )
|
if( checksum2 != checksum1 )
|
||||||
{
|
{
|
||||||
Con_Reportf( S_ERROR "%s: failed command checksum for %s (%d != %d)\n", __func__, cl->name, checksum2, checksum1 );
|
Con_Reportf( S_ERROR "%s: failed command checksum for %s (%d != %d)\n", __func__, cl->name, checksum2, checksum1 );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cl->packet_loss = packet_loss;
|
cl->packet_loss = packet_loss;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue