summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2012-12-21 20:37:28 +0000
committerkrw <krw@openbsd.org>2012-12-21 20:37:28 +0000
commit3db26eb51b048ea05a572ca84cb8c8c607dcec19 (patch)
tree764f57066e78c3d83b1830dfca83feea6f1a9fa3
parenttweak for malloc(9) calls: (diff)
downloadwireguard-openbsd-3db26eb51b048ea05a572ca84cb8c8c607dcec19.tar.xz
wireguard-openbsd-3db26eb51b048ea05a572ca84cb8c8c607dcec19.zip
When binding to a new lease, wait for the RTM_NEWADDR message in
S_BOUND state, which prevents confusion when another DHCPACK arrives. Problem found and fix tested by kettenis@.
-rw-r--r--sbin/dhclient/dhclient.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c
index f77e1b3ecb6..11fc4646b43 100644
--- a/sbin/dhclient/dhclient.c
+++ b/sbin/dhclient/dhclient.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhclient.c,v 1.197 2012/12/19 12:25:38 krw Exp $ */
+/* $OpenBSD: dhclient.c,v 1.198 2012/12/21 20:37:28 krw Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -218,7 +218,6 @@ routehandler(void)
inet_ntoa(client->active->address),
(long long)(client->active->renewal -
time(NULL)));
- client->state = S_BOUND;
go_daemon();
break;
}
@@ -739,6 +738,8 @@ bind_lease(void)
client->active = client->new;
client->new = NULL;
+ client->state = S_BOUND;
+
/* Write out new leases file. */
rewrite_client_leases();