summaryrefslogtreecommitdiff
path: root/ratatox.c
diff options
context:
space:
mode:
authorsin <sin@2f30.org>2014-09-16 13:45:35 +0100
committersin <sin@2f30.org>2014-09-16 13:45:35 +0100
commit0c916898347ff1887801443526f20136190a947d (patch)
treeb3931b6bca96b80e8f561bb06ebb2e8a28e82414 /ratatox.c
parent15e5fb0021d87d4672ede019c85403fbf7d1face (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.
Diffstat (limited to 'ratatox.c')
-rw-r--r--ratatox.c13
1 files 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)