diff --git a/src/p_setup.c b/src/p_setup.c
index 31c621acb49468ada207b2814d307119a9825c9d..36d7d48d28d21b012d57b2477f4ff954ddb35101 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -7853,8 +7853,8 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate)
 	maptol = mapheaderinfo[gamemap-1]->typeoflevel;
 	gametyperules = gametypedefaultrules[gametype];
 
-	// Set the current hub map
-	if (maptol & TOL_HUB)
+	// Set the current hub map if it was unlocked
+	if ((maptol & TOL_HUB) && !M_MapLocked(gamemap, serverGamedata))
 		currenthubmap = gamemap;
 
 	// clear the target on map change, since the object will be invalidated