Blob Blame Raw
diff -up dhcp-4.3.0a1/client/dhclient.c.decline-onetry dhcp-4.3.0a1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.decline-onetry	2013-12-20 13:37:26.382796437 +0100
+++ dhcp-4.3.0a1/client/dhclient.c	2013-12-20 13:37:26.401796172 +0100
@@ -1708,11 +1708,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. */