tServer Unix socket now includes the port number (for running multiple servers on one machine) - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 8f75f1bd80b636b71b665bf2b93d10c5adcdd511
(DIR) parent a5c069e284df893a0023bf42591d3776fc34731a
(HTM) Author: Ben Webb <ben@salilab.org>
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(-)
---
(DIR) 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;
}