diff --git a/obexd/client/session.c b/obexd/client/session.c
index 7e3519c..9008635 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
if (g_atomic_int_dec_and_test(&session->refcount) == FALSE)
return;
+ if (session->agent_watch)
+ g_dbus_remove_watch(session->conn, session->agent_watch);
+
if (session->agent_name != NULL) {
DBusMessage *message;
session->agent_name = g_strdup(sender);
session->agent_path = g_strdup(path);
- g_dbus_add_disconnect_watch(connection, sender,
+ session->agent_watch = g_dbus_add_disconnect_watch(connection, sender,
agent_disconnected, session, NULL);
return dbus_message_new_method_return(message);
diff --git a/obexd/client/session.h b/obexd/client/session.h
index dbef86c..06e0c77 100644
--- a/obexd/client/session.h
+++ b/obexd/client/session.h
gchar *filename;
gchar *agent_name;
gchar *agent_path;
+ guint agent_watch;
GPtrArray *pending;
};