Skip to content
Snippets Groups Projects
Commit 4a9387fe authored by Yukita Mayako's avatar Yukita Mayako
Browse files

Trying to fix the crash-on-rehost and failing.

parent 7dda35bc
Branches
No related tags found
No related merge requests found
...@@ -740,6 +740,17 @@ void D_CloseConnection(void) ...@@ -740,6 +740,17 @@ void D_CloseConnection(void)
// good, go away. // good, go away.
case ENET_EVENT_TYPE_DISCONNECT: case ENET_EVENT_TYPE_DISCONNECT:
if (e.peer->data)
{
PeerData *pdata = (PeerData *)e.peer->data;
if (playeringame[nodetoplayer[pdata->node]])
CL_RemovePlayer(nodetoplayer[pdata->node]);
nodetopeer[pdata->node] = NULL;
nodeingame[pdata->node] = false;
nodetoplayer[pdata->node] = -1;
Z_Free(pdata);
e.peer->data = NULL;
}
waiting--; waiting--;
break; break;
...@@ -752,6 +763,16 @@ void D_CloseConnection(void) ...@@ -752,6 +763,16 @@ void D_CloseConnection(void)
break; break;
} }
// clean up the remaining nodes
for (i = 0; i < MAXNETNODES; i++)
if (nodetopeer[i])
{
enet_peer_reset(nodetopeer[i]);
nodetopeer[i] = NULL;
nodeingame[i] = false;
nodetoplayer[i] = -1;
}
// alright, we're finished. // alright, we're finished.
enet_host_destroy(ServerHost); enet_host_destroy(ServerHost);
ServerHost = NULL; ServerHost = NULL;
...@@ -760,8 +781,6 @@ void D_CloseConnection(void) ...@@ -760,8 +781,6 @@ void D_CloseConnection(void)
if (ClientHost) if (ClientHost)
{ {
enet_peer_disconnect(nodetopeer[servernode], DISCONNECT_SHUTDOWN); enet_peer_disconnect(nodetopeer[servernode], DISCONNECT_SHUTDOWN);
nodeingame[servernode] = false;
servernode = 0;
while (enet_host_service(ClientHost, &e, 3000) > 0) while (enet_host_service(ClientHost, &e, 3000) > 0)
{ {
...@@ -783,13 +802,17 @@ void D_CloseConnection(void) ...@@ -783,13 +802,17 @@ void D_CloseConnection(void)
} }
} }
nodeingame[servernode] = false;
nodetopeer[servernode] = NULL;
servernode = 0;
server = true;
enet_host_destroy(ClientHost); enet_host_destroy(ClientHost);
ClientHost = NULL; ClientHost = NULL;
} }
netgame = false; netgame = false;
addedtogame = false; addedtogame = false;
servernode = 0;
net_nodecount = net_playercount = 0; net_nodecount = net_playercount = 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment