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));