From 0c916898347ff1887801443526f20136190a947d Mon Sep 17 00:00:00 2001 From: sin Date: Tue, 16 Sep 2014 13:45:35 +0100 Subject: Only monitor FIFOs for friends that are online Side-effect: If you send a file to a friend that is offline, the write will block() until the friend comes online at which point the file transfer will begin. --- ratatox.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ratatox.c b/ratatox.c index 3ac1b5d..af863cc 100644 --- a/ratatox.c +++ b/ratatox.c @@ -891,10 +891,13 @@ loop(void) fdmax = STDIN_FILENO; TAILQ_FOREACH(f, &friendhead, entry) { - for (i = 0; i < NR_FIFOS; i++) { - FD_SET(f->fd[i], &rfds); - if (f->fd[i] > fdmax) - fdmax = f->fd[i]; + /* Only monitor friends that are online */ + if (tox_get_friend_connection_status(tox, f->fid) == 1) { + for (i = 0; i < NR_FIFOS; i++) { + FD_SET(f->fd[i], &rfds); + if (f->fd[i] > fdmax) + fdmax = f->fd[i]; + } } } @@ -917,6 +920,8 @@ loop(void) * sent. */ TAILQ_FOREACH(f, &friendhead, entry) { + if (tox_get_friend_connection_status(tox, f->fid) == 0) + continue; if (f->t.state == TRANSFER_NONE) continue; if (f->t.pending == 0) -- cgit v1.2.3