diff --git a/Source/dvlnet/base.cpp b/Source/dvlnet/base.cpp index 2294bc940..9bc2a6e6c 100644 --- a/Source/dvlnet/base.cpp +++ b/Source/dvlnet/base.cpp @@ -155,6 +155,10 @@ tl::expected base::HandleDisconnect(packet &pkt) tl::expected base::HandleEchoRequest(packet &pkt) { + // If we have already left the game, + // there is no need to respond to echoes + if (plr_self == PLR_BROADCAST) return {}; + return pkt.Time() .and_then([&](cookie_t &&pktTime) { return pktfty->make_packet(plr_self, pkt.Source(), pktTime); @@ -168,6 +172,7 @@ tl::expected base::HandleEchoReply(packet &pkt) { const uint32_t now = SDL_GetTicks(); plr_t src = pkt.Source(); + if (src >= MAX_PLRS) return {}; return pkt.Time().transform([&](cookie_t &&pktTime) { PlayerState &playerState = playerStateTable_[src]; playerState.roundTripLatency = now - pktTime;