summaryrefslogtreecommitdiffstats
path: root/bus
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-03-16 21:01:57 +0000
committerHavoc Pennington <hp@redhat.com>2003-03-16 21:01:57 +0000
commitd1f65c6c4f9dd9750f9ad3eda5b590a4ffca6498 (patch)
treea5e6728794bc55602755fc7fff1eb51613222ade /bus
parentebb57e719c32becd95a1efe3dd269c21e5a011b6 (diff)
2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-bus.c (ensure_bus_data): handle failure to set connection data * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
Diffstat (limited to 'bus')
-rw-r--r--bus/connection.c11
-rw-r--r--bus/dispatch.c12
2 files changed, 21 insertions, 2 deletions
diff --git a/bus/connection.c b/bus/connection.c
index 2169d8ab..80afc7e1 100644
--- a/bus/connection.c
+++ b/bus/connection.c
@@ -58,8 +58,11 @@ bus_connection_disconnected (DBusConnection *connection)
BusService *service;
d = BUS_CONNECTION_DATA (connection);
- _dbus_assert (d != NULL);
+ _dbus_assert (d != NULL);
+ _dbus_verbose ("%s disconnected, dropping all service ownership and releasing\n",
+ d->name ? d->name : "(inactive)");
+
/* Drop any service ownership. FIXME Unfortunately, this requires
* memory allocation and there doesn't seem to be a good way to
* handle it other than sleeping; we can't "fail" the operation of
@@ -551,6 +554,8 @@ bus_connection_set_name (DBusConnection *connection,
if (d->name == NULL)
return FALSE;
+ _dbus_verbose ("Name %s assigned to %p\n", d->name, connection);
+
return TRUE;
}
@@ -654,11 +659,15 @@ bus_transaction_send_message (BusTransaction *transaction,
to_send->message = message;
to_send->transaction = transaction;
+ _dbus_verbose ("about to prepend message\n");
+
if (!_dbus_list_prepend (&d->transaction_messages, to_send))
{
message_to_send_free (connection, to_send);
return FALSE;
}
+
+ _dbus_verbose ("prepended message\n");
/* See if we already had this connection in the list
* for this transaction. If we have a pending message,
diff --git a/bus/dispatch.c b/bus/dispatch.c
index 3c96d704..639b9509 100644
--- a/bus/dispatch.c
+++ b/bus/dispatch.c
@@ -412,7 +412,16 @@ static dbus_bool_t check_no_leftovers (BusContext *context);
static void
flush_bus (BusContext *context)
-{
+{
+ /* This is race condition city, obviously. since we're all in one
+ * process we can't block, we just have to wait for data we put in
+ * one end of the debug pipe to come out the other end...
+ * a more robust setup would be good.
+ */
+
+ while (bus_loop_iterate (FALSE))
+ ;
+ _dbus_sleep_milliseconds (15);
while (bus_loop_iterate (FALSE))
;
}
@@ -863,6 +872,7 @@ check_hello_connection (BusContext *context)
_dbus_assert_not_reached ("message other than disconnect dispatched after failure to register");
dbus_connection_unref (connection);
_dbus_assert (!bus_test_client_listed (connection));
+
return TRUE;
}
else