tServer Unix socket now includes the port number (for running multiple servers … | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 8f75f1bd80b636b71b665bf2b93d10c5adcdd511 | |
parent a5c069e284df893a0023bf42591d3776fc34731a | |
Author: Ben Webb <[email protected]> | |
Date: Thu, 8 Nov 2001 17:46:52 +0000 | |
Server Unix socket now includes the port number (for running multiple | |
servers on one machine) | |
Diffstat: | |
M src/serverside.c | 25 ++++++++++++++++++++----- | |
1 file changed, 20 insertions(+), 5 deletions(-) | |
--- | |
diff --git a/src/serverside.c b/src/serverside.c | |
t@@ -890,15 +890,27 @@ void RemovePlayerFromServer(Player *Play) { | |
} | |
#ifndef CYGWIN | |
+static gchar sockdir[] = "/tmp/.dopewars/"; | |
+ | |
+static gchar *GetLocalSocket(void) { | |
+ return g_strdup_printf("%ssocket-%u",sockdir,Port); | |
+} | |
+ | |
static void CloseLocalSocket(int localsock) { | |
+ gchar *sockname; | |
+ | |
if (localsock>=0) close(localsock); | |
- unlink("/tmp/.dopewars/socket"); | |
- rmdir("/tmp/.dopewars"); | |
+ | |
+ sockname=GetLocalSocket(); | |
+ unlink(sockname); | |
+ rmdir(sockdir); | |
+ g_free(sockname); | |
} | |
static int SetupLocalSocket(void) { | |
int sock; | |
struct sockaddr_un addr; | |
+ gchar *sockname; | |
CloseLocalSocket(-1); | |
t@@ -907,17 +919,20 @@ static int SetupLocalSocket(void) { | |
SetBlocking(sock,FALSE); | |
- mkdir("/tmp/.dopewars",S_IRUSR|S_IWUSR|S_IXUSR); | |
+ sockname=GetLocalSocket(); | |
+ mkdir(sockdir,S_IRUSR|S_IWUSR|S_IXUSR); | |
addr.sun_family = AF_UNIX; | |
- strncpy(addr.sun_path,"/tmp/.dopewars/socket",sizeof(addr.sun_path)); | |
+ strncpy(addr.sun_path,sockname,sizeof(addr.sun_path)); | |
addr.sun_path[sizeof(addr.sun_path)-1]='\0'; | |
bind(sock,(struct sockaddr *)&addr,sizeof(struct sockaddr_un)); | |
- chmod("/tmp/.dopewars/socket",S_IRUSR|S_IWUSR); | |
+ chmod(sockname,S_IRUSR|S_IWUSR); | |
listen(sock,10); | |
+ | |
+ g_free(sockname); | |
return sock; | |
} |