diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index dded02f..d1edef2 100644
--- a/obexd/client/transfer.c
+++ b/obexd/client/transfer.c
{
struct transfer_callback *callback = transfer->callback;
- if (transfer->xfer == 0)
- return;
+ if (transfer->xfer > 0) {
+ g_obex_cancel_transfer(transfer->xfer);
+ transfer->xfer = 0;
+ }
- g_obex_cancel_transfer(transfer->xfer);
- transfer->xfer = 0;
+ if (transfer->obex != NULL) {
+ g_obex_unref(transfer->obex);
+ transfer->obex = NULL;
+ }
if (callback) {
GError *err;