From 31553816781f25719395b3858a784fa0a53cdf36 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Thu, 25 Feb 2016 16:33:58 -0800 Subject: [PATCH] Shut down if we run out of inputs or outputs. --- adsbus/peer.c | 7 +++++++ adsbus/receive.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/adsbus/peer.c b/adsbus/peer.c index d79e0eb..3206f08 100644 --- a/adsbus/peer.c +++ b/adsbus/peer.c @@ -78,6 +78,13 @@ void peer_call(struct peer *peer) { void peer_loop() { fprintf(stderr, "X %s: Starting event loop\n", server_id); while (!peer_shutdown_flag) { + if (!peer_count_in) { + fprintf(stderr, "X %s: No remaining inputs\n", server_id); + peer_shutdown(0); + } else if (!peer_count_out) { + fprintf(stderr, "X %s: No remaining outputs\n", server_id); + peer_shutdown(0); + } #define MAX_EVENTS 10 struct epoll_event events[MAX_EVENTS]; int nfds = epoll_wait(peer_epoll_fd, events, MAX_EVENTS, wakeup_get_delay()); diff --git a/adsbus/receive.c b/adsbus/receive.c index 3e7e558..d293389 100644 --- a/adsbus/receive.c +++ b/adsbus/receive.c @@ -83,7 +83,7 @@ static bool receive_autodetect_parse(struct receive *receive, struct packet *pac static void receive_del(struct receive *receive) { fprintf(stderr, "R %s: Connection closed\n", receive->id); - peer_count_out--; + peer_count_in--; peer_epoll_del((struct peer *) receive); assert(!close(receive->peer.fd)); if (receive->prev) {