Ticket #2240: fix-quit-while-syncing.diff

File fix-quit-while-syncing.diff, 1.1 KB (added by Josh, 10 years ago)

Decently well tested and working patch

  • source/network/NetServer.cpp

     
    563563    session->AddTransition(NSS_PREGAME, (uint)NMT_READY, NSS_PREGAME, (void*)&OnReady, context);
    564564    session->AddTransition(NSS_PREGAME, (uint)NMT_LOADED_GAME, NSS_INGAME, (void*)&OnLoadedGame, context);
    565565
     566    session->AddTransition(NSS_JOIN_SYNCING, (uint)NMT_CONNECTION_LOST, NSS_UNCONNECTED, (void*)&OnDisconnect, context);
    566567    session->AddTransition(NSS_JOIN_SYNCING, (uint)NMT_LOADED_GAME, NSS_INGAME, (void*)&OnJoinSyncingLoadedGame, context);
    567568
    568569    session->AddTransition(NSS_INGAME, (uint)NMT_CONNECTION_LOST, NSS_UNCONNECTED, (void*)&OnDisconnect, context);
     
    601602{
    602603    RemovePlayer(session->GetGUID());
    603604
    604     if (m_ServerTurnManager)
     605    if (m_ServerTurnManager && session->GetCurrState() != NSS_JOIN_SYNCING)
    605606        m_ServerTurnManager->UninitialiseClient(session->GetHostID()); // TODO: only for non-observers
    606607
    607608    // TODO: ought to switch the player controlled by that client