--- a/libpurple/protocols/jabber/jabber.c Thu Jun 02 20:15:50 2022 -0500
+++ b/libpurple/protocols/jabber/jabber.c Thu Jun 02 20:17:31 2022 -0500
@@ -1579,6 +1579,27 @@
jabber_unregister_account_cb(js);
+jabber_terminate_transfers(JabberStream *js) + while(js->file_transfers != NULL) { + gpointer data = js->file_transfers->data; + if(js->file_transfers == NULL) { + /* Forcefully remove the link if jabber_si_xfer_free doesn't + if(js->file_transfers->data == data) { + js->file_transfers = g_list_delete_link(js->file_transfers, /* TODO: As Will pointed out in IRC, after being notified by the core to
* shutdown, we should async. wait for the server to send us the stream
* termination before destorying everything. That seems like it would require
@@ -1591,6 +1612,8 @@
/* Close all of the open Jingle sessions on this stream */
jingle_terminate_sessions(js);
+ jabber_terminate_transfers(js); jabber_bosh_connection_close(js->bosh);
else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0) {