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 ()
34 DBusConnection *session;
37 DBusConnection *privconn;
40 dbus_error_init (&error);
42 loop = _dbus_loop_new ();
44 session = dbus_bus_get (DBUS_BUS_SESSION, &error);
46 die ("couldn't access session bus\n");
47 dbus_connection_set_exit_on_disconnect (session, FALSE);
48 msg = dbus_message_new_method_call ("org.freedesktop.DBus.TestSuite.TestServer",
50 "org.freedesktop.DBus.TestSuite.TestServer",
52 if (!(reply = dbus_connection_send_with_reply_and_block (session, msg, -1, &error)))
53 die ("couldn't send message: %s\n", error.message);
54 dbus_message_unref (msg);
55 if (!dbus_message_get_args (reply, &error, DBUS_TYPE_STRING, &addr, DBUS_TYPE_INVALID))
56 die ("couldn't parse message replym\n");
57 printf ("got private temp address %s\n", addr);
59 privconn = dbus_connection_open (addr, &error);
61 die ("couldn't connect to server direct connection: %s\n", error.message);
62 dbus_message_unref (reply);
64 dbus_connection_set_exit_on_disconnect (privconn, FALSE);
65 dbus_connection_add_filter (privconn, filter_private_message, loop, NULL);
66 test_connection_setup (loop, privconn);
68 msg = dbus_message_new_method_call ("org.freedesktop.DBus.TestSuite.TestServer",
70 "org.freedesktop.DBus.TestSuite.TestServer",
72 if (!dbus_connection_send (session, msg, NULL))
73 die ("couldn't send Quit message\n");
74 dbus_message_unref (msg);
76 _dbus_loop_run (loop);
78 test_connection_shutdown (loop, session);
79 dbus_connection_unref (session);
81 test_connection_shutdown (loop, privconn);
82 dbus_connection_remove_filter (privconn, filter_private_message, loop);
83 dbus_connection_unref (privconn);
85 _dbus_loop_unref (loop);
89 main (int argc, char *argv[])
91 open_shutdown_private_connection ();
96 open_shutdown_private_connection ();