Merge remote-tracking branch 'ab9rf/remoteserver-4040' into myk_remote_server

develop
Myk Taylor 2023-11-20 00:05:11 -08:00
commit 66120a8c6a
No known key found for this signature in database
1 changed files with 6 additions and 3 deletions

@ -80,7 +80,7 @@ namespace {
struct BlockedException : std::exception { struct BlockedException : std::exception {
const char* what() const noexcept override const char* what() const noexcept override
{ {
return "Core has blocked all connection. This should have been catched."; return "Core has blocked all connection. This should have been caught.";
} }
}; };
} }
@ -478,23 +478,26 @@ void ServerMainImpl::threadFn(std::promise<bool> promise, int port)
CActiveSocket *client = nullptr; CActiveSocket *client = nullptr;
try { try {
for (int acceptFail = 0 ; server.socket.IsSocketValid() && acceptFail < 5 ; acceptFail++) for (int acceptFail = 0; server.socket.IsSocketValid() && acceptFail < 5; acceptFail++)
{ {
if ((client = server.socket.Accept()) != NULL) if ((client = server.socket.Accept()) != NULL)
{ {
BlockGuard lock; BlockGuard lock;
ServerConnection::Accepted(client); ServerConnection::Accepted(client);
client = nullptr; client = nullptr;
acceptFail = 0;
} }
else else
{ {
WARN(socket).print("Connection failure: %s (%d of %d)\n", server.socket.DescribeError(), acceptFail + 1, 5); WARN(socket).print("Connection failure: %s (%d of %d)\n", server.socket.DescribeError(), acceptFail + 1, 5);
} }
} }
} catch(BlockedException &) { }
catch (BlockedException&) {
if (client) if (client)
client->Close(); client->Close();
delete client; delete client;
WARN(socket).print("Connection failure: unexpectedly blocked");
} }
if (server.socket.IsSocketValid()) if (server.socket.IsSocketValid())