diff --git a/Assets/Mirage/Runtime/NetworkClient.cs b/Assets/Mirage/Runtime/NetworkClient.cs
index f7744d7b105..e381f77dbe0 100644
--- a/Assets/Mirage/Runtime/NetworkClient.cs
+++ b/Assets/Mirage/Runtime/NetworkClient.cs
@@ -72,15 +72,10 @@ public class NetworkClient : MonoBehaviour, INetworkClient
public readonly NetworkTime Time = new NetworkTime();
- ///
- /// The host server
- ///
- internal NetworkServer hostServer;
-
///
/// NetworkClient can connect to local server in host mode too
///
- public bool IsLocalClient => hostServer != null;
+ public bool IsLocalClient {get; private set; }
///
/// Connect client to a NetworkServer instance.
@@ -165,7 +160,7 @@ internal void ConnectHost(NetworkServer server)
(IConnection c1, IConnection c2) = PipeConnection.CreatePipe();
server.SetLocalConnection(this, c2);
- hostServer = server;
+ IsLocalClient = true;
Connection = GetNewConnection(c1);
RegisterHostHandlers();
@@ -283,7 +278,7 @@ void Cleanup()
{
logger.Log("Shutting down client.");
- hostServer = null;
+ IsLocalClient = false;
connectState = ConnectState.Disconnected;
diff --git a/Assets/Tests/Runtime/Host/NetworkClientTest.cs b/Assets/Tests/Runtime/Host/NetworkClientTest.cs
index 29816e79a46..159ac87a5ed 100644
--- a/Assets/Tests/Runtime/Host/NetworkClientTest.cs
+++ b/Assets/Tests/Runtime/Host/NetworkClientTest.cs
@@ -47,5 +47,19 @@ public void ConnectionClearHandlersTest()
Assert.That(clientConn.messageHandlers.Count == 0);
}
+
+ [Test]
+ public void IsLocalClientHostTest()
+ {
+ Assert.That(client.IsLocalClient, Is.True);
+ }
+
+ [UnityTest]
+ public IEnumerator IsLocalClientShutdownTest() => UniTask.ToCoroutine(async () =>
+ {
+ client.Disconnect();
+
+ await AsyncUtil.WaitUntilWithTimeout(() => !client.IsLocalClient);
+ });
}
}