fix crash which could happen when closing an invalid socket

for some reason boost::asio doesn't account for this and lets us simply
die when/if this happens.
This commit is contained in:
Lion Kortlepel
2022-11-14 23:37:54 +01:00
parent 35b38f35bb
commit eaab5eaf30
2 changed files with 7 additions and 0 deletions

View File

@@ -59,7 +59,13 @@ std::string TClient::GetCarPositionRaw(int Ident) {
}
void TClient::Disconnect(std::string_view Reason) {
// we need exclusivity here in case we can't
std::unique_lock Lock(mDisconnectMtx);
beammp_debugf("Disconnecting client {} for reason: {}", GetID(), Reason);
if (mSocket.is_open()) {
beammp_debug("Somehow Disconnect() was called twice, ignoring");
return;
}
boost::system::error_code ec;
mSocket.shutdown(socket_base::shutdown_both, ec);
if (ec) {