diff options
Diffstat (limited to 'src/sv_main.c')
-rw-r--r-- | src/sv_main.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/sv_main.c b/src/sv_main.c index 6aa15fd..ab0a43d 100644 --- a/src/sv_main.c +++ b/src/sv_main.c @@ -1278,19 +1278,21 @@ static void SV_PacketEvent( void ) { netchan->remote_address.port = net_from.port; } - if( netchan->Process( netchan ) ) { - // this is a valid, sequenced packet, so process it - if( client->state != cs_zombie ) { - //if( client->state != cs_assigned ) { - client->lastmessage = svs.realtime; // don't timeout - //} + if( !netchan->Process( netchan ) ) + break; + + if( client->state == cs_zombie ) + break; + + // this is a valid, sequenced packet, so process it + client->lastmessage = svs.realtime; // don't timeout #if USE_ICMP - client->unreachable = qfalse; // don't drop + client->unreachable = qfalse; // don't drop #endif - SV_ExecuteClientMessage( client ); - } - } + if( netchan->dropped > 0 ) + client->frameflags |= FF_CLIENTDROP; + SV_ExecuteClientMessage( client ); break; } } |