If a lease is negotiated, then expires after renewal attempts, don't time out
and exit the daemon as would be desirable at startup. Just keep trying.
This commit is contained in:
parent
057211d5f5
commit
1e2698b402
@ -218,6 +218,7 @@ void arp_success(struct client_state_t *cs)
|
||||
inet_ntoa(temp_addr), cs->lease);
|
||||
cs->requestedIP = arp_dhcp_packet.yiaddr;
|
||||
cs->dhcpState = DS_BOUND;
|
||||
cs->init = 0;
|
||||
ifchange(&arp_dhcp_packet,
|
||||
((cs->arpPrevState == DS_RENEWING ||
|
||||
cs->arpPrevState == DS_REBINDING)
|
||||
|
@ -65,6 +65,7 @@ struct client_state_t {
|
||||
uint32_t requestedIP, serverAddr, routerAddr;
|
||||
uint32_t lease, t1, t2, xid;
|
||||
uint8_t routerArp[6];
|
||||
uint8_t init;
|
||||
};
|
||||
|
||||
struct client_config_t {
|
||||
|
@ -67,6 +67,7 @@ struct client_state_t cs = {
|
||||
.packetNum = 0,
|
||||
.xid = 0,
|
||||
.timeout = 0,
|
||||
.init = 1,
|
||||
.oldTimeout = 0,
|
||||
.leaseStartTime = 0,
|
||||
.requestedIP = 0,
|
||||
|
@ -39,6 +39,7 @@ static void init_selecting_timeout(struct client_state_t *cs)
|
||||
cs->timeout = DELAY_SEC * (cs->packetNum + 1) * 1000;
|
||||
cs->packetNum++;
|
||||
} else {
|
||||
if (cs->init) {
|
||||
if (client_config.background_if_no_lease) {
|
||||
log_line("No lease, going to background.");
|
||||
background(cs);
|
||||
@ -46,6 +47,7 @@ static void init_selecting_timeout(struct client_state_t *cs)
|
||||
log_line("No lease, failing.");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/* wait to try again */
|
||||
cs->packetNum = 0;
|
||||
cs->timeout = RETRY_DELAY * 1000;
|
||||
|
Loading…
Reference in New Issue
Block a user