summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/comms.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/server/comms.c b/src/server/comms.c
index c96afa8..4549bdd 100644
--- a/src/server/comms.c
+++ b/src/server/comms.c
@@ -43,18 +43,26 @@ void add_str(struct strs* strs, char* str) {
}
struct strs handle_input(mqd_t tx, mqd_t rx, char* payload, int len) {
- printf("Message: %.*s\n", len, payload);
- struct strs output = init_strs();
+ printf("Message: %.*s", len, payload);
+ fflush(stdout);
- char* buf = read_queue(rx);
- printf("%p\n", buf);
- add_str(&output, buf);
- if (buf) free(buf);
+ struct strs output = init_strs();
- buf = read_queue(rx);
- printf("%p\n", buf);
- add_str(&output, buf);
- if (buf) free(buf);
+ int n = get_num_messages(rx);
+ while (n > 0) {
+ char* buf = read_queue(rx);
+ add_str(&output, buf);
+ free(buf);
+ n--;
+ if (n == 0) n = get_num_messages(rx);
+ }
+ printf(" -> done\n");
+ // if (buf) free(buf);
+ //
+ // buf = read_queue(rx);
+ // printf("%p\n", buf);
+ // add_str(&output, buf);
+ // if (buf) free(buf);
return output;
}