]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Use correct (absolute) time for pthread_cond_timedwait
authorNick Mathewson <nickm@torproject.org>
Fri, 27 Sep 2013 16:09:57 +0000 (12:09 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 14 Jan 2015 16:09:52 +0000 (11:09 -0500)
src/common/compat_pthreads.c

index 8d3c60917a38253f2d581118d3ef83668b0efd89..59834270a39fc1fc49de0b3c89ed7b38b1c8f04b 100644 (file)
@@ -199,9 +199,12 @@ tor_cond_wait(tor_cond_t *cond, tor_mutex_t *mutex, const struct timeval *tv)
     return pthread_cond_wait(&cond->cond, &mutex->mutex) ? -1 : 0;
   } else {
     struct timespec ts;
+    struct timeval tvnow, tvsum;
     int r;
-    ts.tv_sec = tv->tv_sec;
-    ts.tv_nsec = tv->tv_usec * 1000;
+    gettimeofday(&tvnow, NULL);
+    timeradd(tv, &tvnow, &tvsum);
+    ts.tv_sec = tvsum.tv_sec;
+    ts.tv_nsec = tvsum.tv_usec * 1000;
     r = pthread_cond_timedwait(&cond->cond, &mutex->mutex, &ts);
     if (r == 0)
       return 0;