diff -up dhcp-4.2.3/client/dhclient.c.decline-onetry dhcp-4.2.3/client/dhclient.c
--- dhcp-4.2.3/client/dhclient.c.decline-onetry 2011-11-24 14:21:50.000000000 +0100
+++ dhcp-4.2.3/client/dhclient.c 2011-11-24 14:23:44.472893215 +0100
@@ -1704,11 +1704,18 @@ void bind_lease (client)
if (script_go (client)) {
make_decline (client, client -> new);
send_decline (client);
- destroy_client_lease (client -> new);
- client -> new = (struct client_lease *)0;
- client -> state = S_DECLINED;
- state_init (client);
- return;
+ if (onetry) {
+ if (!quiet)
+ log_info ("Unable to obtain a lease on first try.%s",
+ " Exiting.");
+ exit (2);
+ } else {
+ destroy_client_lease (client -> new);
+ client -> new = (struct client_lease *)0;
+ client -> state = S_DECLINED;
+ state_init (client);
+ return;
+ }
}
/* Write out the new lease if it has been long enough. */