shithub: choc

Download patch

ref: ff6493e0efe1c7ea628d8a6b596f915d9c9764e1
parent: 7d37b373ee43b8d509d9eae882a18bf6744db15c
author: Simon Howard <[email protected]>
date: Thu May 11 08:03:02 EDT 2006

Allow port to be specified for client to connect to through -port or
-connect hostname:port.

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 479

--- a/src/net_sdl.c
+++ b/src/net_sdl.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*- 
 //-----------------------------------------------------------------------------
 //
-// $Id: net_sdl.c 467 2006-04-09 02:50:34Z fraggle $
+// $Id: net_sdl.c 479 2006-05-11 12:03:02Z fraggle $
 //
 // Copyright(C) 2005 Simon Howard
 //
@@ -172,6 +172,12 @@
 
 static boolean NET_SDL_InitClient(void)
 {
+    int p;
+
+    p = M_CheckParm("-port");
+    if (p > 0)
+        port = atoi(myargv[p+1]);
+
     SDLNet_Init();
 
     udpsocket = SDLNet_UDP_Open(0);
@@ -298,15 +304,42 @@
 net_addr_t *NET_SDL_ResolveAddress(char *address)
 {
     IPaddress ip;
+    char *addr_hostname;
+    int addr_port;
+    int result;
+    char *colon;
+
+    colon = strchr(address, ':');
+
+    if (colon != NULL)
+    {
+	addr_hostname = strdup(address);
+	addr_hostname[colon - address] = '\0';
+	addr_port = atoi(colon + 1);
+    }
+    else
+    {
+	addr_hostname = address;
+	addr_port = port;
+    }
     
-    if (SDLNet_ResolveHost(&ip, address, port))
+    result = SDLNet_ResolveHost(&ip, addr_hostname, addr_port);
+
+    if (addr_hostname != address)
     {
+	free(addr_hostname);
+    }
+    
+    if (result)
+    {
         // unable to resolve
 
         return NULL;
     }
-
-    return NET_SDL_FindAddress(&ip);
+    else
+    {
+        return NET_SDL_FindAddress(&ip);
+    }
 }
 
 // Complete module