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:
		@@ -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,12 +39,14 @@ static void init_selecting_timeout(struct client_state_t *cs)
 | 
			
		||||
        cs->timeout = DELAY_SEC * (cs->packetNum + 1) * 1000;
 | 
			
		||||
        cs->packetNum++;
 | 
			
		||||
    } else {
 | 
			
		||||
        if (client_config.background_if_no_lease) {
 | 
			
		||||
            log_line("No lease, going to background.");
 | 
			
		||||
            background(cs);
 | 
			
		||||
        } else if (client_config.abort_if_no_lease) {
 | 
			
		||||
            log_line("No lease, failing.");
 | 
			
		||||
            exit(EXIT_FAILURE);
 | 
			
		||||
        if (cs->init) {
 | 
			
		||||
            if (client_config.background_if_no_lease) {
 | 
			
		||||
                log_line("No lease, going to background.");
 | 
			
		||||
                background(cs);
 | 
			
		||||
            } else if (client_config.abort_if_no_lease) {
 | 
			
		||||
                log_line("No lease, failing.");
 | 
			
		||||
                exit(EXIT_FAILURE);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        /* wait to try again */
 | 
			
		||||
        cs->packetNum = 0;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user