diff --git a/NEWS b/NEWS index 93eddc5f..a106a625 100644 --- a/NEWS +++ b/NEWS @@ -14,8 +14,20 @@ Fixes: , apply the same relocation as for the Exec paths in .service files (fd.o #92028, Simon McVittie) -• On Windows, fix the regression test for relocating service files' Exec - lines (fd.o #83539, Simon McVittie) +• On Windows, don't crash if or --syslog is used + (fd.o #92538, Ralf Habacker) + +• On Windows, fix various failing tests: + · don't test system.conf features (users, groups) that only make sense + on the system bus, which is not supported on Windows + · don't call _dbus_warn() when we skip a test, since it is fatal + · fix computation of expected + · when running TAP tests, translate newlines to Unix format, fixing + cross-compiled tests under Wine on Linux + · don't stress-test refcounting under Wine, where it's really slow + · stop assuming that a message looped-back to the test will be received + immediately + (fd.o #83539, #92538, fd.o #92721; Ralf Habacker, Simon McVittie) D-Bus 1.10.2 (2015-10-26) == diff --git a/bus/dispatch.c b/bus/dispatch.c index 3ea944ab..4d9ffa3f 100644 --- a/bus/dispatch.c +++ b/bus/dispatch.c @@ -653,6 +653,7 @@ typedef struct const char *expected_service_name; dbus_bool_t failed; DBusConnection *skip_connection; + BusContext *context; } CheckServiceOwnerChangedData; static dbus_bool_t @@ -674,9 +675,14 @@ check_service_owner_changed_foreach (DBusConnection *connection, message = pop_message_waiting_for_memory (connection); if (message == NULL) { - _dbus_warn ("Did not receive a message on %p, expecting %s\n", - connection, "NameOwnerChanged"); - goto out; + block_connection_until_message_from_bus (d->context, connection, "NameOwnerChanged"); + message = pop_message_waiting_for_memory (connection); + if (message == NULL) + { + _dbus_warn ("Did not receive a message on %p, expecting %s\n", + connection, "NameOwnerChanged"); + goto out; + } } else if (!dbus_message_is_signal (message, DBUS_INTERFACE_DBUS, @@ -789,6 +795,7 @@ kill_client_connection (BusContext *context, socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = NULL; + socd.context = context; bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -941,8 +948,6 @@ check_hello_message (BusContext *context, return TRUE; } - dbus_connection_unref (connection); - message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -1019,6 +1024,8 @@ check_hello_message (BusContext *context, socd.expected_service_name = name; socd.failed = FALSE; socd.skip_connection = connection; /* we haven't done AddMatch so won't get it ourselves */ + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -1031,9 +1038,14 @@ check_hello_message (BusContext *context, message = pop_message_waiting_for_memory (connection); if (message == NULL) { - _dbus_warn ("Expecting %s, got nothing\n", + block_connection_until_message_from_bus (context, connection, "signal NameAcquired"); + message = pop_message_waiting_for_memory (connection); + if (message == NULL) + { + _dbus_warn ("Expecting %s, got nothing\n", "NameAcquired"); - goto out; + goto out; + } } if (! dbus_message_is_signal (message, DBUS_INTERFACE_DBUS, "NameAcquired")) @@ -1090,6 +1102,8 @@ check_hello_message (BusContext *context, if (name_message) dbus_message_unref (name_message); + dbus_connection_unref (connection); + return retval; } @@ -2086,6 +2100,8 @@ check_base_service_activated (BusContext *context, socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = connection; + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -2190,6 +2206,8 @@ check_service_activated (BusContext *context, socd.skip_connection = connection; socd.failed = FALSE; socd.expected_service_name = service_name; + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -2327,6 +2345,8 @@ check_service_auto_activated (BusContext *context, socd.expected_service_name = service_name; socd.failed = FALSE; socd.skip_connection = connection; + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -2376,6 +2396,8 @@ check_service_deactivated (BusContext *context, socd.expected_service_name = activated_name; socd.failed = FALSE; socd.skip_connection = NULL; + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -2386,6 +2408,8 @@ check_service_deactivated (BusContext *context, socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = NULL; + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -2833,6 +2857,7 @@ check_existent_service_no_auto_start (BusContext *context, socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = NULL; + socd.context = context; bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -3453,6 +3478,8 @@ check_existent_service_auto_start (BusContext *context, socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = NULL; + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -4141,6 +4168,8 @@ check_shell_service_success_auto_start (BusContext *context, socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = NULL; + socd.context = context; + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd);