diff --git a/Facepunch.Steamworks.Test/ServerlistTest.cs b/Facepunch.Steamworks.Test/ServerlistTest.cs index 5a06d77..3418499 100644 --- a/Facepunch.Steamworks.Test/ServerlistTest.cs +++ b/Facepunch.Steamworks.Test/ServerlistTest.cs @@ -69,6 +69,27 @@ public async Task ServerListInternet() } } + // Used to reproduce steam serverlist stopping querying after ~10s around august 2023 + [TestMethod] + public async Task RustServerListTest() + { + using ( var list = new ServerList.Internet() ) + { + list.AddFilter( "secure", "1" ); + list.AddFilter( "and", "1" ); + list.AddFilter( "gametype", "v2405" ); + list.AddFilter( "appid", "252490" ); + list.AddFilter( "gamedir", "rust" ); + list.AddFilter( "empty", "1" ); + + var success = await list.RunQueryAsync( 90 ); + + Console.WriteLine( $"success {success}" ); + Console.WriteLine( $"Found {list.Responsive.Count} Responsive Servers" ); + Console.WriteLine( $"Found {list.Unresponsive.Count} Unresponsive Servers" ); + } + } + [TestMethod] public async Task SourceQuery() { diff --git a/Facepunch.Steamworks/ServerList/Base.cs b/Facepunch.Steamworks/ServerList/Base.cs index 41f8624..3a6cfbd 100644 --- a/Facepunch.Steamworks/ServerList/Base.cs +++ b/Facepunch.Steamworks/ServerList/Base.cs @@ -41,6 +41,7 @@ public abstract class Base : IDisposable /// public List Unresponsive = new List(); + public List Unqueried = new List(); public Base() { @@ -176,8 +177,10 @@ void MovePendingToUnresponsive() { watchList.RemoveAll( x => { - var info = Internal.GetServerDetails( request, x ); - OnServer( ServerInfo.From( info ), info.HadSuccessfulResponse ); + var details = Internal.GetServerDetails( request, x ); + var info = ServerInfo.From( details ); + info.Ping = int.MaxValue; + Unqueried.Add( info ); return true; } ); } @@ -194,4 +197,4 @@ private void OnServer( ServerInfo serverInfo, bool responded ) Unresponsive.Add( serverInfo ); } } -} \ No newline at end of file +}