From b148c4114708994a4ab7ab05ac1ce7016ebd8b96 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Tue, 31 Jan 2017 09:04:40 +0100 Subject: [PATCH] Another portion of pointless fixes for network issue debugging --- ArchiSteamFarm/Bot.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index d7ce20761..a49398f80 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -184,6 +184,7 @@ namespace ArchiSteamFarm { CallbackManager.Subscribe(OnFreeLicense); CallbackManager.Subscribe(OnGuestPassList); CallbackManager.Subscribe(OnLicenseList); + CallbackManager.Subscribe(OnPICSProductInfo); SteamFriends = SteamClient.GetHandler(); CallbackManager.Subscribe(OnChatInvite); @@ -770,11 +771,12 @@ namespace ArchiSteamFarm { TimeSpan timeSpan = TimeSpan.FromMilliseconds(CallbackSleep); while (KeepRunning || SteamClient.IsConnected) { if (!CallbackSemaphore.Wait(0)) { + ArchiLogger.LogGenericDebug(string.Format(Strings.WarningFailedWithError, nameof(CallbackSemaphore))); return; } try { - CallbackManager.RunWaitCallbacks(timeSpan); + CallbackManager.RunWaitAllCallbacks(timeSpan); } catch (Exception e) { ArchiLogger.LogGenericException(e); } finally { @@ -811,12 +813,16 @@ namespace ArchiSteamFarm { HeartBeatFailures = 0; Statistics?.OnHeartBeat().Forget(); - } catch { + } catch (Exception e) { + if (Debugging.IsDebugBuild || Program.GlobalConfig.Debug) { + ArchiLogger.LogGenericDebugException(e); + } + if (!KeepRunning || !IsConnectedAndLoggedOn || (HeartBeatFailures == byte.MaxValue)) { return; } - if (++HeartBeatFailures > (byte) Math.Ceiling(Program.GlobalConfig.ConnectionTimeout / 10.0)) { + if (++HeartBeatFailures >= (byte) Math.Ceiling(Program.GlobalConfig.ConnectionTimeout / 4.0)) { HeartBeatFailures = byte.MaxValue; ArchiLogger.LogGenericWarning(Strings.BotConnectionLost); Connect(true).Forget(); @@ -1541,6 +1547,12 @@ namespace ArchiSteamFarm { } } + private void OnPICSProductInfo(SteamApps.PICSProductInfoCallback callback) { + if (callback == null) { + ArchiLogger.LogNullError(nameof(callback)); + } + } + private void OnPlayingSessionState(ArchiHandler.PlayingSessionStateCallback callback) { if (callback == null) { ArchiLogger.LogNullError(nameof(callback));