From 49e1e865dba1d4ac7f714934839dc9151806b267 Mon Sep 17 00:00:00 2001
From: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue, 14 Jan 2014 14:20:53 -0500
Subject: [PATCH] dont delete status file on release

---
 dhtest.c    | 15 +++++++++++----
 functions.c |  1 -
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/dhtest.c b/dhtest.c
index 20c1051..d9bebff 100644
--- a/dhtest.c
+++ b/dhtest.c
@@ -399,12 +399,17 @@ int main(int argc, char *argv[])
 	 */
 	if(dhcp_release_flag) {
 		if(get_dhinfo() == ERR_FILE_OPEN) {
-			if (nagios_flag) {
+			if (nagios_flag)
 				printf("CRITICAL: Error on opening DHCP info file.");
-			} else {
+			else
 				fprintf(stderr, "Error on opening DHCP info file\n");
-				fprintf(stderr, "Release the DHCP IP after acquiring\n");
-			}
+			exit(2);
+		}
+		if (!server_id) {
+			if (nagios_flag)
+				printf("CRITICAL: Can't release IP without an active lease");
+			else
+				fprintf(stderr, "Can't release IP without an active lease\n");
 			exit(2);
 		}
 		build_option53(DHCP_MSGRELEASE); /* Option53 DHCP release */
@@ -418,6 +423,8 @@ int main(int argc, char *argv[])
 		build_optioneof();		 /* End of option */
 		build_dhpacket(DHCP_MSGRELEASE); /* Build DHCP release packet */
 		send_packet(DHCP_MSGRELEASE);	 /* Send DHCP release packet */
+		/* update status file: we no longer have our IP address */
+		log_dhinfo();
 		return 0; 
 	}
 	if(timeout) {
diff --git a/functions.c b/functions.c
index d21f1df..bf01c63 100644
--- a/functions.c
+++ b/functions.c
@@ -995,7 +995,6 @@ int get_dhinfo()
 	}
 
 	close(dh_file);
-	unlink(dhmac_fname);
 	return 0;
 }