Fix GDBusWatchFunction usage
diff --git a/src/adapter.c b/src/adapter.c
index bb58928..bf65ace 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -700,6 +700,13 @@
 	g_free(req);
 }
 
+static void session_owner_exit(DBusConnection *conn, void *user_data)
+{
+	struct session_req *req = user_data;
+
+	session_free(req);
+}
+
 static struct session_req *session_ref(struct session_req *req)
 {
 	req->refcount++;
@@ -1515,7 +1522,7 @@
 
 done:
 	req = create_session(adapter, conn, msg, 0,
-			(GDBusWatchFunction) session_free);
+				session_owner_exit);
 
 	adapter->disc_sessions = g_slist_append(adapter->disc_sessions, req);
 
@@ -1737,7 +1744,7 @@
 	req = find_session(adapter->mode_sessions, msg);
 	if (!req) {
 		req = create_session(adapter, conn, msg, new_mode,
-					(GDBusWatchFunction) session_free);
+					session_owner_exit);
 		adapter->mode_sessions = g_slist_append(adapter->mode_sessions,
 					req);
 	} else {