mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
Bug 627188 – gdbus-non-socket test occasionally fails
Fix logical bug in test case to avoid race condition between the client and the server. Signed-off-by: David Zeuthen <davidz@redhat.com>
This commit is contained in:
@@ -237,9 +237,20 @@ test_non_socket (void)
|
|||||||
stream = my_io_stream_new_for_fds (read_fd, write_fd);
|
stream = my_io_stream_new_for_fds (read_fd, write_fd);
|
||||||
guid = g_dbus_generate_guid ();
|
guid = g_dbus_generate_guid ();
|
||||||
error = NULL;
|
error = NULL;
|
||||||
|
/* We need to delay message processing to avoid the race
|
||||||
|
* described in
|
||||||
|
*
|
||||||
|
* https://bugzilla.gnome.org/show_bug.cgi?id=627188
|
||||||
|
*
|
||||||
|
* This is because (early) dispatching is done on the IO thread
|
||||||
|
* (method_call() isn't called until we're in the right thread
|
||||||
|
* though) so in rare cases the parent sends the message before
|
||||||
|
* we (the child) register the object
|
||||||
|
*/
|
||||||
connection = g_dbus_connection_new_sync (stream,
|
connection = g_dbus_connection_new_sync (stream,
|
||||||
guid,
|
guid,
|
||||||
G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER,
|
G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER |
|
||||||
|
G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING,
|
||||||
NULL, /* GDBusAuthObserver */
|
NULL, /* GDBusAuthObserver */
|
||||||
NULL,
|
NULL,
|
||||||
&error);
|
&error);
|
||||||
@@ -250,9 +261,6 @@ test_non_socket (void)
|
|||||||
/* make sure we exit along with the parent */
|
/* make sure we exit along with the parent */
|
||||||
g_dbus_connection_set_exit_on_close (connection, TRUE);
|
g_dbus_connection_set_exit_on_close (connection, TRUE);
|
||||||
|
|
||||||
/* btw, no need to delay message processing since method
|
|
||||||
* invocations are delivered via the main loop
|
|
||||||
*/
|
|
||||||
error = NULL;
|
error = NULL;
|
||||||
g_dbus_connection_register_object (connection,
|
g_dbus_connection_register_object (connection,
|
||||||
"/pokee",
|
"/pokee",
|
||||||
@@ -263,6 +271,9 @@ test_non_socket (void)
|
|||||||
&error);
|
&error);
|
||||||
g_assert_no_error (error);
|
g_assert_no_error (error);
|
||||||
|
|
||||||
|
/* and now start message processing */
|
||||||
|
g_dbus_connection_start_message_processing (connection);
|
||||||
|
|
||||||
g_main_loop_run (loop);
|
g_main_loop_run (loop);
|
||||||
|
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
|
Reference in New Issue
Block a user