--- a/libpurple/plugins/autoaccept.c Sat Dec 21 03:12:10 2019 -0500 +++ b/libpurple/plugins/autoaccept.c Sat Dec 21 20:14:34 2019 -0500 @@ -63,11 +63,17 @@ } static void -auto_accept_complete_cb(PurpleXfer *xfer, PurpleXfer *my) +auto_accept_complete_cb(PurpleXfer *xfer, G_GNUC_UNUSED GParamSpec *pspec, + G_GNUC_UNUSED gpointer data) { - if (xfer == my && purple_prefs_get_bool(PREF_NOTIFY) && - !purple_conversations_find_im_with_account(purple_xfer_get_remote_user(xfer), purple_xfer_get_account(xfer))) - { + if (purple_xfer_get_status(xfer) != PURPLE_XFER_STATUS_DONE) { + return; + } + + if (purple_prefs_get_bool(PREF_NOTIFY) && + !purple_conversations_find_im_with_account( + purple_xfer_get_remote_user(xfer), + purple_xfer_get_account(xfer))) { char *message = g_strdup_printf(_("Autoaccepted file transfer of \"%s\" from \"%s\" completed."), purple_xfer_get_filename(xfer), purple_xfer_get_remote_user(xfer)); purple_notify_info(NULL, _("Autoaccept complete"), message, @@ -168,8 +174,8 @@ g_free(filename); } - purple_signal_connect(purple_xfers_get_handle(), "file-recv-complete", handle, - PURPLE_CALLBACK(auto_accept_complete_cb), xfer); + g_signal_connect(xfer, "notify::status", + G_CALLBACK(auto_accept_complete_cb), NULL); break; case FT_REJECT: purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL);