From 85cb23d7dcfa5449893a11d05586f1097794f3f2 Mon Sep 17 00:00:00 2001 Message-Id: <85cb23d7dcfa5449893a11d05586f1097794f3f2.1717660739.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sun, 23 Dec 2007 09:43:36 +0000 Subject: [PATCH] put speaker socket in its own private directory Organization: Straylight/Edgeware From: Richard Kettlewell --- server/play.c | 2 +- server/speaker.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/server/play.c b/server/play.c index e9c2b68..7f863ce 100644 --- a/server/play.c +++ b/server/play.c @@ -399,7 +399,7 @@ static int start(ev_source *ev, memset(&addr, 0, sizeof addr); addr.sun_family = AF_UNIX; snprintf(addr.sun_path, sizeof addr.sun_path, - "%s/speaker", config->home); + "%s/speaker/socket", config->home); sfd = xsocket(PF_UNIX, SOCK_STREAM, 0); if(connect(sfd, (const struct sockaddr *)&addr, sizeof addr) < 0) fatal(errno, "connecting to %s", addr.sun_path); diff --git a/server/speaker.c b/server/speaker.c index d21ad7c..e4a00be 100644 --- a/server/speaker.c +++ b/server/speaker.c @@ -78,6 +78,7 @@ #include "speaker-protocol.h" #include "user.h" #include "speaker.h" +#include "printf.h" /** @brief Linked list of all prepared tracks */ struct track *tracks; @@ -598,6 +599,7 @@ int main(int argc, char **argv) { static const int one = 1; struct speaker_message sm; const char *d; + char *dir; set_progname(argv); if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale"); @@ -639,11 +641,16 @@ int main(int argc, char **argv) { backend = backends[n]; /* backend-specific initialization */ backend->init(); + /* create the socket directory */ + byte_xasprintf(&dir, "%s/speaker", config->home); + unlink(dir); /* might be a leftover socket */ + if(mkdir(dir, 0700) < 0) + fatal(errno, "error creating %s", dir); /* set up the listen socket */ listenfd = xsocket(PF_UNIX, SOCK_STREAM, 0); memset(&addr, 0, sizeof addr); addr.sun_family = AF_UNIX; - snprintf(addr.sun_path, sizeof addr.sun_path, "%s/speaker", + snprintf(addr.sun_path, sizeof addr.sun_path, "%s/speaker/socket", config->home); if(unlink(addr.sun_path) < 0 && errno != ENOENT) error(errno, "removing %s", addr.sun_path); -- [mdw]