From dda02514dfd3d560d00a082d954850fd9fa825f3 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 24 May 2015 21:46:26 +0100 Subject: [PATCH] Added stbbr_send --- src/client/stabber.c | 6 ++++++ src/server/server.c | 21 +++++++++++++++++++++ src/server/server.h | 2 ++ stabber.h | 2 ++ 4 files changed, 31 insertions(+) diff --git a/src/client/stabber.c b/src/client/stabber.c index 5f5d386..5505901 100644 --- a/src/client/stabber.c +++ b/src/client/stabber.c @@ -42,6 +42,12 @@ stbbr_verify(char *stanza) return verify_any(stanza); } +void +stbbr_send(char *stream) +{ + server_send(stream); +} + void stbbr_stop(void) { diff --git a/src/server/server.c b/src/server/server.c index 4308be0..5336e12 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -23,6 +23,8 @@ #define STREAM_END "" +static GList *send_queue; + static XMPPClient *client; static void _shutdown(void); @@ -69,6 +71,16 @@ read_stream(void) errno = 0; while (TRUE) { + // send anything from queue + GList *curr_send = send_queue; + while (curr_send) { + write_stream(curr_send->data); + curr_send = g_list_next(curr_send); + } + + g_list_free_full(send_queue, free); + send_queue = NULL; + int read_size = recv(client->sock, buf, 1, 0); // client disconnect @@ -216,6 +228,7 @@ _start_server_cb(void* userdata) int server_run(int port) { + send_queue = NULL; client = NULL; log_init(); log_println("Starting on port: %d...", port); @@ -274,6 +287,12 @@ server_run(int port) return 0; } +void +server_send(char *stream) +{ + send_queue = g_list_append(send_queue, strdup(stream)); +} + void server_stop(void) { @@ -295,5 +314,7 @@ _shutdown(void) prime_free_all(); stanza_free_all(); + g_list_free_full(send_queue, free); + send_queue = NULL; log_close(); } diff --git a/src/server/server.h b/src/server/server.h index 9027042..ca24310 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -4,4 +4,6 @@ int server_run(int port); void server_stop(void); +void server_send(char *stream); + #endif diff --git a/stabber.h b/stabber.h index a14ffb6..0d9cf40 100644 --- a/stabber.h +++ b/stabber.h @@ -10,4 +10,6 @@ void stbbr_for(char *id, char *stream); int stbbr_verify(char *stanza); int stbbr_verify_last(char *stanza); +void stbbr_send(char *stream); + #endif