summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2014-07-13 14:50:03 +0000
committerkrw <krw@openbsd.org>2014-07-13 14:50:03 +0000
commitc36dd2c943f7b3cfbf24d93c552313b79d66d2f0 (patch)
tree85d73243d80017f31314cd2ba5a375d8a3cbb8ea
parentClose the connection after the response is completed (no Keepalive yet). (diff)
downloadwireguard-openbsd-c36dd2c943f7b3cfbf24d93c552313b79d66d2f0.tar.xz
wireguard-openbsd-c36dd2c943f7b3cfbf24d93c552313b79d66d2f0.zip
When renewing a lease, update client->active or you end up in a
tight renew loop. Caused by recent reshuffling of code in bind_lease().
-rw-r--r--sbin/dhclient/dhclient.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c
index b5264ce7d39..7562a3e23a7 100644
--- a/sbin/dhclient/dhclient.c
+++ b/sbin/dhclient/dhclient.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhclient.c,v 1.317 2014/07/12 21:04:07 krw Exp $ */
+/* $OpenBSD: dhclient.c,v 1.318 2014/07/13 14:50:03 krw Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -840,9 +840,11 @@ bind_lease(void)
compare_lease(client->active, client->new) == 0) {
client->new->resolv_conf = client->active->resolv_conf;
client->active->resolv_conf = NULL;
+ client->active = client->new;
+ client->new = NULL;
note("bound to %s -- renewal in %lld seconds.",
- inet_ntoa(client->new->address),
- (long long)(client->new->renewal - time(NULL)));
+ inet_ntoa(client->active->address),
+ (long long)(client->active->renewal - time(NULL)));
goto newlease;
}