chiark / gitweb /
put speaker socket in its own private directory
authorRichard Kettlewell <rjk@greenend.org.uk>
Sun, 23 Dec 2007 09:43:36 +0000 (09:43 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Sun, 23 Dec 2007 09:43:36 +0000 (09:43 +0000)
server/play.c
server/speaker.c

index e9c2b682d3791e24ba2ca22f3480b7290ccbe7d0..7f863ce369aae7358712f40c29503757ce2340a4 100644 (file)
@@ -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);
index d21ad7cd8c4e976eff06580ab2e20de92896c9c6..e4a00bead0389c30b4451683cfea22d27b504751 100644 (file)
@@ -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);