diff options
author | sin <sin@2f30.org> | 2014-09-16 13:45:35 +0100 |
---|---|---|
committer | sin <sin@2f30.org> | 2014-09-16 13:45:35 +0100 |
commit | 0c916898347ff1887801443526f20136190a947d (patch) | |
tree | b3931b6bca96b80e8f561bb06ebb2e8a28e82414 | |
parent | 15e5fb0021d87d4672ede019c85403fbf7d1face (diff) |
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.
-rw-r--r-- | ratatox.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -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) |