summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dhcpv6.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dhcpv6.c b/src/dhcpv6.c
index 1af5c9a..e857823 100644
--- a/src/dhcpv6.c
+++ b/src/dhcpv6.c
@@ -487,8 +487,8 @@ int dhcpv6_request(enum dhcpv6_msg type)
if (retx->delay) {
struct timespec ts = {0, 0};
- ts.tv_nsec = dhcpv6_rand_delay(10 * DHCPV6_REQ_DELAY);
- nanosleep(&ts, NULL);
+ ts.tv_nsec = (dhcpv6_rand_delay((10000 * DHCPV6_REQ_DELAY) / 2) + (1000 * DHCPV6_REQ_DELAY) / 2) * 1000000;
+ while (nanosleep(&ts, &ts) < 0 && errno == EINTR);
}
if (type == DHCPV6_MSG_UNKNOWN)