mirror of
https://github.com/rsmarples/dhcpcd.git
synced 2024-11-23 18:14:09 +08:00
DHCP: re-enter DISCOVER phase if server doesn't reply to our REQUEST
Use the reboot timeout as per the initial DISCOVER timeout. Fixes #255
This commit is contained in:
parent
e8b6541979
commit
d408e74bdc
17
src/dhcp.c
17
src/dhcp.c
@ -1895,6 +1895,20 @@ dhcp_discover(void *arg)
|
||||
send_discover(ifp);
|
||||
}
|
||||
|
||||
static void
|
||||
dhcp_requestfailed(void *arg)
|
||||
{
|
||||
struct interface *ifp = arg;
|
||||
struct dhcp_state *state = D_STATE(ifp);
|
||||
|
||||
logwarnx("%s: failed to request the lease", ifp->name);
|
||||
free(state->offer);
|
||||
state->offer = NULL;
|
||||
state->offer_len = 0;
|
||||
state->interval = 0;
|
||||
dhcp_discover(ifp);
|
||||
}
|
||||
|
||||
static void
|
||||
dhcp_request(void *arg)
|
||||
{
|
||||
@ -1902,6 +1916,9 @@ dhcp_request(void *arg)
|
||||
struct dhcp_state *state = D_STATE(ifp);
|
||||
|
||||
state->state = DHS_REQUEST;
|
||||
// Handle the server being silent to our request.
|
||||
eloop_timeout_add_sec(ifp->ctx->eloop, ifp->options->reboot,
|
||||
dhcp_requestfailed, ifp);
|
||||
send_request(ifp);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user