From 6a7408472935c7c5812404edc057d047233e6330 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sun, 26 Nov 2017 19:08:48 +0100 Subject: [PATCH] Internal improvements regarding https://github.com/SteamRE/SteamKit/issues/491 It also fixes V3.0.4.6 regression reported in http://steamcommunity.com/groups/ascfarm/discussions/1/1488866180608154465 - even though it's just a workaround for Steam Network issue. --- ArchiSteamFarm/ArchiLogger.cs | 2 +- ArchiSteamFarm/Bot.cs | 62 +++++++++++++++-------------------- ArchiSteamFarm/IPC.cs | 2 +- ArchiSteamFarm/Statistics.cs | 4 +-- ArchiSteamFarm/WebBrowser.cs | 2 +- 5 files changed, 32 insertions(+), 40 deletions(-) diff --git a/ArchiSteamFarm/ArchiLogger.cs b/ArchiSteamFarm/ArchiLogger.cs index 3ea69e6bf..efdec7735 100644 --- a/ArchiSteamFarm/ArchiLogger.cs +++ b/ArchiSteamFarm/ArchiLogger.cs @@ -73,7 +73,7 @@ namespace ArchiSteamFarm { Logger.Debug($"{previousMethodName}() {message}"); } - internal void LogGenericDebugException(Exception exception, [CallerMemberName] string previousMethodName = null) { + internal void LogGenericDebuggingException(Exception exception, [CallerMemberName] string previousMethodName = null) { if (exception == null) { LogNullError(nameof(exception)); return; diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 0221278b9..2bc2e8010 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -203,7 +203,6 @@ namespace ArchiSteamFarm { CallbackManager.Subscribe(OnPersonaState); SteamUser = SteamClient.GetHandler(); - CallbackManager.Subscribe(OnAccountInfo); CallbackManager.Subscribe(OnLoggedOff); CallbackManager.Subscribe(OnLoggedOn); CallbackManager.Subscribe(OnLoginKey); @@ -1237,7 +1236,7 @@ namespace ArchiSteamFarm { HeartBeatFailures = 0; Statistics?.OnHeartBeat().Forget(); } catch (Exception e) { - ArchiLogger.LogGenericDebugException(e); + ArchiLogger.LogGenericDebuggingException(e); if (!KeepRunning || !IsConnectedAndLoggedOn || (HeartBeatFailures == byte.MaxValue)) { return; @@ -1487,38 +1486,6 @@ namespace ArchiSteamFarm { }).Forget(); } - private async void OnAccountInfo(SteamUser.AccountInfoCallback callback) { - if (callback == null) { - ArchiLogger.LogNullError(nameof(callback)); - return; - } - - ArchiHandler.RequestItemAnnouncements(); - - // Sometimes Steam won't send us our own PersonaStateCallback, so request it explicitly - RequestPersonaStateUpdate(); - - InitializeFamilySharing().Forget(); - Statistics?.OnAccountInfo().Forget(); - - if (BotConfig.SteamMasterClanID != 0) { - Task.Run(async () => { - await ArchiWebHandler.JoinGroup(BotConfig.SteamMasterClanID).ConfigureAwait(false); - JoinMasterChat(); - }).Forget(); - } - - if (BotConfig.FarmOffline) { - return; - } - - try { - await SteamFriends.SetPersonaState(EPersonaState.Online); - } catch (Exception e) { - ArchiLogger.LogGenericDebugException(e); - } - } - private void OnChatInvite(SteamFriends.ChatInviteCallback callback) { if ((callback?.ChatRoomID == null) || (callback.PatronID == null)) { ArchiLogger.LogNullError(nameof(callback) + " || " + nameof(callback.ChatRoomID) + " || " + nameof(callback.PatronID)); @@ -1958,7 +1925,32 @@ namespace ArchiSteamFarm { } if (!await ArchiWebHandler.Init(callback.ClientSteamID, SteamClient.Universe, callback.WebAPIUserNonce, BotConfig.SteamParentalPIN, callback.VanityURL).ConfigureAwait(false)) { - await RefreshSession().ConfigureAwait(false); + if (!await RefreshSession().ConfigureAwait(false)) { + break; + } + } + + ArchiHandler.RequestItemAnnouncements(); + + // Sometimes Steam won't send us our own PersonaStateCallback, so request it explicitly + RequestPersonaStateUpdate(); + + InitializeFamilySharing().Forget(); + Statistics?.OnLoggedOn().Forget(); + + if (BotConfig.SteamMasterClanID != 0) { + Task.Run(async () => { + await ArchiWebHandler.JoinGroup(BotConfig.SteamMasterClanID).ConfigureAwait(false); + JoinMasterChat(); + }).Forget(); + } + + if (!BotConfig.FarmOffline) { + try { + await SteamFriends.SetPersonaState(EPersonaState.Online); + } catch (Exception) { + // TODO: We intentionally ignore this exception since SteamFriends.SetPersonaState() task seems to always throw TaskCanceledException, https://github.com/SteamRE/SteamKit/issues/491 + } } break; diff --git a/ArchiSteamFarm/IPC.cs b/ArchiSteamFarm/IPC.cs index 43a1a7f86..85abd7b2b 100644 --- a/ArchiSteamFarm/IPC.cs +++ b/ArchiSteamFarm/IPC.cs @@ -138,7 +138,7 @@ namespace ArchiSteamFarm { context.Response.ContentLength64 = response.Length; await context.Response.OutputStream.WriteAsync(response, 0, response.Length).ConfigureAwait(false); } catch (Exception e) { - ASF.ArchiLogger.LogGenericDebugException(e); + ASF.ArchiLogger.LogGenericDebuggingException(e); } } diff --git a/ArchiSteamFarm/Statistics.cs b/ArchiSteamFarm/Statistics.cs index 17289229a..2cf32659e 100644 --- a/ArchiSteamFarm/Statistics.cs +++ b/ArchiSteamFarm/Statistics.cs @@ -48,8 +48,6 @@ namespace ArchiSteamFarm { public void Dispose() => RequestsSemaphore.Dispose(); - internal async Task OnAccountInfo() => await Bot.ArchiWebHandler.JoinGroup(SharedInfo.ASFGroupSteamID).ConfigureAwait(false); - internal async Task OnHeartBeat() { // Request persona update if needed if ((DateTime.UtcNow > LastPersonaStateRequest.AddHours(MinPersonaStateTTL)) && (DateTime.UtcNow > LastAnnouncementCheck.AddHours(MinAnnouncementCheckTTL))) { @@ -83,6 +81,8 @@ namespace ArchiSteamFarm { } } + internal async Task OnLoggedOn() => await Bot.ArchiWebHandler.JoinGroup(SharedInfo.ASFGroupSteamID).ConfigureAwait(false); + internal async Task OnPersonaState(SteamFriends.PersonaStateCallback callback) { if (callback == null) { ASF.ArchiLogger.LogNullError(nameof(callback)); diff --git a/ArchiSteamFarm/WebBrowser.cs b/ArchiSteamFarm/WebBrowser.cs index a65fa751a..2ad915a4a 100644 --- a/ArchiSteamFarm/WebBrowser.cs +++ b/ArchiSteamFarm/WebBrowser.cs @@ -470,7 +470,7 @@ namespace ArchiSteamFarm { try { responseMessage = await HttpClient.SendAsync(requestMessage).ConfigureAwait(false); } catch (Exception e) { - ArchiLogger.LogGenericDebugException(e); + ArchiLogger.LogGenericDebuggingException(e); return null; } }