1dbecdeabb20e0ce11121819c63373f0afba57c58Marcus Brinkmann#include <config.h> 298572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington 398572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington#include "test-utils.h" 4fd049c345564b36a2b5b83d00e6e3c675d04309fRalf Habacker#ifdef HAVE_UNISTD_H 5e5310abd6cbc4c2e1a9df54f097d6642ad0833c6Colin Walters#include <unistd.h> 6fd049c345564b36a2b5b83d00e6e3c675d04309fRalf Habacker#endif 798572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington 898572905e60cac7ea971aa0830e2a629bfff208dHavoc Penningtonstatic DBusLoop *loop; 951781f541094a4936d47119cd62682e0431c41e9Havoc Penningtonstatic dbus_bool_t already_quit = FALSE; 107020b573764bb86551d329e867c2e87172424c9bHavoc Penningtonstatic dbus_bool_t hello_from_self_reply_received = FALSE; 11fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington 12fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Penningtonstatic void 13fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Penningtonquit (void) 14fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington{ 15fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington if (!already_quit) 16fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington { 17fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington _dbus_loop_quit (loop); 18fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington already_quit = TRUE; 19fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington } 20fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington} 21eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington 22f216e81432ddf04889202c33a6e68113f94d7611Havoc Penningtonstatic void 23f216e81432ddf04889202c33a6e68113f94d7611Havoc Penningtondie (const char *message) 24f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington{ 25f7beca572b341c4cabf2f97a9f0d6d763e6acb40Havoc Pennington fprintf (stderr, "*** test-service: %s", message); 26f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington exit (1); 27f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington} 28f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 29a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (Jstatic void 30a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (Jcheck_hello_from_self_reply (DBusPendingCall *pcall, 31a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J void *user_data) 32a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J{ 33a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusMessage *reply; 34c1091cbbd2477699dc16f8c8e3d15fea2f68d603John (J DBusMessage *echo_message, *echo_reply = NULL; 35a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusError error; 36a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusConnection *connection; 37a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 38a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J int type; 39a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 40a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_error_init (&error); 41a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 42a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J connection = dbus_bus_get (DBUS_BUS_STARTER, &error); 43a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (connection == NULL) 44a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 45a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J fprintf (stderr, "*** Failed to open connection to activating message bus: %s\n", 46a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J error.message); 47a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_error_free (&error); 48a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die("no memory"); 49a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 50a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 51a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 52a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J echo_message = (DBusMessage *)user_data; 53a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 54a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J reply = dbus_pending_call_steal_reply (pcall); 55a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 56a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J type = dbus_message_get_type (reply); 57a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 58a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (type == DBUS_MESSAGE_TYPE_METHOD_RETURN) 59a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 60a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J const char *s; 617020b573764bb86551d329e867c2e87172424c9bHavoc Pennington printf ("Reply from HelloFromSelf received\n"); 62a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 63a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_message_get_args (echo_message, 64a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J &error, 65a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBUS_TYPE_STRING, &s, 66a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBUS_TYPE_INVALID)) 67a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 68a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J echo_reply = dbus_message_new_error (echo_message, 69a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J error.name, 70a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J error.message); 71a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 72a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (echo_reply == NULL) 73a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory\n"); 74a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 75a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 76a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J else 77a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 78a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J echo_reply = dbus_message_new_method_return (echo_message); 79a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (echo_reply == NULL) 80a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory\n"); 81a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 82a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_message_append_args (echo_reply, 83a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBUS_TYPE_STRING, &s, 84a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBUS_TYPE_INVALID)) 85a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory"); 86a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 87a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 88a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_connection_send (connection, echo_reply, NULL)) 89a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory\n"); 90a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 91a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_message_unref (echo_reply); 92a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 93a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J else if (type == DBUS_MESSAGE_TYPE_ERROR) 94a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 95a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_set_error_from_message (&error, reply); 96a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J printf ("Error type in reply: %s\n", error.message); 97a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 98a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (strcmp (error.name, DBUS_ERROR_NO_MEMORY) != 0) 99a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 100a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J echo_reply = dbus_message_new_error (echo_reply, 101a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J error.name, 102a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J error.message); 103a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 104a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (echo_reply == NULL) 105a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory\n"); 106a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 107a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_connection_send (connection, echo_reply, NULL)) 108a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory\n"); 109a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 110a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_message_unref (echo_reply); 111a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 112a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_error_free (&error); 113a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 114a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J else 1157020b573764bb86551d329e867c2e87172424c9bHavoc Pennington _dbus_assert_not_reached ("Unexpected message received\n"); 116a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 1177020b573764bb86551d329e867c2e87172424c9bHavoc Pennington hello_from_self_reply_received = TRUE; 118a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 119a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_message_unref (reply); 120a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_message_unref (echo_message); 121a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_pending_call_unref (pcall); 1221eae184450a585f10c8988613e0f7259e1d6066aJohn (J dbus_connection_unref (connection); 123a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J} 124a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 125a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (Jstatic DBusHandlerResult 126a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (Jhandle_run_hello_from_self (DBusConnection *connection, 127a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusMessage *message) 128a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J{ 129a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusError error; 130a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusMessage *reply, *self_message; 131a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusPendingCall *pcall; 132a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J char *s; 133a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 134a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J _dbus_verbose ("sending reply to Echo method\n"); 135a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 136a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_error_init (&error); 137a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 138a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_message_get_args (message, 139a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J &error, 140a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBUS_TYPE_STRING, &s, 141a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBUS_TYPE_INVALID)) 142a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 143a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J reply = dbus_message_new_error (message, 144a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J error.name, 145a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J error.message); 146a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 147a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (reply == NULL) 148a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory\n"); 149a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 150a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_connection_send (connection, reply, NULL)) 151a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory\n"); 152a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 153a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_message_unref (reply); 154a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 155a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; 156a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 157a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J printf ("Sending HelloFromSelf\n"); 158a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 159a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J _dbus_verbose ("*** Sending message to self\n"); 160a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J self_message = dbus_message_new_method_call ("org.freedesktop.DBus.TestSuiteEchoService", 161a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J "/org/freedesktop/TestSuite", 162a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J "org.freedesktop.TestSuite", 163a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J "HelloFromSelf"); 164a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 165a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (self_message == NULL) 166a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory"); 167a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 168a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_connection_send_with_reply (connection, self_message, &pcall, -1)) 169a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die("No memory"); 170a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 171a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J dbus_message_ref (message); 172a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_pending_call_set_notify (pcall, check_hello_from_self_reply, (void *)message, NULL)) 173a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die("No memory"); 174a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 175a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J printf ("Sent HelloFromSelf\n"); 176a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J return DBUS_HANDLER_RESULT_HANDLED; 177a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J} 178a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 179f216e81432ddf04889202c33a6e68113f94d7611Havoc Penningtonstatic DBusHandlerResult 180a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Penningtonhandle_echo (DBusConnection *connection, 181a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington DBusMessage *message) 182f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington{ 183f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington DBusError error; 184f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington DBusMessage *reply; 185f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington char *s; 18675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 18775742242000e782719bc1656f0a7da72b059e88eHavoc Pennington _dbus_verbose ("sending reply to Echo method\n"); 188f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 189f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington dbus_error_init (&error); 190f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 191f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington if (!dbus_message_get_args (message, 192f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington &error, 193f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington DBUS_TYPE_STRING, &s, 194f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington DBUS_TYPE_INVALID)) 195f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington { 196b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington reply = dbus_message_new_error (message, 197b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington error.name, 198b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington error.message); 199f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 200f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington if (reply == NULL) 201f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington die ("No memory\n"); 202f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 203f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington if (!dbus_connection_send (connection, reply, NULL)) 204f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington die ("No memory\n"); 205f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 206f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington dbus_message_unref (reply); 207f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 2085c1a8e44903bd1dedc8cbefad78b0c8b61daada5Havoc Pennington return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; 209f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington } 210f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 211b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington reply = dbus_message_new_method_return (message); 212f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington if (reply == NULL) 213f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington die ("No memory\n"); 214c5020ac870c5990a36c3576453cc23431213e8bfAlexander Larsson 215d6e1b2adb3d8e51ce1bb47295cef12d9fe1a15a8Havoc Pennington if (!dbus_message_append_args (reply, 2169c3d566e95c9080f6040c64531b0ccae22bd5d74Havoc Pennington DBUS_TYPE_STRING, &s, 217d6e1b2adb3d8e51ce1bb47295cef12d9fe1a15a8Havoc Pennington DBUS_TYPE_INVALID)) 218f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington die ("No memory"); 219d6e1b2adb3d8e51ce1bb47295cef12d9fe1a15a8Havoc Pennington 220f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington if (!dbus_connection_send (connection, reply, NULL)) 221f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington die ("No memory\n"); 222d6e1b2adb3d8e51ce1bb47295cef12d9fe1a15a8Havoc Pennington 223d6e1b2adb3d8e51ce1bb47295cef12d9fe1a15a8Havoc Pennington fprintf (stderr, "Echo service echoed string: \"%s\"\n", s); 224f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 225f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington dbus_message_unref (reply); 226f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 227d6e1b2adb3d8e51ce1bb47295cef12d9fe1a15a8Havoc Pennington return DBUS_HANDLER_RESULT_HANDLED; 228f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington} 229f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 230c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnantstatic DBusHandlerResult 231c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnanthandle_delay_echo (DBusConnection *connection, 232c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant DBusMessage *message) 233c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant{ 234c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant DBusError error; 235c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant DBusMessage *reply; 236c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant char *s; 237c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 238c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant _dbus_verbose ("sleeping for a short time\n"); 239c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 240fd049c345564b36a2b5b83d00e6e3c675d04309fRalf Habacker _dbus_sleep_milliseconds (50); 241c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 242c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant _dbus_verbose ("sending reply to DelayEcho method\n"); 243c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 244c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant dbus_error_init (&error); 245c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 246c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant if (!dbus_message_get_args (message, 247c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant &error, 248c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant DBUS_TYPE_STRING, &s, 249c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant DBUS_TYPE_INVALID)) 250c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant { 251c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant reply = dbus_message_new_error (message, 252c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant error.name, 253c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant error.message); 254c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 255c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant if (reply == NULL) 256c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant die ("No memory\n"); 257c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 258c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant if (!dbus_connection_send (connection, reply, NULL)) 259c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant die ("No memory\n"); 260c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 261c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant dbus_message_unref (reply); 262c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 263c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; 264c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant } 265c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 266c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant reply = dbus_message_new_method_return (message); 267c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant if (reply == NULL) 268c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant die ("No memory\n"); 269c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 270c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant if (!dbus_message_append_args (reply, 271c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant DBUS_TYPE_STRING, &s, 272c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant DBUS_TYPE_INVALID)) 273c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant die ("No memory"); 274c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 275c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant if (!dbus_connection_send (connection, reply, NULL)) 276c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant die ("No memory\n"); 277c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 278c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant fprintf (stderr, "DelayEcho service echoed string: \"%s\"\n", s); 279c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 280c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant dbus_message_unref (reply); 281c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 282c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant return DBUS_HANDLER_RESULT_HANDLED; 283c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant} 284c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 285c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant 28675742242000e782719bc1656f0a7da72b059e88eHavoc Penningtonstatic void 28775742242000e782719bc1656f0a7da72b059e88eHavoc Penningtonpath_unregistered_func (DBusConnection *connection, 28875742242000e782719bc1656f0a7da72b059e88eHavoc Pennington void *user_data) 28975742242000e782719bc1656f0a7da72b059e88eHavoc Pennington{ 29075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington /* connection was finalized */ 29175742242000e782719bc1656f0a7da72b059e88eHavoc Pennington} 29275742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 293a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Penningtonstatic DBusHandlerResult 29475742242000e782719bc1656f0a7da72b059e88eHavoc Penningtonpath_message_func (DBusConnection *connection, 29575742242000e782719bc1656f0a7da72b059e88eHavoc Pennington DBusMessage *message, 29675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington void *user_data) 29775742242000e782719bc1656f0a7da72b059e88eHavoc Pennington{ 29868a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington if (dbus_message_is_method_call (message, 29968a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington "org.freedesktop.TestSuite", 30068a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington "Echo")) 301a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington return handle_echo (connection, message); 30268a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington else if (dbus_message_is_method_call (message, 30368a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington "org.freedesktop.TestSuite", 304c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant "DelayEcho")) 305c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant return handle_delay_echo (connection, message); 306c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant else if (dbus_message_is_method_call (message, 307c1f165261afcc3bafa9b24ff916bb231628e3782Scott James Remnant "org.freedesktop.TestSuite", 30875742242000e782719bc1656f0a7da72b059e88eHavoc Pennington "Exit")) 30975742242000e782719bc1656f0a7da72b059e88eHavoc Pennington { 31075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington quit (); 31175742242000e782719bc1656f0a7da72b059e88eHavoc Pennington return DBUS_HANDLER_RESULT_HANDLED; 31275742242000e782719bc1656f0a7da72b059e88eHavoc Pennington } 31375742242000e782719bc1656f0a7da72b059e88eHavoc Pennington else if (dbus_message_is_method_call (message, 31475742242000e782719bc1656f0a7da72b059e88eHavoc Pennington "org.freedesktop.TestSuite", 31575742242000e782719bc1656f0a7da72b059e88eHavoc Pennington "EmitFoo")) 31675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington { 31775742242000e782719bc1656f0a7da72b059e88eHavoc Pennington /* Emit the Foo signal */ 31875742242000e782719bc1656f0a7da72b059e88eHavoc Pennington DBusMessage *signal; 3199c3d566e95c9080f6040c64531b0ccae22bd5d74Havoc Pennington double v_DOUBLE; 32075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 32175742242000e782719bc1656f0a7da72b059e88eHavoc Pennington _dbus_verbose ("emitting signal Foo\n"); 32275742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 32375742242000e782719bc1656f0a7da72b059e88eHavoc Pennington signal = dbus_message_new_signal ("/org/freedesktop/TestSuite", 32475742242000e782719bc1656f0a7da72b059e88eHavoc Pennington "org.freedesktop.TestSuite", 32575742242000e782719bc1656f0a7da72b059e88eHavoc Pennington "Foo"); 32675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington if (signal == NULL) 32775742242000e782719bc1656f0a7da72b059e88eHavoc Pennington die ("No memory\n"); 3289c3d566e95c9080f6040c64531b0ccae22bd5d74Havoc Pennington 3299c3d566e95c9080f6040c64531b0ccae22bd5d74Havoc Pennington v_DOUBLE = 42.6; 33075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington if (!dbus_message_append_args (signal, 3319c3d566e95c9080f6040c64531b0ccae22bd5d74Havoc Pennington DBUS_TYPE_DOUBLE, &v_DOUBLE, 33275742242000e782719bc1656f0a7da72b059e88eHavoc Pennington DBUS_TYPE_INVALID)) 33375742242000e782719bc1656f0a7da72b059e88eHavoc Pennington die ("No memory"); 33475742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 33575742242000e782719bc1656f0a7da72b059e88eHavoc Pennington if (!dbus_connection_send (connection, signal, NULL)) 33675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington die ("No memory\n"); 33775742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 33875742242000e782719bc1656f0a7da72b059e88eHavoc Pennington return DBUS_HANDLER_RESULT_HANDLED; 33975742242000e782719bc1656f0a7da72b059e88eHavoc Pennington } 340a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 341a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J else if (dbus_message_is_method_call (message, 342a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J "org.freedesktop.TestSuite", 343a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J "RunHelloFromSelf")) 344a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 345a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J return handle_run_hello_from_self (connection, message); 346a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 347a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J else if (dbus_message_is_method_call (message, 348a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J "org.freedesktop.TestSuite", 349a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J "HelloFromSelf")) 350a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J { 351a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusMessage *reply; 3527020b573764bb86551d329e867c2e87172424c9bHavoc Pennington printf ("Received the HelloFromSelf message\n"); 353a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 354a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J reply = dbus_message_new_method_return (message); 355a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (reply == NULL) 356a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory"); 357a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 358a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J if (!dbus_connection_send (connection, reply, NULL)) 359a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J die ("No memory"); 360afc2a6e56a65ff9154d4eb1b346157a7d625945dHavoc Pennington 361afc2a6e56a65ff9154d4eb1b346157a7d625945dHavoc Pennington return DBUS_HANDLER_RESULT_HANDLED; 362a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J } 36375742242000e782719bc1656f0a7da72b059e88eHavoc Pennington else 36475742242000e782719bc1656f0a7da72b059e88eHavoc Pennington return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; 36575742242000e782719bc1656f0a7da72b059e88eHavoc Pennington} 36675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 36775742242000e782719bc1656f0a7da72b059e88eHavoc Penningtonstatic DBusObjectPathVTable 36875742242000e782719bc1656f0a7da72b059e88eHavoc Penningtonecho_vtable = { 36975742242000e782719bc1656f0a7da72b059e88eHavoc Pennington path_unregistered_func, 37075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington path_message_func, 37175742242000e782719bc1656f0a7da72b059e88eHavoc Pennington NULL, 37275742242000e782719bc1656f0a7da72b059e88eHavoc Pennington}; 37375742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 37496f6740f2fbc16c7ee220d3d5abdc94e22da78f3Olivier Andrieu 37596f6740f2fbc16c7ee220d3d5abdc94e22da78f3Olivier Andrieustatic const char* echo_path = "/org/freedesktop/TestSuite" ; 37675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington 37775742242000e782719bc1656f0a7da72b059e88eHavoc Penningtonstatic DBusHandlerResult 37875742242000e782719bc1656f0a7da72b059e88eHavoc Penningtonfilter_func (DBusConnection *connection, 37975742242000e782719bc1656f0a7da72b059e88eHavoc Pennington DBusMessage *message, 38075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington void *user_data) 38175742242000e782719bc1656f0a7da72b059e88eHavoc Pennington{ 38275742242000e782719bc1656f0a7da72b059e88eHavoc Pennington if (dbus_message_is_signal (message, 383248895207dc15914ac7970a6d1431308075dca1dColin Walters DBUS_INTERFACE_LOCAL, 38475742242000e782719bc1656f0a7da72b059e88eHavoc Pennington "Disconnected")) 385a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington { 386fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington quit (); 3875c1a8e44903bd1dedc8cbefad78b0c8b61daada5Havoc Pennington return DBUS_HANDLER_RESULT_HANDLED; 388a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington } 389a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington else 390a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington { 3915c1a8e44903bd1dedc8cbefad78b0c8b61daada5Havoc Pennington return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; 392a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington } 393a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington} 394a7f69a41d5b82eb00da20b661181b490039bb70fHavoc Pennington 395eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Penningtonint 396eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Penningtonmain (int argc, 397eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington char **argv) 398eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington{ 399eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington DBusError error; 400f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington int result; 401a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J DBusConnection *connection; 402949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters const char *name; 403949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters dbus_bool_t do_fork; 404949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters 405949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters if (argc != 3) 406949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters { 407949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters name = "org.freedesktop.DBus.TestSuiteEchoService"; 408949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters do_fork = FALSE; 409949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters } 410949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters else 411949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters { 412949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters name = argv[1]; 413be51ff7e5ef2e9370fd2417614781f688576d37aRalf Habacker#ifndef DBUS_WIN 414949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters do_fork = strcmp (argv[2], "fork") == 0; 4157a4cd46284dd634c165b5c4eb23606b7c0ff4adeColin Walters#else 4167a4cd46284dd634c165b5c4eb23606b7c0ff4adeColin Walters do_fork = FALSE; 4177a4cd46284dd634c165b5c4eb23606b7c0ff4adeColin Walters#endif 418949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters } 419949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters 420949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters /* The bare minimum for simulating a program "daemonizing"; the intent 421949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters * is to test services which move from being legacy init scripts to 422949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters * activated services. 423949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters * https://bugzilla.redhat.com/show_bug.cgi?id=545267 424949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters */ 425be51ff7e5ef2e9370fd2417614781f688576d37aRalf Habacker#ifndef DBUS_WIN 426be51ff7e5ef2e9370fd2417614781f688576d37aRalf Habacker if (do_fork) 427949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters { 428949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters pid_t pid = fork (); 429949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters if (pid != 0) 430949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters exit (0); 431949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters sleep (1); 432949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters } 433be51ff7e5ef2e9370fd2417614781f688576d37aRalf Habacker#endif 434b7e77c6b035f634f372c1749e61c14bde18b5d95Colin Walters 435eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington dbus_error_init (&error); 4368873c90f99303f9cc308f15f8d03e637911f5b9eHavoc Pennington connection = dbus_bus_get (DBUS_BUS_STARTER, &error); 437eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington if (connection == NULL) 438eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington { 43975742242000e782719bc1656f0a7da72b059e88eHavoc Pennington fprintf (stderr, "*** Failed to open connection to activating message bus: %s\n", 44075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington error.message); 441eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington dbus_error_free (&error); 442eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington return 1; 443eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington } 444eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington 44598572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington loop = _dbus_loop_new (); 44698572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington if (loop == NULL) 44798572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington die ("No memory\n"); 44898572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington 44998572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington if (!test_connection_setup (loop, connection)) 45098572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington die ("No memory\n"); 451f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 4521dd3f1788f1b4c9af2f4fa744abdb7892d0a14b9Havoc Pennington if (!dbus_connection_add_filter (connection, 4531dd3f1788f1b4c9af2f4fa744abdb7892d0a14b9Havoc Pennington filter_func, NULL, NULL)) 454f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington die ("No memory"); 455f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 45675742242000e782719bc1656f0a7da72b059e88eHavoc Pennington if (!dbus_connection_register_object_path (connection, 45775742242000e782719bc1656f0a7da72b059e88eHavoc Pennington echo_path, 45875742242000e782719bc1656f0a7da72b059e88eHavoc Pennington &echo_vtable, 45964f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington (void*) 0xdeadbeef)) 46075742242000e782719bc1656f0a7da72b059e88eHavoc Pennington die ("No memory"); 461f4cffc0e49d48a8dbf158230d7e816d8713566daSeth Nickell 46264f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington { 46364f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington void *d; 46464f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington if (!dbus_connection_get_object_path_data (connection, echo_path, &d)) 46564f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington die ("No memory"); 46664f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington if (d != (void*) 0xdeadbeef) 46764f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington die ("dbus_connection_get_object_path_data() doesn't seem to work right\n"); 46864f3d8f67db09e0c84ed3ff009b86d0127fe82b4Havoc Pennington } 469949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters 470949a64b127a32a3e5a4ce4278773f18e290c44c2Colin Walters result = dbus_bus_request_name (connection, name, 4718873c90f99303f9cc308f15f8d03e637911f5b9eHavoc Pennington 0, &error); 472f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington if (dbus_error_is_set (&error)) 473f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington { 47496f6740f2fbc16c7ee220d3d5abdc94e22da78f3Olivier Andrieu fprintf (stderr, "Error %s\n", error.message); 47577eac31aee89346d1399193be6199b9b16fb77afHavoc Pennington _dbus_verbose ("*** Failed to acquire service: %s\n", 47677eac31aee89346d1399193be6199b9b16fb77afHavoc Pennington error.message); 477f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington dbus_error_free (&error); 478fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington exit (1); 479f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington } 480a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 48151781f541094a4936d47119cd62682e0431c41e9Havoc Pennington _dbus_verbose ("*** Test service entering main loop\n"); 48298572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington _dbus_loop_run (loop); 483a7595655fb892b4ecab852aeb971cf53bdff09ccJohn (J 484fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington test_connection_shutdown (loop, connection); 4851dd3f1788f1b4c9af2f4fa744abdb7892d0a14b9Havoc Pennington 4861dd3f1788f1b4c9af2f4fa744abdb7892d0a14b9Havoc Pennington dbus_connection_remove_filter (connection, filter_func, NULL); 487fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington 488eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington dbus_connection_unref (connection); 48998572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington 49098572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington _dbus_loop_unref (loop); 49198572905e60cac7ea971aa0830e2a629bfff208dHavoc Pennington loop = NULL; 492f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington 493f216e81432ddf04889202c33a6e68113f94d7611Havoc Pennington dbus_shutdown (); 494fe22b2194d53061fefe64d48ff6a53e6a762279dHavoc Pennington 4951708094c0e00ab433bb0a51981f8b77d24aee256Havoc Pennington _dbus_verbose ("*** Test service exiting\n"); 496eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington 497eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington return 0; 498eeb88949d8d2ca84d9cbe54c07e73b9907d3163eHavoc Pennington} 499