--- a/libpurple/ft.c Mon Oct 12 18:41:51 2009 +0000 +++ b/libpurple/ft.c Mon Oct 12 18:48:19 2009 +0000 @@ -981,8 +981,6 @@ 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); } return r; @@ -1013,9 +1011,6 @@ return; } - if ((purple_xfer_get_size(xfer) > 0) && - ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer))) - purple_xfer_set_completed(xfer, TRUE); } else if(r < 0) { purple_xfer_cancel_remote(xfer); g_free(buffer); @@ -1129,8 +1124,11 @@ purple_xfer_get_progress(xfer)); } - if (purple_xfer_is_completed(xfer)) + if ((purple_xfer_get_size(xfer) > 0) && + ((purple_xfer_get_bytes_sent(xfer)) >= purple_xfer_get_size(xfer))) { + purple_xfer_set_completed(xfer, TRUE); purple_xfer_end(xfer); + } } static void