diff options
-rw-r--r-- | src/dhcpv6.c | 4 |
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) |