diff --git a/libpurple/ft.c b/libpurple/ft.c
index c15efcf..a9cadaf 100644
--- a/libpurple/ft.c
+++ b/libpurple/ft.c
@@ -1106,11 +1106,9 @@ purple_xfer_write(PurpleXfer *xfer, const guchar *buffer, gsize size)
r = write(xfer->fd, buffer, s);
if (r < 0 && errno == EAGAIN)
r = 0;
+ if ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer))
+ purple_xfer_set_completed(xfer, TRUE);
}
- if (r >= 0 && (purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer) &&
- !purple_xfer_is_completed(xfer))
- purple_xfer_set_completed(xfer, TRUE);
-
return r;
}