diff --git a/src/network/netconnect.cpp b/src/network/netconnect.cpp
index 0dd75c9d6..bbe2ed384 100644
--- a/src/network/netconnect.cpp
+++ b/src/network/netconnect.cpp
@@ -1106,6 +1106,26 @@ local void ClientParseAreYouThere(
     NetworkSendICMessage(NetworkServerIP, htons(NetworkServerPort), &message);
 }
 
+/**
+**	FIXME: docu
+**
+**	@param msg	message received
+*/
+local void ClientParseBadMap(
+	const InitMessage* msg __attribute__((unused)))
+{
+    int i;
+    InitMessage message;
+
+    message.Type = MessageInitHello;
+    message.SubType = ICMSeeYou;
+    // Spew out 5 and trust in God that they arrive
+    for (i = 0; i < 5; i++) {
+	NetworkSendICMessage(NetworkServerIP, htons(NetworkServerPort), &message);
+    }
+    NetConnectRunning = 0;	// End the menu..
+}
+
 /**
 **	FIXME: docu
 **
@@ -1642,6 +1662,10 @@ local void NetworkParseMenuPacket(const InitMessage *msg, int size)
 		    ClientParseGoAhead(msg);
 		    break;
 
+		case ccs_badmap:
+		    ClientParseBadMap(msg);
+		    break;
+
 		default:
 		    DebugLevel0Fn("Client: Unhandled state %d\n" _C_ NetLocalState);
 		    break;
@@ -1675,6 +1699,7 @@ local void NetworkParseMenuPacket(const InitMessage *msg, int size)
 		ServerParseState(msg);
 		break;
 
+	    case ICMMapUidMismatch:
 	    case ICMGoodBye:
 		ServerParseGoodBye();
 		break;
diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index e07326221..eab4004e2 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -2468,6 +2468,12 @@ local void TerminateNetConnect(void)
 	    menu->items[1].d.text.text = "Incompatible engine version.";
 	    ProcessMenu("menu-net-error", 1);
 
+	    NetConnectingCancel();
+	    return;
+	case ccs_badmap:
+	    menu->items[1].d.text.text = "Map not available.";
+	    ProcessMenu("menu-net-error", 1);
+
 	    NetConnectingCancel();
 	    return;
 	case ccs_incompatiblenetwork: