+ SDLNet_Write32(server_host, &ip.host);
+ SDLNet_Write16(port, &ip.port);
+
+ DrawNetworkText("Connecting to local host ...");
+ }
+
+ Error(ERR_DEBUG, "trying to connect to network server at %d.%d.%d.%d ...",
+ (server_host >> 24) & 0xff,
+ (server_host >> 16) & 0xff,
+ (server_host >> 8) & 0xff,
+ (server_host >> 0) & 0xff);
+
+ sfd = SDLNet_TCP_Open(&ip);
+
+ if (sfd)
+ {
+ SDLNet_TCP_AddSocket(rfds, sfd);
+
+ DrawNetworkText_Success("Successfully connected!");
+
+ return TRUE;
+ }
+ else
+ {
+ DrawNetworkText_Failed("Failed to connect to network server!");
+
+ printf("SDLNet_TCP_Open(): %s\n", SDLNet_GetError());
+ }
+
+ if (hostname) /* connect to specified server failed */
+ return FALSE;
+
+ DrawNetworkText("Starting new local network server ...");
+
+ StartNetworkServer(port);
+
+ /* wait for server to start up and try connecting several times */
+ for (i = 0; i < 30; i++)
+ {
+ if ((sfd = SDLNet_TCP_Open(&ip))) /* connected */
+ {
+ DrawNetworkText_Success("Successfully connected!");
+
+ SDLNet_TCP_AddSocket(rfds, sfd);
+ return TRUE;
+ }
+
+ Delay_WithScreenUpdates(100);
+ }
+
+ DrawNetworkText_Failed("Failed to connect to network server!");
+
+ /* when reaching this point, connect to newly started server has failed */
+ return FALSE;