Commit 735fcf91 authored by Peng Huang's avatar Peng Huang Committed by David Zeuthen

Bug 632544 – Cannot send a locked message with PRESERVE_SERIAL flag

https://bugzilla.gnome.org/show_bug.cgi?id=632544Signed-off-by: default avatarDavid Zeuthen <davidz@redhat.com>
parent a855f727
......@@ -1452,7 +1452,8 @@ g_dbus_connection_send_message_unlocked (GDBusConnection *connection,
if (out_serial != NULL)
*out_serial = serial_to_use;
g_dbus_message_set_serial (message, serial_to_use);
if (!(flags & G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL))
g_dbus_message_set_serial (message, serial_to_use);
g_dbus_message_lock (message);
_g_dbus_worker_send_message (connection->worker,
......
......@@ -878,6 +878,18 @@ test_connection_filter (void)
while (data.num_handled == 1)
g_thread_yield ();
m2 = g_dbus_message_copy (m, &error);
g_assert_no_error (error);
g_dbus_message_set_serial (m2, data.serial);
/* lock the message to test PRESERVE_SERIAL flag. */
g_dbus_message_lock (m2);
g_dbus_connection_send_message (c, m2, G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL, &data.serial, &error);
g_object_unref (m2);
g_assert_no_error (error);
while (data.num_handled == 2)
g_thread_yield ();
m2 = g_dbus_message_copy (m, &error);
g_assert_no_error (error);
r = g_dbus_connection_send_message_with_reply_sync (c,
......@@ -891,7 +903,7 @@ test_connection_filter (void)
g_assert_no_error (error);
g_assert (r != NULL);
g_object_unref (r);
g_assert_cmpint (data.num_handled, ==, 3);
g_assert_cmpint (data.num_handled, ==, 4);
g_dbus_connection_remove_filter (c, filter_id);
......@@ -908,8 +920,8 @@ test_connection_filter (void)
g_assert_no_error (error);
g_assert (r != NULL);
g_object_unref (r);
g_assert_cmpint (data.num_handled, ==, 3);
g_assert_cmpint (data.num_outgoing, ==, 3);
g_assert_cmpint (data.num_handled, ==, 4);
g_assert_cmpint (data.num_outgoing, ==, 4);
/* this is safe; testserver will exit once the bus goes away */
g_assert (g_spawn_command_line_async (SRCDIR "/gdbus-testserver.py", NULL));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment