]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - sched.c
vss: Avoid read-overflowing the header buffer for ogg streams.
[paraslash.git] / sched.c
diff --git a/sched.c b/sched.c
index ca365f17e911d13a49688196ecfd1bcfab5d0363..66a17418027a5e9fa2d92bee412cf682561115b9 100644 (file)
--- a/sched.c
+++ b/sched.c
@@ -159,6 +159,9 @@ again:
                        FD_ZERO(&s->wfds);
                }
                gettimeofday(now, NULL);
+       } else {
+               FD_ZERO(&s->rfds);
+               FD_ZERO(&s->wfds);
        }
        sched_post_select(s);
        if (list_empty(&pre_select_list) && list_empty(&post_select_list))
@@ -311,17 +314,19 @@ void sched_request_timeout_ms(long unsigned ms, struct sched *s)
  * \param barrier Absolute time before select() should return.
  * \param s Pointer to the scheduler struct.
  *
- * If \a barrier is in the past, this function does nothing.
+ * \return If \a barrier is in the past, this function does nothing and returns
+ * zero. Otherwise it returns one.
  *
  * \sa sched_request_barrier_or_min_delay().
  */
-void sched_request_barrier(struct timeval *barrier, struct sched *s)
+int sched_request_barrier(struct timeval *barrier, struct sched *s)
 {
        struct timeval diff;
 
        if (tv_diff(now, barrier, &diff) > 0)
-               return;
+               return 0;
        sched_request_timeout(&diff, s);
+       return 1;
 }
 
 /**
@@ -330,15 +335,19 @@ void sched_request_barrier(struct timeval *barrier, struct sched *s)
  * \param barrier Absolute time before select() should return.
  * \param s Pointer to the scheduler struct.
  *
- * If \a barrier is in the past, this function requests a minimal timeout.
+ * \return If \a barrier is in the past, this function requests a minimal
+ * timeout and returns zero. Otherwise it returns one.
  *
  * \sa sched_min_delay(), sched_request_barrier().
  */
-void sched_request_barrier_or_min_delay(struct timeval *barrier, struct sched *s)
+int sched_request_barrier_or_min_delay(struct timeval *barrier, struct sched *s)
 {
        struct timeval diff;
 
-       if (tv_diff(now, barrier, &diff) > 0)
-               return sched_min_delay(s);
+       if (tv_diff(now, barrier, &diff) > 0) {
+               sched_min_delay(s);
+               return 0;
+       }
        sched_request_timeout(&diff, s);
+       return 1;
 }