From 7ad723a8fb605f0bcab8a3ed912bef5f2d335f2c Mon Sep 17 00:00:00 2001
From: David Phillips <david@sighup.nz>
Date: Wed, 27 Jun 2018 20:56:32 +1200
Subject: Refactor raise+clear handlers

---
 alarmd/alarmd.c | 31 +++++++++++--------------------
 1 file changed, 11 insertions(+), 20 deletions(-)

diff --git a/alarmd/alarmd.c b/alarmd/alarmd.c
index a0f650a..93336b8 100644
--- a/alarmd/alarmd.c
+++ b/alarmd/alarmd.c
@@ -95,7 +95,7 @@ int handle_deregister(int c_sock)
 	return 0;
 }
 
-int handle_raise(int c_sock)
+int handle_set_raised_generic(int c_sock, int shall_raise)
 {
 	unsigned char buffer[128];
 	struct alarm *target = NULL;
@@ -105,35 +105,26 @@ int handle_raise(int c_sock)
 		return 1;
 	}
 	uuid_unparse(buffer, uuid_str);
-	fprintf(stderr, "Raising alarm %s\n", uuid_str);
+	fprintf(stderr, "%sing alarm %s\n", shall_raise ? "Rais" : "Clear", uuid_str);
 
 	/* LOCK */
 	HASH_FIND(hh, alarms, buffer, 16, target);
 	if (target != NULL) {
-		target->is_raised = 1;
+		target->is_raised = shall_raise;
 	}
 	/* UNLOCK */
 	return 0;
+
+}
+
+int handle_raise(int c_sock)
+{
+	return handle_set_raised_generic(c_sock, 1);
 }
 
 int handle_clear(int c_sock)
 {
-	unsigned char buffer[128];
-	struct alarm *target = NULL;
-	char uuid_str[37];
-	/* FIXME 16 magic */
-	if (recv(c_sock, &buffer, 16, 0) < 16) {
-		return 1;
-	}
-	uuid_unparse(buffer, uuid_str);
-	fprintf(stderr, "Clearing alarm %s\n", uuid_str);
-	/* LOCK */
-	HASH_FIND(hh, alarms, buffer, 16, target);
-	if (target != NULL) {
-		target->is_raised = 0;
-	}
-	/* UNLOCK */
-	return 0;
+	return handle_set_raised_generic(c_sock, 0);
 }
 
 int handle_query(int c_sock)
@@ -225,7 +216,7 @@ int main(int argc, char **argv)
 		switch(packet_type) {
 			case ALARMD_PACKET_TYPE_REGISTER:
 				if (handle_register(c_sock)) {
-					close(c_sock);;
+					close(c_sock);
 				}
 				break;
 			case ALARMD_PACKET_TYPE_DEREGISTER:
-- 
cgit v1.1