From 7276350f7437c07cd1f5039b93030e4fb298153c Mon Sep 17 00:00:00 2001 From: JustArchi Date: Tue, 22 Mar 2016 08:53:55 +0100 Subject: [PATCH] Fix rare restart issue --- ArchiSteamFarm/ArchiWebHandler.cs | 2 +- ArchiSteamFarm/Bot.cs | 8 ++++++-- ArchiSteamFarm/CardsFarmer.cs | 12 +++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index fb56d0a11..f4cb73bb5 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -148,7 +148,7 @@ namespace ArchiSteamFarm { bool? isLoggedIn = await IsLoggedIn().ConfigureAwait(false); if (isLoggedIn.HasValue && !isLoggedIn.Value) { Logging.LogGenericInfo("Reconnecting because our sessionID expired!", Bot.BotName); - Task.Run(async () => await Bot.Restart().ConfigureAwait(false)).Forget(); + Task.Run(async () => await Bot.RestartIfRunning().ConfigureAwait(false)).Forget(); return true; } diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 9ee191cd5..ffbd09788 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -303,7 +303,11 @@ namespace ArchiSteamFarm { } } - internal async Task Restart() { + internal async Task RestartIfRunning() { + if (!SteamClient.IsConnected) { + return; + } + await Stop().ConfigureAwait(false); await Start().ConfigureAwait(false); } @@ -1563,7 +1567,7 @@ namespace ArchiSteamFarm { } if (!await ArchiWebHandler.Init(SteamClient, callback.WebAPIUserNonce, BotConfig.SteamParentalPIN).ConfigureAwait(false)) { - await Restart().ConfigureAwait(false); + await RestartIfRunning().ConfigureAwait(false); return; } diff --git a/ArchiSteamFarm/CardsFarmer.cs b/ArchiSteamFarm/CardsFarmer.cs index 126df549f..1013c18a7 100755 --- a/ArchiSteamFarm/CardsFarmer.cs +++ b/ArchiSteamFarm/CardsFarmer.cs @@ -42,7 +42,7 @@ namespace ArchiSteamFarm { private readonly Bot Bot; private readonly Timer Timer; - private bool ManualMode, NowFarming; + private volatile bool ManualMode, NowFarming; internal CardsFarmer(Bot bot) { if (bot == null) { @@ -178,10 +178,16 @@ namespace ArchiSteamFarm { Logging.LogGenericInfo("Sending signal to stop farming", Bot.BotName); FarmResetEvent.Set(); - for (byte i = 0; i < 5 && NowFarming; i++) { - Logging.LogGenericInfo("Waiting for reaction...", Bot.BotName); + + Logging.LogGenericInfo("Waiting for reaction...", Bot.BotName); + for (byte i = 0; i < Program.GlobalConfig.HttpTimeout && NowFarming; i++) { await Utilities.SleepAsync(1000).ConfigureAwait(false); } + + if (NowFarming) { + Logging.LogGenericWarning("Timed out!", Bot.BotName); + } + FarmResetEvent.Reset(); Logging.LogGenericInfo("Farming stopped!", Bot.BotName); Semaphore.Release();