From 66e1cb9e68ba37980f7a90c396950be1587cdcd7 Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Mon, 3 Oct 2005 19:55:56 +0000 Subject: * bus/driver.c (bus_driver_handle_introspect): Add signals to the introspect data. (patch from Daniel P. Berrange ) * bus/dispatch.c (check_existent_ping): Add testcase for Ping * dbus/dbus-connection.c (_dbus_connection_peer_filter, _dbus_connection_run_builtin_filters): Changed these to be unlock_no_update functions and call _dbus_connection_send_unlocked_no_update instead of dbus_connection_send to avoid locking errors. * doc/TODO: Removed the make Ping test TODO --- bus/dispatch.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ bus/driver.c | 39 ++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) (limited to 'bus') diff --git a/bus/dispatch.c b/bus/dispatch.c index 9bb55bf1..aae7f707 100644 --- a/bus/dispatch.c +++ b/bus/dispatch.c @@ -2877,6 +2877,65 @@ check_existent_hello_from_self (BusContext *context, return TRUE; } +/* returns TRUE if the correct thing happens, + * but the correct thing may include OOM errors. + */ +static dbus_bool_t +check_existent_ping (BusContext *context, + DBusConnection *connection) +{ + DBusMessage *message; + dbus_uint32_t serial; + message = dbus_message_new_method_call (EXISTENT_SERVICE_NAME, + "/org/freedesktop/TestSuite", + "org.freedesktop.DBus.Peer", + "Ping"); + + if (message == NULL) + return TRUE; + + if (!dbus_connection_send (connection, message, &serial)) + { + dbus_message_unref (message); + return TRUE; + } + + dbus_message_unref (message); + message = NULL; + + bus_test_run_everything (context); + + /* Note: if this test is run in OOM mode, it will block when the bus + * doesn't send a reply due to OOM. + */ + block_connection_until_message_from_bus (context, connection, "reply from running Ping"); + + message = pop_message_waiting_for_memory (connection); + if (message == NULL) + { + _dbus_warn ("Failed to pop message! Should have been reply from Ping message\n"); + return FALSE; + } + + if (dbus_message_get_reply_serial (message) != serial) + { + _dbus_warn ("Wrong reply serial\n"); + dbus_message_unref (message); + return FALSE; + } + + if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_METHOD_RETURN) + { + _dbus_warn ("Unexpected message return during Ping\n"); + dbus_message_unref (message); + return FALSE; + } + + dbus_message_unref (message); + message = NULL; + + return TRUE; +} /* returns TRUE if the correct thing happens, * but the correct thing may include OOM errors. @@ -3053,6 +3112,9 @@ check_existent_service_auto_start (BusContext *context, dbus_message_unref (message); message = NULL; + if (!check_existent_ping (context, connection)) + goto out; + if (!check_existent_hello_from_self (context, connection)) goto out; diff --git a/bus/driver.c b/bus/driver.c index da4edaa7..9e8df517 100644 --- a/bus/driver.c +++ b/bus/driver.c @@ -1280,6 +1280,45 @@ bus_driver_handle_introspect (DBusConnection *connection, ++i; } + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append_printf (&xml, " \n")) + goto oom; + + if (!_dbus_string_append (&xml, " \n")) goto oom; -- cgit