diff --git a/src/hms123311.c b/src/hms123311.c
index 10fdf6b961451c392837029713e77b8b6594908c..d9d4fa2f8e3d4750c122582548589b77d9b3a26a 100644
--- a/src/hms123311.c
+++ b/src/hms123311.c
@@ -143,7 +143,7 @@ HMS_in_use (void)
 }
 
 void
-HMS_fetch_rooms (void)
+HMS_fetch_rooms (int joining)
 {
 	struct HMS_buffer *hms;
 	char *p;
@@ -179,12 +179,17 @@ HMS_fetch_rooms (void)
 				break;
 		}
 
-		room_list[i].header.buffer[0] = 1;
-		room_list[i].id = 0;
-		strcpy(room_list[i].name, "All");
-		strcpy(room_list[i].motd, "Wildcard.");
+		if (joining)
+		{
+			room_list[i].header.buffer[0] = 1;
+			room_list[i].id = 0;
+			strcpy(room_list[i].name, "All");
+			strcpy(room_list[i].motd, "Wildcard.");
+
+			i++;
+		}
 
-		room_list[i + 1].header.buffer[0] = 0;
+		room_list[i].header.buffer[0] = 0;
 	}
 	HMS_end(hms);
 }
diff --git a/src/mserv.c b/src/mserv.c
index f43468e664f0ef48f2ec740e89f94e53a514bfda..c493ed4dcac502718593b828800c938b6ea9f92d 100644
--- a/src/mserv.c
+++ b/src/mserv.c
@@ -70,7 +70,7 @@
 
 /* HTTP */
 int  HMS_in_use (void);
-void HMS_fetch_rooms (void);
+void HMS_fetch_rooms (int joining);
 int  HMS_register (void);
 void HMS_unlist (void);
 void HMS_update (void);
@@ -515,7 +515,7 @@ INT32 GetRoomsList(boolean hosting)
 
 	if (HMS_in_use())
 	{
-		HMS_fetch_rooms();
+		HMS_fetch_rooms( ! hosting );
 		return 1;
 	}