summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c
index 1b5bac7..8a25176 100644
--- a/src/main.c
+++ b/src/main.c
@@ -76,11 +76,13 @@ connect(const char *clientid, // NOLINT
76} 76}
77 77
78static void 78static void
79run(struct mosquitto *client, const char *topic) 79run(struct mosquitto *client, const char *topics[], const volatile bool *quit)
80{ 80{
81 mosquitto_subscribe(client, NULL, topic, 0); 81 for ( size_t idx = 0; topics[idx] != NULL; ++idx ) {
82 mosquitto_subscribe(client, NULL, topics[idx], 0);
83 }
82 84
83 while ( !terminate ) { 85 while ( !*quit ) {
84 static const int defaultTimeout = -1; // 1000ms 86 static const int defaultTimeout = -1; // 1000ms
85 87
86 int err = mosquitto_loop(client, defaultTimeout, 1); 88 int err = mosquitto_loop(client, defaultTimeout, 1);
@@ -127,7 +129,8 @@ main(void)
127 return EXIT_FAILURE; 129 return EXIT_FAILURE;
128 } 130 }
129 131
130 run(client, TOPIC); 132 run(client, (const char *[]){ TOPIC, NULL }, &terminate);
133
131 shutdown(client); 134 shutdown(client);
132 135
133 return EXIT_SUCCESS; 136 return EXIT_SUCCESS;