1 #include "../test-utils.h"
4 die (const char *message, ...)
7 va_start (args, message);
8 vfprintf (stderr, message, args);
13 static DBusHandlerResult
14 filter_private_message (DBusConnection *connection,
18 if (dbus_message_is_signal (message,
22 DBusLoop *loop = user_data;
23 _dbus_loop_quit (loop);
24 return DBUS_HANDLER_RESULT_HANDLED;
26 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
30 open_shutdown_private_connection (dbus_bool_t use_guid)
34 DBusConnection *session;
37 DBusConnection *privconn;
41 dbus_error_init (&error);
43 loop = _dbus_loop_new ();
45 session = dbus_bus_get (DBUS_BUS_SESSION, &error);
47 die ("couldn't access session bus\n");
48 dbus_connection_set_exit_on_disconnect (session, FALSE);
49 msg = dbus_message_new_method_call ("org.freedesktop.DBus.TestSuite.PrivServer",
51 "org.freedesktop.DBus.TestSuite.PrivServer",
53 if (!(reply = dbus_connection_send_with_reply_and_block (session, msg, -1, &error)))
54 die ("couldn't send message: %s\n", error.message);
55 dbus_message_unref (msg);
56 if (!dbus_message_get_args (reply, &error, DBUS_TYPE_STRING, &addr, DBUS_TYPE_INVALID))
57 die ("couldn't parse message replym\n");
58 printf ("got private temp address %s\n", addr);
62 char *comma = strrchr (addr, ',');
66 privconn = dbus_connection_open (addr, &error);
69 die ("couldn't connect to server direct connection: %s\n", error.message);
70 dbus_message_unref (reply);
72 dbus_connection_set_exit_on_disconnect (privconn, FALSE);
73 dbus_connection_add_filter (privconn, filter_private_message, loop, NULL);
74 test_connection_setup (loop, privconn);
76 msg = dbus_message_new_method_call ("org.freedesktop.DBus.TestSuite.PrivServer",
78 "org.freedesktop.DBus.TestSuite.PrivServer",
80 if (!dbus_connection_send (session, msg, NULL))
81 die ("couldn't send Quit message\n");
82 dbus_message_unref (msg);
84 _dbus_loop_run (loop);
86 test_connection_shutdown (loop, session);
87 dbus_connection_unref (session);
89 test_connection_shutdown (loop, privconn);
90 dbus_connection_remove_filter (privconn, filter_private_message, loop);
91 dbus_connection_unref (privconn);
93 _dbus_loop_unref (loop);
97 main (int argc, char *argv[])
99 open_shutdown_private_connection (TRUE);
103 open_shutdown_private_connection (TRUE);
107 open_shutdown_private_connection (FALSE);
111 open_shutdown_private_connection (FALSE);