diff -r 2d9ae3eb4731 -r a3cbc0e5a3c0 libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Sun Apr 04 19:18:26 2010 +0000 +++ b/libpurple/protocols/msn/msn.c Thu Apr 22 17:15:26 2010 +0000 @@ -705,6 +705,14 @@ { MsnSlpLink *slplink = xfer->data; msn_slplink_request_ft(slplink, xfer); + msn_slplink_unref(slplink); +} + +static void +t_msn_xfer_cancel_send(PurpleXfer *xfer) +{ + MsnSlpLink *slplink = xfer->data; + msn_slplink_unref(slplink); } static PurpleXfer* @@ -719,9 +727,10 @@ g_return_val_if_fail(xfer != NULL, NULL); - xfer->data = msn_session_get_slplink(session, who); + xfer->data = msn_slplink_ref(msn_session_get_slplink(session, who)); purple_xfer_set_init_fnc(xfer, t_msn_xfer_init); + purple_xfer_set_cancel_send_fnc(xfer, t_msn_xfer_cancel_send); return xfer; }