From 74673b8e1bc128fa2e05e1b329a5b101b0c59e68 Mon Sep 17 00:00:00 2001
From: Hanicef <gustaf@hanicef.me>
Date: Mon, 26 Feb 2024 22:11:52 +0100
Subject: [PATCH] Fix banlist being cleared if server fails to start

---
 src/netcode/commands.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/netcode/commands.c b/src/netcode/commands.c
index 46dfbc741d..f3bbc8a861 100644
--- a/src/netcode/commands.c
+++ b/src/netcode/commands.c
@@ -41,6 +41,8 @@ typedef struct banreason_s
 static banreason_t *reasontail = NULL; //last entry, use prev
 static banreason_t *reasonhead = NULL; //1st entry, use next
 
+static boolean bans_loaded = false;
+
 void Ban_Add(const char *reason)
 {
 	banreason_t *reasonlist = malloc(sizeof(*reasonlist));
@@ -85,6 +87,8 @@ void Ban_Load_File(boolean warning)
 	if (!I_ClearBans)
 		return;
 
+	bans_loaded = true;
+
 	f = fopen(va("%s"PATHSEP"%s", srb2home, "ban.txt"), "r");
 
 	if (!f)
@@ -124,6 +128,12 @@ void D_SaveBan(void)
 	const char *address, *mask;
 	const char *path = va("%s"PATHSEP"%s", srb2home, "ban.txt");
 
+	if (!bans_loaded)
+	{
+		// don't save bans if they were never loaded.
+		return;
+	}
+
 	if (!reasonhead)
 	{
 		remove(path);
-- 
GitLab