chiark / gitweb /
Complete README changes for scripts/setup. README.{mac,freebsd} are
[disorder] / server / play.c
index 7b7079994fbb2a2a3e88f80bf6b0790fb85ec5af..d73aec7482bac24cedd54268e96479d186dc14f8 100644 (file)
@@ -44,6 +44,7 @@
 #include "configuration.h"
 #include "queue.h"
 #include "server-queue.h"
+#include "rights.h"
 #include "trackdb.h"
 #include "play.h"
 #include "plugin.h"
@@ -115,6 +116,11 @@ static int speaker_readable(ev_source *ev, int fd,
     D(("SM_FINISHED %s", sm.id));
     finished(ev);
     break;
+  case SM_UNKNOWN:
+    /* we asked for an unknown track to be cancelled */
+    if(playing && !strcmp(sm.id, playing->id))
+      finished(ev);
+    break;
   case SM_PLAYING:
     /* track ID is playing, DATA seconds played */
     D(("SM_PLAYING %s %ld", sm.id, sm.data));
@@ -398,7 +404,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);
@@ -426,6 +432,7 @@ static int start(ev_source *ev,
           * (but it should be for play_track() */
          execlp("disorder-normalize", "disorder-normalize",
                 log_default == &log_syslog ? "--syslog" : "--no-syslog",
+                "--config", configfile,
                 (char *)0);
          fatal(errno, "executing disorder-normalize");
          /* end of the innermost fork */