]> git.decadent.org.uk Git - odhcp6c.git/blobdiff - src/dhcpv6.c
Be less picky when erroring out due to strange IA status-codes
[odhcp6c.git] / src / dhcpv6.c
index 1af5c9aeafc9d4216ba369bd9cefb85b1dbbb098..cb2aa76f7c7ba01de307ca59f991ad2b9baf0bfc 100644 (file)
@@ -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)
@@ -1356,23 +1356,8 @@ static void dhcpv6_handle_ia_status_code(const enum dhcpv6_msg orig,
                }
                break;
 
-       case DHCPV6_NoAddrsAvail:
-       case DHCPV6_NoPrefixAvail:
-               switch (orig) {
-               case DHCPV6_MSG_REQUEST:
-                       if (*ret != 0)
-                               *ret = 0;
-                       break;
-               default:
-                       break;
-               }
-               break;
-
-       case DHCPV6_NotOnLink:
-               // TODO handle not onlink in case of confirm
-               break;
-
        default:
+               *ret = 0;
                break;
        }
 }