From 584e12ed3784b8bfcd1386ac517fe6b07a359704 Mon Sep 17 00:00:00 2001 From: Gregor Richards <hg-yff@gregor.im> Date: Fri, 18 Aug 2017 14:13:39 -0400 Subject: [PATCH] Fix disconnection not fully deinitializing Netplay. --- network/netplay/netplay_frontend.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/network/netplay/netplay_frontend.c b/network/netplay/netplay_frontend.c index 6cfa790268..49026cb10f 100644 --- a/network/netplay/netplay_frontend.c +++ b/network/netplay/netplay_frontend.c @@ -57,6 +57,8 @@ static unsigned server_port_deferred = 0; static int reannounce = 0; static bool is_mitm = false; +bool netplay_disconnect(netplay_t *netplay); + /** * netplay_is_alive: * @netplay : pointer to netplay object @@ -825,6 +827,13 @@ bool netplay_pre_frame(netplay_t *netplay) sync_stalled = !netplay_sync_pre_frame(netplay); + /* If we're disconnected, deinitialize */ + if (!netplay->is_server && !netplay->connections[0].active) + { + netplay_disconnect(netplay); + return true; + } + if (sync_stalled || ((!netplay->is_server || netplay->connected_players) && (netplay->stall || netplay->remote_paused))) @@ -860,6 +869,10 @@ void netplay_post_frame(netplay_t *netplay) false)) netplay_hangup(netplay, connection); } + + /* If we're disconnected, deinitialize */ + if (!netplay->is_server && !netplay->connections[0].active) + netplay_disconnect(netplay); } /**