summaryrefslogtreecommitdiffstats
path: root/bus/bus.c
diff options
context:
space:
mode:
Diffstat (limited to 'bus/bus.c')
-rw-r--r--bus/bus.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/bus/bus.c b/bus/bus.c
index 6c5a3f28..e426706a 100644
--- a/bus/bus.c
+++ b/bus/bus.c
@@ -107,7 +107,10 @@ server_get_context (DBusServer *server)
bd = BUS_SERVER_DATA (server);
if (bd == NULL)
- return NULL;
+ {
+ server_data_slot_unref ();
+ return NULL;
+ }
context = bd->context;
@@ -314,7 +317,7 @@ bus_context_new (const DBusString *config_file,
BUS_SET_OOM (error);
return NULL;
}
-
+
if (!server_data_slot_ref ())
{
BUS_SET_OOM (error);
@@ -339,6 +342,12 @@ bus_context_new (const DBusString *config_file,
context->refcount = 1;
+ /* we need another ref of the server data slot for the context
+ * to own
+ */
+ if (!server_data_slot_ref ())
+ _dbus_assert_not_reached ("second ref of server data slot failed");
+
#ifdef DBUS_BUILD_TESTS
context->activation_timeout = 6000; /* 6 seconds */
#else
@@ -542,6 +551,7 @@ bus_context_new (const DBusString *config_file,
bus_config_parser_unref (parser);
_dbus_string_free (&full_address);
dbus_free_string_array (auth_mechanisms);
+ server_data_slot_unref ();
return context;
@@ -678,6 +688,12 @@ bus_context_get_type (BusContext *context)
return context->type;
}
+const char*
+bus_context_get_address (BusContext *context)
+{
+ return context->address;
+}
+
BusRegistry*
bus_context_get_registry (BusContext *context)
{