about summary refs log tree commit diff
path: root/src/engine/client/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/client/client.c')
-rw-r--r--src/engine/client/client.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/engine/client/client.c b/src/engine/client/client.c
index 3269ab23..847dd8ea 100644
--- a/src/engine/client/client.c
+++ b/src/engine/client/client.c
@@ -377,6 +377,7 @@ static int num_servers = 0;
 static int num_server_capacity = 0;
 
 static int sorthash = 0;
+static char filterstring[64] = {0};
 
 static int serverlist_lan = 1;
 
@@ -461,6 +462,11 @@ static void client_serverbrowse_filter()
 			filtered = 1;
 		else if(config.b_filter_pw && serverlist[i]->info.flags&1)
 			filtered = 1;
+		else if(config.b_filter_string[0] != 0)
+		{
+			if(strstr(serverlist[i]->info.name, config.b_filter_string) == 0)
+				filtered = 1;
+		}
 			
 		if(filtered == 0)
 			sorted_serverlist[num_sorted_servers++] = i;
@@ -497,6 +503,7 @@ static void client_serverbrowse_sort()
 	for(i = 0; i < num_sorted_servers; i++)
 		serverlist[sorted_serverlist[i]]->info.sorted_index = i;
 	
+	strncpy(filterstring, config.b_filter_string, sizeof(filterstring)-1); 
 	sorthash = client_serverbrowse_sorthash();
 }
 
@@ -707,7 +714,8 @@ static void client_serverbrowse_update()
 	}
 	
 	/* check if we need to resort */
-	if(sorthash != client_serverbrowse_sorthash())
+	/* TODO: remove the strcmp */
+	if(sorthash != client_serverbrowse_sorthash() || strcmp(filterstring, config.b_filter_string) != 0)
 		client_serverbrowse_sort();
 }