diff options
author | rubidium <rubidium@openttd.org> | 2009-04-10 20:18:48 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-04-10 20:18:48 +0000 |
commit | 2663ad302f366ecd2498a43470855c4cf73839d6 (patch) | |
tree | a6e4b4d85cbe3a6448e01b6ffc8ba0e9efe25b56 /src/network/network.cpp | |
parent | 238742ee036f483f12a84ba7033fc8ef67506201 (diff) | |
download | openttd-2663ad302f366ecd2498a43470855c4cf73839d6.tar.xz |
(svn r16022) -Fix (r15159): sometimes the unregister "query" thread could be delayed so much that the network stuff was already closed and the packet would never reach the master server causing the server to appear online longer than necessary.
Diffstat (limited to 'src/network/network.cpp')
-rw-r--r-- | src/network/network.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp index 3965d8ef7..d2d276495 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -586,7 +586,7 @@ static void NetworkClose() closesocket(s->second); } _listensockets.Clear(); - DEBUG(net, 1, "Closed listener"); + DEBUG(net, 1, "[tcp] closed listeners"); } TCPConnecter::KillAll(); @@ -813,8 +813,11 @@ void NetworkReboot() NetworkClose(); } -/* We want to disconnect from the host/clients */ -void NetworkDisconnect() +/** + * We want to disconnect from the host/clients. + * @param blocking whether to wait till everything has been closed + */ +void NetworkDisconnect(bool blocking) { if (_network_server) { NetworkClientSocket *cs; @@ -824,7 +827,7 @@ void NetworkDisconnect() } } - if (_settings_client.network.server_advertise) NetworkUDPRemoveAdvertise(); + if (_settings_client.network.server_advertise) NetworkUDPRemoveAdvertise(blocking); DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0); @@ -1104,7 +1107,7 @@ void NetworkStartUp() /** This shuts the network down */ void NetworkShutDown() { - NetworkDisconnect(); + NetworkDisconnect(true); NetworkUDPClose(); DEBUG(net, 3, "[core] shutting down network"); |