aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Phillips <david@sighup.nz>2018-06-27 20:56:32 +1200
committerDavid Phillips <david@sighup.nz>2018-06-27 20:56:35 +1200
commit7ad723a8fb605f0bcab8a3ed912bef5f2d335f2c (patch)
treef975b81ce347b3305e6c1f7288e072a3522c354b
parentce3357fc9151e7b4f0d233b4accf6c7a780327d6 (diff)
downloadalarmd-7ad723a8fb605f0bcab8a3ed912bef5f2d335f2c.tar.xz
Refactor raise+clear handlers
-rw-r--r--alarmd/alarmd.c31
1 files 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: