]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - vss.c
server: Use para_sigaction() to install the temporary SIGCHLD handler.
[paraslash.git] / vss.c
diff --git a/vss.c b/vss.c
index 7b36ae31c95a14ca24d87d7f3f9c27d29de6fa5c..10780cbffe1a9026e1729423c0e98bfe1dddeabd 100644 (file)
--- a/vss.c
+++ b/vss.c
@@ -641,10 +641,7 @@ static int need_to_request_new_audio_file(struct vss_task *vsst)
 }
 
 /**
- * Compute the timeout for para_server's main select-loop.
- *
- * This function gets called from para_server to determine the timeout value
- * for its main select loop.
+ * Compute the timeout for the main select-loop of the scheduler.
  *
  * \param s Pointer to the server scheduler.
  * \param t Pointer to the vss task structure.
@@ -743,7 +740,6 @@ static void recv_afs_result(struct vss_task *vsst)
        struct stat statbuf;
 
        vsst->afsss = AFS_SOCKET_READY;
-       mmd->afd.afhi.chunk_table = NULL;
        ret = recv_afs_msg(vsst->afs_socket, &passed_fd, &afs_code, &afs_data);
        if (ret < 0)
                goto err;
@@ -755,6 +751,7 @@ static void recv_afs_result(struct vss_task *vsst)
        if (passed_fd < 0)
                goto err;
        shmid = afs_data;
+       free(mmd->afd.afhi.info_string);
        ret = load_afd(shmid, &mmd->afd);
        if (ret < 0)
                goto err;
@@ -880,7 +877,10 @@ static void vss_post_select(struct sched *s, struct task *t)
        } else if (FD_ISSET(vsst->afs_socket, &s->wfds)) {
                PARA_NOTICE_LOG("requesting new fd from afs\n");
                ret = send_buffer(vsst->afs_socket, "new");
-               vsst->afsss = AFS_SOCKET_AFD_PENDING;
+               if (ret < 0)
+                       PARA_CRIT_LOG("%s\n", para_strerror(-ret));
+               else
+                       vsst->afsss = AFS_SOCKET_AFD_PENDING;
        }
        for (i = 0; senders[i].name; i++) {
                if (!senders[i].post_select)