Shut down if we run out of inputs or outputs.

This commit is contained in:
Ian Gulliver
2016-02-25 16:33:58 -08:00
parent a9dc7c25db
commit 3155381678
2 changed files with 8 additions and 1 deletions

View File

@@ -78,6 +78,13 @@ void peer_call(struct peer *peer) {
void peer_loop() { void peer_loop() {
fprintf(stderr, "X %s: Starting event loop\n", server_id); fprintf(stderr, "X %s: Starting event loop\n", server_id);
while (!peer_shutdown_flag) { 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 #define MAX_EVENTS 10
struct epoll_event events[MAX_EVENTS]; struct epoll_event events[MAX_EVENTS];
int nfds = epoll_wait(peer_epoll_fd, events, MAX_EVENTS, wakeup_get_delay()); int nfds = epoll_wait(peer_epoll_fd, events, MAX_EVENTS, wakeup_get_delay());

View File

@@ -83,7 +83,7 @@ static bool receive_autodetect_parse(struct receive *receive, struct packet *pac
static void receive_del(struct receive *receive) { static void receive_del(struct receive *receive) {
fprintf(stderr, "R %s: Connection closed\n", receive->id); fprintf(stderr, "R %s: Connection closed\n", receive->id);
peer_count_out--; peer_count_in--;
peer_epoll_del((struct peer *) receive); peer_epoll_del((struct peer *) receive);
assert(!close(receive->peer.fd)); assert(!close(receive->peer.fd));
if (receive->prev) { if (receive->prev) {