summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@daimi.au.dk>2009-04-19 21:28:37 -0400
committerSøren Sandmann Pedersen <sandmann@daimi.au.dk>2009-04-19 21:28:37 -0400
commit33d5a3f6ec7964dac837e550342b771d2fbc5c59 (patch)
tree8d0ebad1f6eabce22ff715721e64726c33777cf6
parent9da7c4a39b96be96fb5c0c34ef305c81151df898 (diff)
Remove released names from connection
-rw-r--r--dbus-int.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/dbus-int.c b/dbus-int.c
index 998b412..dbbe06d 100644
--- a/dbus-int.c
+++ b/dbus-int.c
@@ -410,8 +410,8 @@ connection_unregister_object (connection_t *connection,
}
}
-static gboolean
-owns_name (connection_t *connection,
+static char *
+find_name (connection_t *connection,
const char *name)
{
char **n;
@@ -419,20 +419,24 @@ owns_name (connection_t *connection,
for (n = connection->names; *n; n++)
{
if (strcmp (*n, name) == 0)
- return TRUE;
+ return *n;
}
- return FALSE;
+ return NULL;
}
void
connection_release_name (connection_t *connection,
const char * name)
{
- if (!owns_name (connection, name))
+ char *n;
+
+ if (!(n = find_name (connection, name)))
return;
- /* FIXME: errors? */
+ g_free (n);
+
+ connection->names = nul_array_remove_fast (connection->names, n);
dbus_bus_release_name (connection->dconnection, name, NULL);
}
@@ -450,7 +454,7 @@ connection_request_name (connection_t *connection,
* DBUS_FLAG_DO_NOT_QUEUE
*/
- if (owns_name (connection, name))
+ if (find_name (connection, name))
return TRUE; /* Should we g_critical here? */
r = dbus_bus_request_name (connection->dconnection,