diff -r 1963f2a972d9 src/console_cmds.cpp
--- a/src/console_cmds.cpp	Thu Jun 15 02:22:53 2017 +0300
+++ b/src/console_cmds.cpp	Tue Aug 15 22:38:30 2017 +0300
@@ -890,7 +890,6 @@
 	}

 	if (argc < 2) return false;
-	if (_networking) NetworkDisconnect(); // we are in network-mode, first close it!

 	const char *port = NULL;
 	const char *company = NULL;
@@ -901,18 +900,18 @@

 	ParseConnectionString(&company, &port, ip);

-	IConsolePrintF(CC_DEFAULT, "Connecting to %s...", ip);
 	if (company != NULL) {
 		join_as = (CompanyID)atoi(company);
-		IConsolePrintF(CC_DEFAULT, "    company-no: %d", join_as);

 		/* From a user pov 0 is a new company, internally it's different and all
 		 * companies are offset by one to ease up on users (eg companies 1-8 not 0-7) */
 		if (join_as != COMPANY_SPECTATOR) {
-			if (join_as > MAX_COMPANIES) return false;
 			join_as--;
+			if (join_as < COMPANY_FIRST || join_as >= MAX_COMPANIES) return false;
 		}
 	}
+	IConsolePrintF(CC_DEFAULT, "Connecting to %s...", ip);
+	if (join_as != COMPANY_NEW_COMPANY) IConsolePrintF(CC_DEFAULT, "    company-no: %d", join_as == COMPANY_SPECTATOR ? join_as : join_as + 1);
 	if (port != NULL) {
 		rport = atoi(port);
 		IConsolePrintF(CC_DEFAULT, "    port: %s", port);
diff -r 1963f2a972d9 src/network/network_gui.cpp
--- a/src/network/network_gui.cpp	Thu Jun 15 02:22:53 2017 +0300
+++ b/src/network/network_gui.cpp	Tue Aug 15 22:38:30 2017 +0300
@@ -2101,6 +2101,7 @@
 	{
 		if (StrEmpty(str)) {
 			NetworkDisconnect();
+			_switch_mode = SM_MENU;
 			ShowNetworkGameWindow();
 			return;
 		}
