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: