]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix IPIntel causing frequent errors with the cleanup job. (#34428)
authorMyra <vasilis@pikachu.systems>
Tue, 14 Jan 2025 20:38:26 +0000 (21:38 +0100)
committerGitHub <noreply@github.com>
Tue, 14 Jan 2025 20:38:26 +0000 (21:38 +0100)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
Content.Server/Connection/ConnectionManager.cs
Content.Server/Connection/IPIntel/IPIntel.cs
Content.Server/Database/ServerDbBase.cs

index 927ebf5f6f2b390f07e12ff5cbd046fe76413f3a..ab27553f446464e6744d024756be7b724715c495 100644 (file)
@@ -94,9 +94,16 @@ namespace Content.Server.Connection
                 time = newTime;
         }
 
-        public void Update()
+        public async void Update()
         {
-            _ipintel.Update();
+            try
+            {
+                await _ipintel.Update();
+            }
+            catch (Exception e)
+            {
+                _sawmill.Error("IPIntel update failed:" + e);
+            }
         }
 
         /*
index 033cdb5cd12b03684f4b0598842a10a87f8c0a1c..51a0b74089d01e03b4d5bda853f1446d2b00918e 100644 (file)
@@ -38,6 +38,7 @@ public sealed class IPIntel
         _sawmill = logManager.GetSawmill("ipintel");
 
         cfg.OnValueChanged(CCVars.GameIPIntelEmail, b => _contactEmail = b, true);
+        cfg.OnValueChanged(CCVars.GameIPIntelEnabled, b => _enabled = b, true);
         cfg.OnValueChanged(CCVars.GameIPIntelRejectUnknown, b => _rejectUnknown = b, true);
         cfg.OnValueChanged(CCVars.GameIPIntelRejectBad, b => _rejectBad = b, true);
         cfg.OnValueChanged(CCVars.GameIPIntelRejectRateLimited, b => _rejectLimited = b, true);
@@ -74,6 +75,7 @@ public sealed class IPIntel
 
     // CCVars
     private string? _contactEmail;
+    private bool _enabled;
     private bool _rejectUnknown;
     private bool _rejectBad;
     private bool _rejectLimited;
@@ -273,12 +275,12 @@ public sealed class IPIntel
         return _rejectBad ? (true, Loc.GetString("ipintel-suspicious")) : (false, string.Empty);
     }
 
-    public void Update()
+    public async Task Update()
     {
-        if (_gameTiming.RealTime >= _nextClean)
+        if (_enabled && _gameTiming.RealTime >= _nextClean)
         {
             _nextClean = _gameTiming.RealTime + TimeSpan.FromMinutes(_cleanupMins);
-            _db.CleanIPIntelCache(_cacheDays);
+            await _db.CleanIPIntelCache(_cacheDays);
         }
     }
 
index cedf369d508008d159539cb2caebce0a50ab6e4e..8ab2df88b3c2c6505dce5daeff3f238e0ca6f8c0 100644 (file)
@@ -1774,8 +1774,11 @@ INSERT INTO player_round (players_id, rounds_id) VALUES ({players[player]}, {id}
         {
             await using var db = await GetDb();
 
+            // Calculating this here cause otherwise sqlite whines.
+            var cutoffTime = DateTime.UtcNow.Subtract(range);
+
             await db.DbContext.IPIntelCache
-                .Where(w => DateTime.UtcNow - w.Time >= range)
+                .Where(w => w.Time <= cutoffTime)
                 .ExecuteDeleteAsync();
 
             await db.DbContext.SaveChangesAsync();