]> 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 9346d2095631102cba82b5968f2740b630f87fb7..10780cbffe1a9026e1729423c0e98bfe1dddeabd 100644 (file)
--- a/vss.c
+++ b/vss.c
@@ -740,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;
@@ -752,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;
@@ -877,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)