diff --git a/recording-daemon/notify.c b/recording-daemon/notify.c index dba575231..cc2889392 100644 --- a/recording-daemon/notify.c +++ b/recording-daemon/notify.c @@ -11,7 +11,7 @@ struct notif_req { struct curl_slist *headers; char *full_filename_path; - time_t retry_time; + int64_t retry_time; unsigned int retries; unsigned int falloff; }; @@ -152,7 +152,7 @@ fail: "Failed to create CURL object. Will retry in %u seconds (#%u)", FMT_M(req->name), req->falloff, req->retries); - req->retry_time = time(NULL) + req->falloff; + req->retry_time = now_us() + req->falloff * 1000000L; // XXX scale to micro req->falloff *= 2; pthread_mutex_lock(&timer_lock); @@ -208,13 +208,11 @@ static void *notify_timer(void *p) { pthread_cond_wait(&timer_cond, &timer_lock); continue; } - struct timeval now; - gettimeofday(&now, NULL); - if (now.tv_sec < first->retry_time) { - ilog(LOG_DEBUG, "Sleeping until next scheduled HTTP notification retry in %lu seconds", - (unsigned long) first->retry_time - now.tv_sec); - struct timespec ts = {.tv_sec = first->retry_time, .tv_nsec = 0}; - pthread_cond_timedwait(&timer_cond, &timer_lock, &ts); + int64_t now = now_us(); + if (now < first->retry_time) { + ilog(LOG_DEBUG, "Sleeping until next scheduled HTTP notification retry in %" PRId64 " seconds", + (first->retry_time - now) / 1000000L); + cond_timedwait(&timer_cond, &timer_lock, first->retry_time); continue; }