diff --git a/src/multijoin.c b/src/multijoin.c index a86b965f8..e35695496 100644 --- a/src/multijoin.c +++ b/src/multijoin.c @@ -235,7 +235,11 @@ BOOL MultiPlayerLeave(UDWORD playerIndex) ssprintf(buf, _("%s has Left the Game"), getPlayerName(playerIndex)); - if (NetPlay.isHost) + if (ingame.localJoiningInProgress) + { + clearPlayer(playerIndex, false); + } + else if (NetPlay.isHost) // If hosting, and game has started (not in pre-game lobby screen, that is). { sendPlayerLeft(playerIndex); } diff --git a/src/multiplay.c b/src/multiplay.c index d84082ec0..3e9b80c70 100644 --- a/src/multiplay.c +++ b/src/multiplay.c @@ -846,6 +846,7 @@ BOOL recvMessage(void) break; case GAME_PLAYER_LEFT: recvPlayerLeft(queue); + break; default: processedMessage2 = false; break;