diff --git a/obexd/client/session.c b/obexd/client/session.c
index 592624a..f0c5056 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
static void session_shutdown(struct session_data *session)
{
+ g_dbus_remove_watch(session->conn, session->owner_watch);
+
if (session->transfer_path) {
agent_notify_error(session->conn, session->agent_name,
session->agent_path, session->transfer_path,
return -EIO;
}
- g_dbus_add_disconnect_watch(session->conn, session->owner,
- owner_disconnected, session, NULL);
+ session->owner_watch = g_dbus_add_disconnect_watch(session->conn,
+ session->owner, owner_disconnected, session,
+ NULL);
session_ref(session);
diff --git a/obexd/client/session.h b/obexd/client/session.h
index dd0c502..16c3392 100644
--- a/obexd/client/session.h
+++ b/obexd/client/session.h
gchar *agent_path;
guint agent_watch;
gchar *owner; /* Session owner */
+ guint owner_watch;
GPtrArray *pending;
};