X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=vss.c;h=10780cbffe1a9026e1729423c0e98bfe1dddeabd;hp=e1a3c3742a76b66c614e6aaf65f04c7a31277309;hb=46f2f102fa22ddffe515546e7db21cf208db0d90;hpb=027e2ddb3ca6e8b29ec826f529cd66bc4447f32f diff --git a/vss.c b/vss.c index e1a3c374..10780cbf 100644 --- a/vss.c +++ b/vss.c @@ -587,7 +587,6 @@ static struct timeval *vss_compute_timeout(struct vss_task *vsst) static void vss_eof(struct vss_task *vsst) { - mmd->stream_start = *now; if (!vsst->map) return; if (mmd->new_vss_status_flags & VSS_NOMORE) @@ -642,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. @@ -671,6 +667,8 @@ static void vss_pre_select(struct sched *s, struct task *t) senders[i].shutdown_clients(); list_for_each_entry_safe(fc, tmp, &fec_client_list, node) fc->first_stream_chunk = -1; + mmd->stream_start.tv_sec = 0; + mmd->stream_start.tv_usec = 0; } if (vss_next()) vss_eof(vsst); @@ -742,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; @@ -754,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; @@ -879,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)