Gitweb:
https://git.exim.org/exim.git/commitdiff/fce5c23c3e21a41f8be6035408437fda63bac10a
Commit: fce5c23c3e21a41f8be6035408437fda63bac10a
Parent: 5fae29d5b430d6a5f58c6c02cdefbbf307e258a9
Author: Samuel Thibault <samuel.thibault@???>
AuthorDate: Fri Dec 13 00:41:01 2019 +0000
Committer: Jeremy Harris <jgh146exb@???>
CommitDate: Fri Dec 13 00:41:56 2019 +0000
Handle kernels not providing microsecond time resolution
---
src/src/exim.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/src/exim.c b/src/src/exim.c
index 8c3c8e7..72bf65e 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -407,7 +407,7 @@ long int now_true_usec;
now_true_usec = now_tv.tv_usec;
now_tv.tv_usec = (now_true_usec/resolution) * resolution;
-if (exim_tvcmp(&now_tv, then_tv) <= 0)
+while (exim_tvcmp(&now_tv, then_tv) <= 0)
{
struct itimerval itval;
itval.it_interval.tv_sec = 0;
@@ -439,6 +439,13 @@ if (exim_tvcmp(&now_tv, then_tv) <= 0)
}
milliwait(&itval);
+
+ /* Be prapared to go around if the kernel does not implement subtick
+ granularity (GNU Hurd) */
+
+ (void)gettimeofday(&now_tv, NULL);
+ now_true_usec = now_tv.tv_usec;
+ now_tv.tv_usec = (now_true_usec/resolution) * resolution;
}
}