diff --git a/src/m_menu.c b/src/m_menu.c
index 7cf099d9a60e3d8fe02e4acbfffd40dd915920af..3243e0fc6694582248b0f9cfebfd99c50902b419 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -6342,15 +6342,18 @@ void M_RefreshPauseMenu(void)
 #endif
 }
 
+boolean firstDismissedRulesThisBoot = true;
+
 void M_PopupMasterServerRules(void)
 {
 #ifdef MASTERSERVER
-	if (cv_advertise.value && (serverrunning || currentMenu == &MP_ServerDef))
+	if (cv_advertise.value && (serverrunning || currentMenu == &MP_ServerDef) && firstDismissedRulesThisBoot)
 	{
 		char *rules = GetMasterServerRules();
 
 		if (rules)
 		{
+			firstDismissedRulesThisBoot = false;
 			M_StartMessage(va("%s\n(press any key)", rules), NULL, MM_NOTHING);
 			Z_Free(rules);
 		}