summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsin <sin@2f30.org>2014-09-16 13:53:40 +0100
committersin <sin@2f30.org>2014-09-16 13:53:40 +0100
commiteab089bc9420386a38dfa01872edc62480f4e27f (patch)
tree016b92670096213409bd6e11f4e766be6b7f0067
parent0c916898347ff1887801443526f20136190a947d (diff)
Detect and cleanup stale transfers
-rw-r--r--ratatox.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/ratatox.c b/ratatox.c
index af863cc..ea3fe74 100644
--- a/ratatox.c
+++ b/ratatox.c
@@ -911,6 +911,19 @@ loop(void)
exit(EXIT_FAILURE);
}
+ /* Check for broken transfers, i.e. the friend went offline
+ * in the middle of a transfer.
+ */
+ TAILQ_FOREACH(f, &friendhead, entry) {
+ if (tox_get_friend_connection_status(tox, f->fid) == 0) {
+ if (f->t.state != TRANSFER_NONE) {
+ printout("Stale transfer detected, friend offline\n");
+ f->t.state = TRANSFER_NONE;
+ free(f->t.buf);
+ }
+ }
+ }
+
/* If we hit the receiver too hard, we will run out of
* local buffer slots. In that case tox_file_send_data()
* will return -1 and we will have to queue the buffer to