diff --git a/obexd/client/session.c b/obexd/client/session.c
index b24f32f..798ffcc 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
static void unregister_transfer(struct session_data *session)
{
+ gw_obex_xfer_close(session->xfer, NULL);
+ gw_obex_xfer_free(session->xfer);
+ session->xfer = NULL;
+
+ g_free(session->filename);
+ session->filename = NULL;
+
+ g_free(session->name);
+ session->name = NULL;
+
if (session->transfer_path == NULL)
return;
unregister_transfer(session);
- gw_obex_xfer_close(xfer, NULL);
- gw_obex_xfer_free(xfer);
- callback->session->xfer = NULL;
-
- g_free(session->filename);
- session->filename = NULL;
-
- g_free(session->name);
- session->name = NULL;
-
callback->func(callback->session, callback->data);
if (session->fd > 0)
unregister_transfer(session);
- gw_obex_xfer_close(session->xfer, NULL);
- gw_obex_xfer_free(session->xfer);
- session->xfer = NULL;
-
- g_free(session->filename);
- session->filename = NULL;
-
- g_free(session->name);
- session->name = NULL;
-
if (session->pending->len > 0) {
gchar *filename = g_ptr_array_index(session->pending, 0);
gchar *basename = g_path_get_basename(filename);