diff options
author | 2012-06-20 21:53:51 +0000 | |
---|---|---|
committer | 2012-06-20 21:53:51 +0000 | |
commit | ca9189a67896542c88de000839d6850e1d2406c3 (patch) | |
tree | 7fcd07a77e5026e7ab0e2a3574f9547b4ebbcb80 | |
parent | move to 5.2-beta (diff) | |
download | wireguard-openbsd-ca9189a67896542c88de000839d6850e1d2406c3.tar.xz wireguard-openbsd-ca9189a67896542c88de000839d6850e1d2406c3.zip |
Cancel all timeouts in state_reboot(), since we can get there from any state
if a link state change happens. Fixes a problem where we'd continue to send
(corrupted) discover packets after binding.
ok krw@
-rw-r--r-- | sbin/dhclient/dhclient.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c index ce3a9fc1f2e..b494467efe0 100644 --- a/sbin/dhclient/dhclient.c +++ b/sbin/dhclient/dhclient.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dhclient.c,v 1.142 2011/12/10 15:55:43 krw Exp $ */ +/* $OpenBSD: dhclient.c,v 1.143 2012/06/20 21:53:51 kettenis Exp $ */ /* * Copyright 2004 Henning Brauer <henning@openbsd.org> @@ -468,6 +468,14 @@ usage(void) void state_reboot(void) { + /* Cancel all timeouts, since a link state change gets us here + and can happen anytime. */ + cancel_timeout(state_init); + cancel_timeout(state_selecting); + cancel_timeout(state_bound); + cancel_timeout(send_discover); + cancel_timeout(send_request); + /* If we don't remember an active lease, go straight to INIT. */ if (!client->active || client->active->is_bootp) { state_init(); |