Fix the dhcp state bootstrapping when rfkill is set.
This commit is contained in:
		
							
								
								
									
										17
									
								
								src/ndhc.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								src/ndhc.c
									
									
									
									
									
								
							| @@ -282,7 +282,7 @@ static void do_ndhc_work(void) | |||||||
| { | { | ||||||
|     struct epoll_event events[NDHC_NUM_EP_FDS]; |     struct epoll_event events[NDHC_NUM_EP_FDS]; | ||||||
|     long long nowts; |     long long nowts; | ||||||
|     int timeout; |     int timeout = -1; | ||||||
|  |  | ||||||
|     cs.epollFd = epoll_create1(0); |     cs.epollFd = epoll_create1(0); | ||||||
|     if (cs.epollFd < 0) |     if (cs.epollFd < 0) | ||||||
| @@ -299,9 +299,11 @@ static void do_ndhc_work(void) | |||||||
|     epoll_add(cs.epollFd, sockdStream[0]); |     epoll_add(cs.epollFd, sockdStream[0]); | ||||||
|     if (client_config.enable_rfkill && cs.rfkillFd != -1) |     if (client_config.enable_rfkill && cs.rfkillFd != -1) | ||||||
|         epoll_add(cs.epollFd, cs.rfkillFd); |         epoll_add(cs.epollFd, cs.rfkillFd); | ||||||
|     start_dhcp_listen(&cs); |     if (!cs.rfkill_set) { | ||||||
|     nowts = curms(); |         start_dhcp_listen(&cs); | ||||||
|     goto jumpstart; |         nowts = curms(); | ||||||
|  |         goto jumpstart; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     for (;;) { |     for (;;) { | ||||||
|         int r = epoll_wait(cs.epollFd, events, NDHC_NUM_EP_FDS, timeout); |         int r = epoll_wait(cs.epollFd, events, NDHC_NUM_EP_FDS, timeout); | ||||||
| @@ -360,6 +362,13 @@ static void do_ndhc_work(void) | |||||||
|                     timeout = 0; |                     timeout = 0; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             if (cs.rfkill_set) { | ||||||
|  |                 // We can't do anything until the rfkill is gone. | ||||||
|  |                 if (timeout <= 0) | ||||||
|  |                     timeout = -1; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |  | ||||||
|             if (!timeout) { |             if (!timeout) { | ||||||
| jumpstart: | jumpstart: | ||||||
|                 timeout_action(&cs, nowts); |                 timeout_action(&cs, nowts); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user