X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bus%2Fdispatch.c;h=a7d4c3743e60b1b38767ad83ac81f1611a2932a8;hb=61d97215c317a4154df47fbfb882aab60b92fbab;hp=9b5e65ab2d7bfa67f671c2a0280c55130477aa09;hpb=3da9815113c013c3e81f4290d9b74d9862004027;p=platform%2Fupstream%2Fdbus.git diff --git a/bus/dispatch.c b/bus/dispatch.c index 9b5e65a..a7d4c37 100644 --- a/bus/dispatch.c +++ b/bus/dispatch.c @@ -4,9 +4,10 @@ * Copyright (C) 2003 CodeFactory AB * Copyright (C) 2003, 2004, 2005 Red Hat, Inc. * Copyright (C) 2004 Imendio HB + * Copyright (C) 2013 Samsung Electronics * * Licensed under the Academic Free License version 2.1 - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -16,13 +17,14 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ +#include #include "dispatch.h" #include "connection.h" #include "driver.h" @@ -33,18 +35,21 @@ #include "signals.h" #include "test.h" #include +#include #include +#ifdef ENABLE_KDBUS_TRANSPORT +#include "kdbus-d.h" +#endif #ifdef HAVE_UNIX_FD_PASSING #include #include #endif -#ifdef DBUS_UNIX -#define TEST_CONNECTION "debug-pipe:name=test-server" -#else -#define TEST_CONNECTION "tcp:host=localhost,port=1234" -#endif +/* This is hard-coded in the files in valid-config-files-*. We have to use + * the debug-pipe transport because the tests in this file require that + * dbus_connection_open_private() does not block. */ +#define TEST_DEBUG_PIPE "debug-pipe:name=test-server" static dbus_bool_t send_one_message (DBusConnection *connection, @@ -66,7 +71,7 @@ send_one_message (DBusConnection *connection, if (dbus_message_contains_unix_fds(message) && !dbus_connection_can_send_type(connection, DBUS_TYPE_UNIX_FD)) return TRUE; /* silently don't send it */ - + if (!bus_transaction_send (transaction, connection, message)) @@ -101,10 +106,39 @@ bus_dispatch_matches (BusTransaction *transaction, _dbus_assert (sender == NULL || bus_connection_is_active (sender)); _dbus_assert (dbus_message_get_sender (message) != NULL); + context = bus_transaction_get_context (transaction); + + /* First, send the message to the addressed_recipient, if there is one. */ + if (addressed_recipient != NULL) + { + if (!bus_context_check_security_policy (context, transaction, + sender, addressed_recipient, + addressed_recipient, + message, error)) + return FALSE; + + if (dbus_message_contains_unix_fds (message) && + !dbus_connection_can_send_type (addressed_recipient, + DBUS_TYPE_UNIX_FD)) + { + dbus_set_error (error, + DBUS_ERROR_NOT_SUPPORTED, + "Tried to send message with Unix file descriptors" + "to a client that doesn't support that."); + return FALSE; + } + + /* Dispatch the message */ + if (!bus_transaction_send (transaction, addressed_recipient, message)) + { + BUS_SET_OOM (error); + return FALSE; + } + } + + /* Now dispatch to others who look interested in this message */ connections = bus_transaction_get_connections (transaction); - dbus_error_init (&tmp_error); - context = bus_transaction_get_context (transaction); matchmaker = bus_context_get_matchmaker (context); recipients = NULL; @@ -131,7 +165,7 @@ bus_dispatch_matches (BusTransaction *transaction, } _dbus_list_clear (&recipients); - + if (dbus_error_is_set (&tmp_error)) { dbus_move_error (&tmp_error, error); @@ -151,25 +185,25 @@ bus_dispatch (DBusConnection *connection, BusContext *context; DBusHandlerResult result; DBusConnection *addressed_recipient; - + result = DBUS_HANDLER_RESULT_HANDLED; - + transaction = NULL; addressed_recipient = NULL; dbus_error_init (&error); - + context = bus_connection_get_context (connection); _dbus_assert (context != NULL); - + /* If we can't even allocate an OOM error, we just go to sleep * until we can. */ while (!bus_connection_preallocate_oom_error (connection)) _dbus_wait_for_memory (); - + /* Ref connection in case we disconnect it at some point in here */ dbus_connection_ref (connection); - + service_name = dbus_message_get_destination (message); #ifdef DBUS_ENABLE_VERBOSE_MODE @@ -179,7 +213,7 @@ bus_dispatch (DBusConnection *connection, interface_name = dbus_message_get_interface (message); member_name = dbus_message_get_member (message); error_name = dbus_message_get_error_name (message); - + _dbus_verbose ("DISPATCH: %s %s %s to %s\n", interface_name ? interface_name : "(no interface)", member_name ? member_name : "(no member)", @@ -187,7 +221,15 @@ bus_dispatch (DBusConnection *connection, service_name ? service_name : "peer"); } #endif /* DBUS_ENABLE_VERBOSE_MODE */ - + + /* Create our transaction */ + transaction = bus_transaction_new (context); + if (transaction == NULL) + { + BUS_SET_OOM (&error); + goto out; + } + /* If service_name is NULL, if it's a signal we send it to all * connections with a match rule. If it's not a signal, there * are some special cases here but mostly we just bail out. @@ -210,18 +252,25 @@ bus_dispatch (DBusConnection *connection, result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED; goto out; } + +#ifdef ENABLE_KDBUS_TRANSPORT + if(bus_context_is_kdbus(context)) + { + if (dbus_message_is_signal (message, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) + { + handleNameOwnerChanged(message, transaction, connection); + goto out; + } + } +#endif } - - /* Create our transaction */ - transaction = bus_transaction_new (context); - if (transaction == NULL) - { - BUS_SET_OOM (&error); - goto out; - } - + +#ifdef ENABLE_KDBUS_TRANSPORT /* Assign a sender to the message */ - if (bus_connection_is_active (connection)) + if(bus_context_is_kdbus(context) == FALSE) //if using kdbus, sender must be set on library side +#endif + { + if (bus_connection_is_active (connection)) { sender = bus_connection_get_name (connection); _dbus_assert (sender != NULL); @@ -239,7 +288,8 @@ bus_dispatch (DBusConnection *connection, */ service_name = dbus_message_get_destination (message); } - + } + if (service_name && strcmp (service_name, DBUS_SERVICE_DBUS) == 0) /* to bus driver */ { @@ -267,13 +317,17 @@ bus_dispatch (DBusConnection *connection, BusRegistry *registry; _dbus_assert (service_name != NULL); - + registry = bus_connection_get_registry (connection); - + _dbus_string_init_const (&service_string, service_name); service = bus_registry_lookup (registry, &service_string); +#ifdef ENABLE_KDBUS_TRANSPORT + if (dbus_message_get_auto_start (message) && (service == NULL || bus_service_get_is_kdbus_starter(service))) +#else if (service == NULL && dbus_message_get_auto_start (message)) +#endif { BusActivation *activation; /* We can't do the security policy check here, since the addressed @@ -289,7 +343,7 @@ bus_dispatch (DBusConnection *connection, _dbus_verbose ("bus_activation_activate_service() failed: %s\n", error.name); goto out; } - + goto out; } else if (service == NULL) @@ -304,38 +358,16 @@ bus_dispatch (DBusConnection *connection, { addressed_recipient = bus_service_get_primary_owners_connection (service); _dbus_assert (addressed_recipient != NULL); - - if (!bus_context_check_security_policy (context, transaction, - connection, addressed_recipient, - addressed_recipient, - message, &error)) - goto out; - - if (dbus_message_contains_unix_fds(message) && - !dbus_connection_can_send_type(addressed_recipient, DBUS_TYPE_UNIX_FD)) - { - dbus_set_error(&error, - DBUS_ERROR_NOT_SUPPORTED, - "Tried to send message with Unix file descriptors" - "to a client that doesn't support that."); - goto out; - } - - /* Dispatch the message */ - if (!bus_transaction_send (transaction, addressed_recipient, message)) - { - BUS_SET_OOM (&error); - goto out; - } } } - /* Now match the messages against any match rules, which will send - * out signals and such. addressed_recipient may == NULL. + /* Now send the message to its destination (or not, if + * addressed_recipient == NULL), and match it against other connections' + * match rules. */ if (!bus_dispatch_matches (transaction, connection, addressed_recipient, message, &error)) goto out; - + out: if (dbus_error_is_set (&error)) { @@ -367,7 +399,7 @@ bus_dispatch (DBusConnection *connection, &error, message)) { bus_connection_send_oom_error (connection, message); - + /* cancel transaction due to OOM */ if (transaction != NULL) { @@ -376,8 +408,8 @@ bus_dispatch (DBusConnection *connection, } } } - - + + dbus_error_free (&error); } @@ -401,12 +433,12 @@ bus_dispatch_message_filter (DBusConnection *connection, dbus_bool_t bus_dispatch_add_connection (DBusConnection *connection) -{ +{ if (!dbus_connection_add_filter (connection, bus_dispatch_message_filter, NULL, NULL)) return FALSE; - + return TRUE; } @@ -421,7 +453,7 @@ bus_dispatch_remove_connection (DBusConnection *connection) NULL); } -#ifdef DBUS_BUILD_TESTS +#ifdef DBUS_ENABLE_EMBEDDED_TESTS #include @@ -443,7 +475,7 @@ block_connection_until_message_from_bus (BusContext *context, const char *what_is_expected) { _dbus_verbose ("expecting: %s\n", what_is_expected); - + while (dbus_connection_get_dispatch_status (connection) == DBUS_DISPATCH_COMPLETE && dbus_connection_get_is_connected (connection)) @@ -552,13 +584,13 @@ check_service_owner_changed_foreach (DBusConnection *connection, DBusError error; const char *service_name, *old_owner, *new_owner; - if (d->expected_kind == SERVICE_CREATED + if (d->expected_kind == SERVICE_CREATED && connection == d->skip_connection) return TRUE; dbus_error_init (&error); d->failed = TRUE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -592,7 +624,7 @@ check_service_owner_changed_foreach (DBusConnection *connection, if (dbus_error_has_name (&error, DBUS_ERROR_NO_MEMORY)) { dbus_error_free (&error); - _dbus_wait_for_memory (); + _dbus_wait_for_memory (); goto reget_service_info_data; } else @@ -618,7 +650,7 @@ check_service_owner_changed_foreach (DBusConnection *connection, goto out; } - if (*service_name == ':' && new_owner[0] + if (*service_name == ':' && new_owner[0] && strcmp (service_name, new_owner) != 0) { _dbus_warn ("inconsistent ServiceOwnedChanged message (\"%s\" [ %s -> %s ])\n", @@ -628,10 +660,10 @@ check_service_owner_changed_foreach (DBusConnection *connection, } d->failed = FALSE; - + out: dbus_error_free (&error); - + if (message) dbus_message_unref (message); @@ -648,7 +680,7 @@ kill_client_connection (BusContext *context, CheckServiceOwnerChangedData socd; _dbus_verbose ("killing connection %p\n", connection); - + s = dbus_bus_get_unique_name (connection); _dbus_assert (s != NULL); @@ -656,36 +688,36 @@ kill_client_connection (BusContext *context, _dbus_wait_for_memory (); dbus_connection_ref (connection); - + /* kick in the disconnect handler that unrefs the connection */ dbus_connection_close (connection); bus_test_run_everything (context); - + _dbus_assert (bus_test_client_listed (connection)); - + /* Run disconnect handler in test.c */ if (bus_connection_dispatch_one_message (connection)) _dbus_assert_not_reached ("something received on connection being killed other than the disconnect"); - + _dbus_assert (!dbus_connection_get_is_connected (connection)); dbus_connection_unref (connection); connection = NULL; _dbus_assert (!bus_test_client_listed (connection)); - + socd.expected_kind = SERVICE_DELETED; socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = NULL; - + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); dbus_free (base_service); - + if (socd.failed) _dbus_assert_not_reached ("didn't get the expected NameOwnerChanged (deletion) messages"); - + if (!check_no_leftovers (context)) _dbus_assert_not_reached ("stuff left in message queues after disconnecting a client"); } @@ -695,7 +727,7 @@ kill_client_connection_unchecked (DBusConnection *connection) { /* This kills the connection without expecting it to affect * the rest of the bus. - */ + */ _dbus_verbose ("Unchecked kill of connection %p\n", connection); dbus_connection_ref (connection); @@ -741,11 +773,10 @@ check_no_leftovers (BusContext *context) nmd.failed = FALSE; bus_test_clients_foreach (check_no_messages_foreach, &nmd); - + if (nmd.failed) { - _dbus_verbose ("%s: leftover message found\n", - _DBUS_FUNCTION_NAME); + _dbus_verbose ("leftover message found\n"); return FALSE; } else @@ -775,7 +806,7 @@ check_hello_message (BusContext *context, name_message = NULL; _dbus_verbose ("check_hello_message for %p\n", connection); - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -785,7 +816,7 @@ check_hello_message (BusContext *context, return TRUE; dbus_connection_ref (connection); /* because we may get disconnected */ - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -794,44 +825,44 @@ check_hello_message (BusContext *context, } _dbus_assert (dbus_message_has_signature (message, "")); - + dbus_message_unref (message); message = NULL; if (!dbus_connection_get_is_connected (connection)) { _dbus_verbose ("connection was disconnected (presumably auth failed)\n"); - + dbus_connection_unref (connection); - + return TRUE; } - + /* send our message */ bus_test_run_clients_loop (SEND_PENDING (connection)); if (!dbus_connection_get_is_connected (connection)) { _dbus_verbose ("connection was disconnected (presumably auth failed)\n"); - + dbus_connection_unref (connection); - + return TRUE; } - + block_connection_until_message_from_bus (context, connection, "reply to Hello"); if (!dbus_connection_get_is_connected (connection)) { _dbus_verbose ("connection was disconnected (presumably auth failed)\n"); - + dbus_connection_unref (connection); - + return TRUE; } dbus_connection_unref (connection); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -849,7 +880,7 @@ check_hello_message (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_get_type (message) == DBUS_MESSAGE_TYPE_ERROR) { if (dbus_message_is_error (message, @@ -867,7 +898,7 @@ check_hello_message (BusContext *context, else { CheckServiceOwnerChangedData socd; - + if (dbus_message_get_type (message) == DBUS_MESSAGE_TYPE_METHOD_RETURN) { ; /* good, expected */ @@ -903,14 +934,14 @@ check_hello_message (BusContext *context, while (!dbus_bus_set_unique_name (connection, name)) _dbus_wait_for_memory (); - + socd.expected_kind = SERVICE_CREATED; socd.expected_service_name = name; socd.failed = FALSE; socd.skip_connection = connection; /* we haven't done AddMatch so won't get it ourselves */ bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); - + if (socd.failed) goto out; @@ -931,7 +962,7 @@ check_hello_message (BusContext *context, "NameAcquired"); goto out; } - + retry_get_acquired_name: if (!dbus_message_get_args (message, &error, DBUS_TYPE_STRING, &acquired, @@ -965,20 +996,20 @@ check_hello_message (BusContext *context, if (!check_no_leftovers (context)) goto out; - + retval = TRUE; - + out: - _dbus_verbose ("ending %s retval = %d\n", _DBUS_FUNCTION_NAME, retval); - + _dbus_verbose ("ending - retval = %d\n", retval); + dbus_error_free (&error); - + if (message) dbus_message_unref (message); if (name_message) dbus_message_unref (name_message); - + return retval; } @@ -999,7 +1030,7 @@ check_double_hello_message (BusContext *context, message = NULL; _dbus_verbose ("check_double_hello_message for %p\n", connection); - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -1007,7 +1038,7 @@ check_double_hello_message (BusContext *context, if (message == NULL) return TRUE; - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -1025,15 +1056,15 @@ check_double_hello_message (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); - + _dbus_verbose ("connection was disconnected\n"); + dbus_connection_unref (connection); - + return TRUE; } dbus_connection_unref (connection); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -1051,7 +1082,7 @@ check_double_hello_message (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_ERROR) { warn_unexpected (connection, message, "method return for Hello"); @@ -1060,15 +1091,15 @@ check_double_hello_message (BusContext *context, if (!check_no_leftovers (context)) goto out; - + retval = TRUE; - + out: dbus_error_free (&error); - + if (message) dbus_message_unref (message); - + return retval; } @@ -1091,7 +1122,7 @@ check_get_connection_unix_user (BusContext *context, message = NULL; _dbus_verbose ("check_get_connection_unix_user for %p\n", connection); - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -1102,7 +1133,7 @@ check_get_connection_unix_user (BusContext *context, base_service_name = dbus_bus_get_unique_name (connection); - if (!dbus_message_append_args (message, + if (!dbus_message_append_args (message, DBUS_TYPE_STRING, &base_service_name, DBUS_TYPE_INVALID)) { @@ -1127,10 +1158,10 @@ check_get_connection_unix_user (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); - + _dbus_verbose ("connection was disconnected\n"); + dbus_connection_unref (connection); - + return TRUE; } @@ -1202,10 +1233,10 @@ check_get_connection_unix_user (BusContext *context, out: dbus_error_free (&error); - + if (message) dbus_message_unref (message); - + return retval; } @@ -1228,7 +1259,7 @@ check_get_connection_unix_process_id (BusContext *context, message = NULL; _dbus_verbose ("check_get_connection_unix_process_id for %p\n", connection); - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -1239,7 +1270,7 @@ check_get_connection_unix_process_id (BusContext *context, base_service_name = dbus_bus_get_unique_name (connection); - if (!dbus_message_append_args (message, + if (!dbus_message_append_args (message, DBUS_TYPE_STRING, &base_service_name, DBUS_TYPE_INVALID)) { @@ -1264,10 +1295,10 @@ check_get_connection_unix_process_id (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); - + _dbus_verbose ("connection was disconnected\n"); + dbus_connection_unref (connection); - + return TRUE; } @@ -1297,11 +1328,11 @@ check_get_connection_unix_process_id (BusContext *context, */ _dbus_verbose ("Windows correctly does not support GetConnectionUnixProcessID\n"); } -#endif +#endif else { warn_unexpected (connection, message, "not this error"); - + goto out; } } @@ -1310,7 +1341,7 @@ check_get_connection_unix_process_id (BusContext *context, #ifdef DBUS_WIN warn_unexpected (connection, message, "GetConnectionUnixProcessID to fail on Windows"); goto out; -#else +#else if (dbus_message_get_type (message) == DBUS_MESSAGE_TYPE_METHOD_RETURN) { ; /* good, expected */ @@ -1369,10 +1400,10 @@ check_get_connection_unix_process_id (BusContext *context, out: dbus_error_free (&error); - + if (message) dbus_message_unref (message); - + return retval; } @@ -1394,7 +1425,7 @@ check_add_match_all (BusContext *context, message = NULL; _dbus_verbose ("check_add_match_all for %p\n", connection); - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -1410,7 +1441,7 @@ check_add_match_all (BusContext *context, dbus_message_unref (message); return TRUE; } - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -1421,32 +1452,32 @@ check_add_match_all (BusContext *context, message = NULL; dbus_connection_ref (connection); /* because we may get disconnected */ - + /* send our message */ bus_test_run_clients_loop (SEND_PENDING (connection)); if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); - + _dbus_verbose ("connection was disconnected\n"); + dbus_connection_unref (connection); - + return TRUE; } - + block_connection_until_message_from_bus (context, connection, "reply to AddMatch"); if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); - + _dbus_verbose ("connection was disconnected\n"); + dbus_connection_unref (connection); - + return TRUE; } dbus_connection_unref (connection); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -1464,7 +1495,7 @@ check_add_match_all (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_get_type (message) == DBUS_MESSAGE_TYPE_ERROR) { if (dbus_message_is_error (message, @@ -1496,15 +1527,15 @@ check_add_match_all (BusContext *context, if (!check_no_leftovers (context)) goto out; - + retval = TRUE; - + out: dbus_error_free (&error); - + if (message) dbus_message_unref (message); - + return retval; } @@ -1519,7 +1550,7 @@ check_hello_connection (BusContext *context) dbus_error_init (&error); - connection = dbus_connection_open_private (TEST_CONNECTION, &error); + connection = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (connection == NULL) { _DBUS_ASSERT_ERROR_IS_SET (&error); @@ -1535,10 +1566,10 @@ check_hello_connection (BusContext *context) } spin_connection_until_authenticated (context, connection); - + if (!check_hello_message (context, connection)) return FALSE; - + if (dbus_bus_get_unique_name (connection) == NULL) { /* We didn't successfully register, so we can't @@ -1550,7 +1581,7 @@ check_hello_connection (BusContext *context) { if (!check_add_match_all (context, connection)) return FALSE; - + kill_client_connection (context, connection); } @@ -1571,17 +1602,17 @@ check_nonexistent_service_no_auto_start (BusContext *context, dbus_bool_t retval; const char *nonexistent = NONEXISTENT_SERVICE_NAME; dbus_uint32_t flags; - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "StartServiceByName"); - + if (message == NULL) return TRUE; dbus_message_set_auto_start (message, FALSE); - + flags = 0; if (!dbus_message_append_args (message, DBUS_TYPE_STRING, &nonexistent, @@ -1591,7 +1622,7 @@ check_nonexistent_service_no_auto_start (BusContext *context, dbus_message_unref (message); return TRUE; } - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -1607,12 +1638,12 @@ check_nonexistent_service_no_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -1632,7 +1663,7 @@ check_nonexistent_service_no_auto_start (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -1657,11 +1688,11 @@ check_nonexistent_service_no_auto_start (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -1675,15 +1706,15 @@ check_nonexistent_service_auto_start (BusContext *context, DBusMessage *message; dbus_uint32_t serial; dbus_bool_t retval; - + message = dbus_message_new_method_call (NONEXISTENT_SERVICE_NAME, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Echo"); - + if (message == NULL) return TRUE; - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -1699,12 +1730,12 @@ check_nonexistent_service_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) @@ -1725,7 +1756,7 @@ check_nonexistent_service_auto_start (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -1750,11 +1781,11 @@ check_nonexistent_service_auto_start (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -1768,16 +1799,16 @@ check_base_service_activated (BusContext *context, dbus_bool_t retval; DBusError error; const char *base_service, *base_service_from_bus, *old_owner; - + retval = FALSE; - + dbus_error_init (&error); base_service = NULL; old_owner = NULL; base_service_from_bus = NULL; message = initial_message; - dbus_message_ref (message); + dbus_message_ref (message); if (dbus_message_is_signal (message, DBUS_INTERFACE_DBUS, @@ -1817,7 +1848,7 @@ check_base_service_activated (BusContext *context, base_service); goto out; } - + if (strcmp (base_service, base_service_from_bus) != 0) { _dbus_warn ("Expected base service activation, got \"%s\" instead with owner \"%s\"\n", @@ -1831,14 +1862,14 @@ check_base_service_activated (BusContext *context, old_owner); goto out; } - + socd.expected_kind = SERVICE_CREATED; socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = connection; bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); - + if (socd.failed) goto out; } @@ -1853,7 +1884,7 @@ check_base_service_activated (BusContext *context, *base_service_p = base_service; retval = TRUE; - + out: if (message) dbus_message_unref (message); @@ -1873,9 +1904,9 @@ check_service_activated (BusContext *context, dbus_bool_t retval; DBusError error; dbus_uint32_t activation_result; - + retval = FALSE; - + dbus_error_init (&error); message = initial_message; @@ -1942,15 +1973,15 @@ check_service_activated (BusContext *context, socd.expected_service_name = service_name; bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); - + if (socd.failed) goto out; - + dbus_message_unref (message); service_name = NULL; old_owner = NULL; base_service_from_bus = NULL; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -1962,10 +1993,10 @@ check_service_activated (BusContext *context, else { warn_unexpected (connection, message, "NameOwnerChanged for the activated name"); - + goto out; } - + if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_METHOD_RETURN) { warn_unexpected (connection, message, "reply to StartServiceByName"); @@ -2003,7 +2034,7 @@ check_service_activated (BusContext *context, dbus_message_unref (message); message = NULL; - + if (!check_no_leftovers (context)) { _dbus_warn ("Messages were left over after verifying existent activation results\n"); @@ -2011,12 +2042,12 @@ check_service_activated (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); dbus_error_free (&error); - + return retval; } @@ -2030,9 +2061,9 @@ check_service_auto_activated (BusContext *context, DBusMessage *message; dbus_bool_t retval; DBusError error; - + retval = FALSE; - + dbus_error_init (&error); message = initial_message; @@ -2044,7 +2075,7 @@ check_service_auto_activated (BusContext *context, { const char *service_name; CheckServiceOwnerChangedData socd; - + reget_service_name_arg: if (!dbus_message_get_args (message, &error, DBUS_TYPE_STRING, &service_name, @@ -2065,28 +2096,28 @@ check_service_auto_activated (BusContext *context, goto out; } } - + if (strcmp (service_name, activated_name) != 0) { _dbus_warn ("Expected to see service %s created, saw %s instead\n", activated_name, service_name); goto out; } - + socd.expected_kind = SERVICE_CREATED; socd.expected_service_name = service_name; socd.failed = FALSE; - socd.skip_connection = connection; + socd.skip_connection = connection; bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); - + if (socd.failed) goto out; - + /* Note that this differs from regular activation in that we don't get a * reply to ActivateService here. */ - + dbus_message_unref (message); message = NULL; service_name = NULL; @@ -2094,16 +2125,16 @@ check_service_auto_activated (BusContext *context, else { warn_unexpected (connection, message, "NameOwnerChanged for the activated name"); - + goto out; } - + retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -2117,7 +2148,7 @@ check_service_deactivated (BusContext *context, CheckServiceOwnerChangedData socd; retval = FALSE; - + /* Now we are expecting ServiceOwnerChanged (deletion) messages for the base * service and the activated_name. The base service * notification is required to come last. @@ -2127,11 +2158,11 @@ check_service_deactivated (BusContext *context, socd.failed = FALSE; socd.skip_connection = NULL; bus_test_clients_foreach (check_service_owner_changed_foreach, - &socd); + &socd); if (socd.failed) goto out; - + socd.expected_kind = SERVICE_DELETED; socd.expected_service_name = base_service; socd.failed = FALSE; @@ -2143,7 +2174,7 @@ check_service_deactivated (BusContext *context, goto out; retval = TRUE; - + out: return retval; } @@ -2158,27 +2189,27 @@ check_send_exit_to_service (BusContext *context, DBusMessage *message; dbus_uint32_t serial; dbus_bool_t retval; - + _dbus_verbose ("Sending exit message to the test service\n"); retval = FALSE; - + /* Kill off the test service by sending it a quit message */ message = dbus_message_new_method_call (service_name, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Exit"); - + if (message == NULL) { /* Do this again; we still need the service to exit... */ if (!check_send_exit_to_service (context, connection, service_name, base_service)) goto out; - + return TRUE; } - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -2187,7 +2218,7 @@ check_send_exit_to_service (BusContext *context, if (!check_send_exit_to_service (context, connection, service_name, base_service)) goto out; - + return TRUE; } @@ -2209,12 +2240,12 @@ check_send_exit_to_service (BusContext *context, dbus_connection_return_message (connection, message); message = NULL; } - + if (!got_error) { /* If no error, wait for the test service to exit */ block_connection_until_message_from_bus (context, connection, "test service to exit"); - + bus_test_run_everything (context); } @@ -2229,7 +2260,7 @@ check_send_exit_to_service (BusContext *context, "error with the correct reply serial"); goto out; } - + if (!dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -2257,7 +2288,7 @@ check_send_exit_to_service (BusContext *context, * stuff. */ message = pop_message_waiting_for_memory (connection); - + if (message == NULL) { warn_unexpected (connection, NULL, @@ -2278,10 +2309,10 @@ check_send_exit_to_service (BusContext *context, "error with the correct reply serial"); goto out; } - + _dbus_verbose ("Got error %s after test service exited\n", dbus_message_get_error_name (message)); - + if (!check_no_leftovers (context)) { _dbus_warn ("Messages were left over after %s\n", @@ -2289,13 +2320,13 @@ check_send_exit_to_service (BusContext *context, goto out; } } - + retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -2310,9 +2341,9 @@ check_got_error (BusContext *context, va_list ap; dbus_bool_t error_found; const char *error_name; - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -2351,20 +2382,20 @@ check_got_error (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } - + typedef enum -{ +{ GOT_SERVICE_CREATED, GOT_SERVICE_DELETED, GOT_ERROR, - GOT_SOMETHING_ELSE + GOT_SOMETHING_ELSE } GotServiceInfo; static GotServiceInfo @@ -2438,7 +2469,7 @@ check_existent_service_no_auto_start (BusContext *context, dbus_uint32_t flags; base_service_message = NULL; - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -2448,7 +2479,7 @@ check_existent_service_no_auto_start (BusContext *context, return TRUE; dbus_message_set_auto_start (message, FALSE); - + flags = 0; if (!dbus_message_append_args (message, DBUS_TYPE_STRING, &existent, @@ -2458,7 +2489,7 @@ check_existent_service_no_auto_start (BusContext *context, dbus_message_unref (message); return TRUE; } - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -2479,12 +2510,12 @@ check_existent_service_no_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -2505,7 +2536,7 @@ check_existent_service_no_auto_start (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -2530,7 +2561,7 @@ check_existent_service_no_auto_start (BusContext *context, else { GotServiceInfo message_kind; - + if (!check_base_service_activated (context, connection, message, &base_service)) goto out; @@ -2540,7 +2571,7 @@ check_existent_service_no_auto_start (BusContext *context, /* We may need to block here for the test service to exit or finish up */ block_connection_until_message_from_bus (context, connection, "test service to exit or finish up"); - + message = dbus_connection_borrow_message (connection); if (message == NULL) { @@ -2583,7 +2614,7 @@ check_existent_service_no_auto_start (BusContext *context, socd.expected_service_name = base_service; socd.failed = FALSE; socd.skip_connection = NULL; - + bus_test_clients_foreach (check_service_owner_changed_foreach, &socd); @@ -2596,10 +2627,10 @@ check_existent_service_no_auto_start (BusContext *context, if (message_kind != GOT_ERROR) { block_connection_until_message_from_bus (context, connection, "error about service exiting"); - + /* and process everything again */ bus_test_run_everything (context); - + if (!check_got_error (context, connection, DBUS_ERROR_SPAWN_CHILD_EXITED, DBUS_ERROR_NO_MEMORY, @@ -2617,11 +2648,11 @@ check_existent_service_no_auto_start (BusContext *context, "should have been a NameOwnerChanged (creation)\n"); goto out; } - + if (!check_service_activated (context, connection, EXISTENT_SERVICE_NAME, base_service, message)) goto out; - + dbus_message_unref (message); message = NULL; @@ -2640,14 +2671,14 @@ check_existent_service_no_auto_start (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); if (base_service_message) dbus_message_unref (base_service_message); - + return retval; } @@ -2664,7 +2695,7 @@ check_segfault_service_no_auto_start (BusContext *context, dbus_bool_t retval; const char *segv_service; dbus_uint32_t flags; - + message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -2674,7 +2705,7 @@ check_segfault_service_no_auto_start (BusContext *context, return TRUE; dbus_message_set_auto_start (message, FALSE); - + segv_service = "org.freedesktop.DBus.TestSuiteSegfaultService"; flags = 0; if (!dbus_message_append_args (message, @@ -2685,7 +2716,7 @@ check_segfault_service_no_auto_start (BusContext *context, dbus_message_unref (message); return TRUE; } - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -2701,12 +2732,12 @@ check_segfault_service_no_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -2726,7 +2757,7 @@ check_segfault_service_no_auto_start (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -2759,11 +2790,11 @@ check_segfault_service_no_auto_start (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -2783,10 +2814,10 @@ check_segfault_service_auto_start (BusContext *context, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Echo"); - + if (message == NULL) return TRUE; - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -2802,12 +2833,12 @@ check_segfault_service_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -2827,7 +2858,7 @@ check_segfault_service_auto_start (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -2852,11 +2883,11 @@ check_segfault_service_auto_start (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } #endif @@ -2879,7 +2910,7 @@ check_existent_hello_from_self (BusContext *context, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "RunHelloFromSelf"); - + if (message == NULL) return TRUE; @@ -2907,7 +2938,7 @@ check_existent_hello_from_self (BusContext *context, * doesn't send a reply due to OOM. */ block_connection_until_message_from_bus (context, connection, "reply from running hello from self"); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -2924,7 +2955,7 @@ check_existent_hello_from_self (BusContext *context, dbus_message_unref (message); message = NULL; - + return TRUE; } @@ -2941,7 +2972,7 @@ check_existent_ping (BusContext *context, "/org/freedesktop/TestSuite", "org.freedesktop.DBus.Peer", "Ping"); - + if (message == NULL) return TRUE; @@ -2960,7 +2991,7 @@ check_existent_ping (BusContext *context, * doesn't send a reply due to OOM. */ block_connection_until_message_from_bus (context, connection, "reply from running Ping"); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -2984,7 +3015,7 @@ check_existent_ping (BusContext *context, dbus_message_unref (message); message = NULL; - + return TRUE; } @@ -2998,12 +3029,12 @@ check_existent_get_machine_id (BusContext *context, DBusMessage *message; dbus_uint32_t serial; const char *machine_id; - + message = dbus_message_new_method_call (EXISTENT_SERVICE_NAME, "/org/freedesktop/TestSuite", "org.freedesktop.DBus.Peer", "GetMachineId"); - + if (message == NULL) return TRUE; @@ -3022,7 +3053,7 @@ check_existent_get_machine_id (BusContext *context, * doesn't send a reply due to OOM. */ block_connection_until_message_from_bus (context, connection, "reply from running GetMachineId"); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3058,14 +3089,14 @@ check_existent_get_machine_id (BusContext *context, dbus_message_unref (message); return FALSE; } - + /* We can't check that the machine id is correct because during make check it is * just made up for each process separately */ - + dbus_message_unref (message); message = NULL; - + return TRUE; } @@ -3089,7 +3120,7 @@ check_existent_service_auto_start (BusContext *context, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Echo"); - + if (message == NULL) return TRUE; @@ -3121,12 +3152,12 @@ check_existent_service_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3171,7 +3202,7 @@ check_existent_service_auto_start (BusContext *context, dbus_connection_return_message (connection, message); message = NULL; - switch (message_kind) + switch (message_kind) { case GOT_SERVICE_CREATED: message = pop_message_waiting_for_memory (connection); @@ -3181,12 +3212,12 @@ check_existent_service_auto_start (BusContext *context, "should have been a NameOwnerChanged (creation)\n"); goto out; } - + /* Check that ServiceOwnerChanged (creation) was correctly received */ if (!check_service_auto_activated (context, connection, EXISTENT_SERVICE_NAME, base_service, message)) goto out; - + dbus_message_unref (message); message = NULL; @@ -3198,7 +3229,7 @@ check_existent_service_auto_start (BusContext *context, * failed to register under EXISTENT_SERVICE_NAME */ CheckServiceOwnerChangedData socd; - + socd.expected_kind = SERVICE_DELETED; socd.expected_service_name = base_service; socd.failed = FALSE; @@ -3227,7 +3258,7 @@ check_existent_service_auto_start (BusContext *context, * doesn't send a reply due to OOM. */ block_connection_until_message_from_bus (context, connection, "reply from echo message after auto-activation"); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3249,7 +3280,7 @@ check_existent_service_auto_start (BusContext *context, if (!check_existent_get_machine_id (context, connection)) goto out; - + if (!check_existent_hello_from_self (context, connection)) goto out; @@ -3257,7 +3288,7 @@ check_existent_service_auto_start (BusContext *context, EXISTENT_SERVICE_NAME, base_service)) goto out; - + retval = TRUE; out: @@ -3287,7 +3318,7 @@ check_launch_service_file_missing (BusContext *context, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Echo"); - + if (message == NULL) return TRUE; @@ -3306,12 +3337,12 @@ check_launch_service_file_missing (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3331,7 +3362,7 @@ check_launch_service_file_missing (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -3357,11 +3388,11 @@ check_launch_service_file_missing (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -3402,12 +3433,12 @@ check_launch_service_user_missing (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_warn ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_warn ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3427,7 +3458,7 @@ check_launch_service_user_missing (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -3453,11 +3484,11 @@ check_launch_service_user_missing (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -3498,12 +3529,12 @@ check_launch_service_exec_missing (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_warn ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_warn ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3523,7 +3554,7 @@ check_launch_service_exec_missing (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -3557,11 +3588,11 @@ check_launch_service_exec_missing (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -3602,12 +3633,12 @@ check_launch_service_service_missing (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_warn ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_warn ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3627,7 +3658,7 @@ check_launch_service_service_missing (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -3661,11 +3692,11 @@ check_launch_service_service_missing (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -3686,10 +3717,10 @@ check_shell_fail_service_auto_start (BusContext *context, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Echo"); - + if (message == NULL) return TRUE; - + if (!dbus_connection_send (connection, message, &serial)) { dbus_message_unref (message); @@ -3705,12 +3736,12 @@ check_shell_fail_service_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } - + retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3730,7 +3761,7 @@ check_shell_fail_service_auto_start (BusContext *context, dbus_message_get_sender (message) : "(none)"); goto out; } - + if (dbus_message_is_error (message, DBUS_ERROR_NO_MEMORY)) { @@ -3756,11 +3787,11 @@ check_shell_fail_service_auto_start (BusContext *context, } retval = TRUE; - + out: if (message) dbus_message_unref (message); - + return retval; } @@ -3786,7 +3817,7 @@ check_shell_service_success_auto_start (BusContext *context, "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Echo"); - + if (message == NULL) return TRUE; @@ -3809,12 +3840,12 @@ check_shell_service_success_auto_start (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } retval = FALSE; - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3859,7 +3890,7 @@ check_shell_service_success_auto_start (BusContext *context, dbus_connection_return_message (connection, message); message = NULL; - switch (message_kind) + switch (message_kind) { case GOT_SERVICE_CREATED: message = pop_message_waiting_for_memory (connection); @@ -3869,12 +3900,12 @@ check_shell_service_success_auto_start (BusContext *context, "should have been a NameOwnerChanged (creation)\n"); goto out; } - + /* Check that ServiceOwnerChanged (creation) was correctly received */ if (!check_service_auto_activated (context, connection, SHELL_SUCCESS_SERVICE_NAME, base_service, message)) goto out; - + dbus_message_unref (message); message = NULL; @@ -3886,7 +3917,7 @@ check_shell_service_success_auto_start (BusContext *context, * failed to register under SHELL_SUCCESS_SERVICE_NAME */ CheckServiceOwnerChangedData socd; - + socd.expected_kind = SERVICE_DELETED; socd.expected_service_name = base_service; socd.failed = FALSE; @@ -3915,7 +3946,7 @@ check_shell_service_success_auto_start (BusContext *context, * doesn't send a reply due to OOM. */ block_connection_until_message_from_bus (context, connection, "reply from echo message after auto-activation"); - + message = pop_message_waiting_for_memory (connection); if (message == NULL) { @@ -3930,7 +3961,7 @@ check_shell_service_success_auto_start (BusContext *context, } if (!dbus_message_get_args (message, NULL, - DBUS_TYPE_STRING, &argv[0], + DBUS_TYPE_STRING, &argv[0], DBUS_TYPE_STRING, &argv[1], DBUS_TYPE_STRING, &argv[2], DBUS_TYPE_STRING, &argv[3], @@ -3943,59 +3974,59 @@ check_shell_service_success_auto_start (BusContext *context, goto out; } - /* don't worry about arg[0] as it may be different + /* don't worry about arg[0] as it may be different depending on the path to the tests */ if (strcmp("-test", argv[1]) != 0) { - _dbus_warn ("Unexpected argv[1] in shell success service test (expected: %s, got: %s)\n", + _dbus_warn ("Unexpected argv[1] in shell success service test (expected: %s, got: %s)\n", "-test", argv[1]); goto out; - } + } if (strcmp("that", argv[2]) != 0) { - _dbus_warn ("Unexpected argv[2] in shell success service test (expected: %s, got: %s)\n", + _dbus_warn ("Unexpected argv[2] in shell success service test (expected: %s, got: %s)\n", "that", argv[2]); goto out; - } + } if (strcmp("we get", argv[3]) != 0) { - _dbus_warn ("Unexpected argv[3] in shell success service test (expected: %s, got: %s)\n", + _dbus_warn ("Unexpected argv[3] in shell success service test (expected: %s, got: %s)\n", "we get", argv[3]); goto out; - } - + } + if (strcmp("back", argv[4]) != 0) { - _dbus_warn ("Unexpected argv[4] in shell success service test (expected: %s, got: %s)\n", + _dbus_warn ("Unexpected argv[4] in shell success service test (expected: %s, got: %s)\n", "back", argv[4]); goto out; - } + } if (strcmp("--what", argv[5]) != 0) { - _dbus_warn ("Unexpected argv[5] in shell success service test (expected: %s, got: %s)\n", + _dbus_warn ("Unexpected argv[5] in shell success service test (expected: %s, got: %s)\n", "--what", argv[5]); goto out; - } + } if (strcmp("we put in", argv[6]) != 0) { - _dbus_warn ("Unexpected argv[6] in shell success service test (expected: %s, got: %s)\n", + _dbus_warn ("Unexpected argv[6] in shell success service test (expected: %s, got: %s)\n", "we put in", argv[6]); goto out; - } + } dbus_message_unref (message); message = NULL; - + if (!check_send_exit_to_service (context, connection, SHELL_SUCCESS_SERVICE_NAME, base_service)) goto out; - + retval = TRUE; out: @@ -4021,7 +4052,7 @@ check_oom_check1_func (void *data) if (! (* d->func) (d->context)) return FALSE; - + if (!check_no_leftovers (d->context)) { _dbus_warn ("Messages were left over, should be covered by test suite\n"); @@ -4089,7 +4120,7 @@ check_get_services (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); dbus_connection_unref (connection); @@ -4161,15 +4192,15 @@ check_get_services (BusContext *context, *len = l; } } - + if (!check_no_leftovers (context)) goto out; - + retval = TRUE; - + out: dbus_error_free (&error); - + if (message) dbus_message_unref (message); @@ -4251,7 +4282,7 @@ check_list_services (BusContext *context, if (!dbus_connection_get_is_connected (connection)) { - _dbus_verbose ("connection was disconnected: %s %d\n", _DBUS_FUNCTION_NAME, __LINE__); + _dbus_verbose ("connection was disconnected\n"); return TRUE; } @@ -4342,7 +4373,7 @@ check_list_services (BusContext *context, "should have been a NameOwnerChanged (creation)\n"); goto out; } - + if (!check_service_activated (context, connection, EXISTENT_SERVICE_NAME, base_service, message)) goto out; @@ -4359,7 +4390,7 @@ check_list_services (BusContext *context, break; } } - + if (!check_get_services (context, connection, "ListNames", &services, &len)) { return TRUE; @@ -4403,7 +4434,7 @@ check_oom_check2_func (void *data) if (! (* d->func) (d->context, d->connection)) return FALSE; - + if (!check_no_leftovers (d->context)) { _dbus_warn ("Messages were left over, should be covered by test suite\n"); @@ -4424,7 +4455,7 @@ check2_try_iterations (BusContext *context, d.func = func; d.context = context; d.connection = connection; - + if (!_dbus_test_oom_handling (description, check_oom_check2_func, &d)) { @@ -4447,20 +4478,20 @@ setenv_TEST_LAUNCH_HELPER_CONFIG(const DBusString *test_data_dir, { _dbus_string_free (&full); return FALSE; - } + } _dbus_string_init_const (&file, filename); - + if (!_dbus_concat_dir_and_file (&full, &file)) { _dbus_string_free (&full); return FALSE; } - _dbus_verbose ("Setting TEST_LAUNCH_HELPER_CONFIG to '%s'\n", + _dbus_verbose ("Setting TEST_LAUNCH_HELPER_CONFIG to '%s'\n", _dbus_string_get_const_data (&full)); - - _dbus_setenv ("TEST_LAUNCH_HELPER_CONFIG", _dbus_string_get_const_data (&full)); + + dbus_setenv ("TEST_LAUNCH_HELPER_CONFIG", _dbus_string_get_const_data (&full)); _dbus_string_free (&full); @@ -4483,12 +4514,12 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, _dbus_assert_not_reached ("no memory setting TEST_LAUNCH_HELPER_CONFIG"); dbus_error_init (&error); - + context = bus_context_new_test (test_data_dir, filename); if (context == NULL) return FALSE; - - foo = dbus_connection_open_private (TEST_CONNECTION, &error); + + foo = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (foo == NULL) _dbus_assert_not_reached ("could not alloc connection"); @@ -4496,7 +4527,7 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, _dbus_assert_not_reached ("could not set up connection"); spin_connection_until_authenticated (context, foo); - + if (!check_hello_message (context, foo)) _dbus_assert_not_reached ("hello message failed"); @@ -4505,8 +4536,8 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, if (!check_add_match_all (context, foo)) _dbus_assert_not_reached ("AddMatch message failed"); - - bar = dbus_connection_open_private (TEST_CONNECTION, &error); + + bar = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (bar == NULL) _dbus_assert_not_reached ("could not alloc connection"); @@ -4514,14 +4545,14 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, _dbus_assert_not_reached ("could not set up connection"); spin_connection_until_authenticated (context, bar); - + if (!check_hello_message (context, bar)) _dbus_assert_not_reached ("hello message failed"); if (!check_add_match_all (context, bar)) _dbus_assert_not_reached ("AddMatch message failed"); - - baz = dbus_connection_open_private (TEST_CONNECTION, &error); + + baz = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (baz == NULL) _dbus_assert_not_reached ("could not alloc connection"); @@ -4529,7 +4560,7 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, _dbus_assert_not_reached ("could not set up connection"); spin_connection_until_authenticated (context, baz); - + if (!check_hello_message (context, baz)) _dbus_assert_not_reached ("hello message failed"); @@ -4549,16 +4580,16 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, if (!check_list_services (context, baz)) _dbus_assert_not_reached ("ListActivatableNames message failed"); - + if (!check_no_leftovers (context)) { _dbus_warn ("Messages were left over after setting up initial connections\n"); _dbus_assert_not_reached ("initial connection setup failed"); } - + check1_try_iterations (context, "create_and_hello", check_hello_connection); - + check2_try_iterations (context, foo, "nonexistent_service_no_auto_start", check_nonexistent_service_no_auto_start); @@ -4568,15 +4599,15 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, check2_try_iterations (context, foo, "segfault_service_no_auto_start", check_segfault_service_no_auto_start); #endif - + check2_try_iterations (context, foo, "existent_service_no_auto_start", check_existent_service_no_auto_start); - + check2_try_iterations (context, foo, "nonexistent_service_auto_start", check_nonexistent_service_auto_start); - -#ifdef DBUS_WIN_FIXME + +#ifdef DBUS_WIN_FIXME _dbus_warn("TODO: dispatch.c segfault_service_auto_start test\n"); #else /* only do the segfault test if we are not using the launcher */ @@ -4601,7 +4632,7 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, check2_try_iterations (context, foo, "existent_service_auto_auto_start", check_existent_service_auto_start); #endif - + if (!check_existent_service_auto_start (context, foo)) _dbus_assert_not_reached ("existent service auto start failed"); @@ -4615,7 +4646,7 @@ bus_dispatch_test_conf (const DBusString *test_data_dir, kill_client_connection_unchecked (baz); bus_context_unref (context); - + return TRUE; } @@ -4630,14 +4661,14 @@ bus_dispatch_test_conf_fail (const DBusString *test_data_dir, /* save the config name for the activation helper */ if (!setenv_TEST_LAUNCH_HELPER_CONFIG (test_data_dir, filename)) _dbus_assert_not_reached ("no memory setting TEST_LAUNCH_HELPER_CONFIG"); - + dbus_error_init (&error); - + context = bus_context_new_test (test_data_dir, filename); if (context == NULL) return FALSE; - - foo = dbus_connection_open_private (TEST_CONNECTION, &error); + + foo = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (foo == NULL) _dbus_assert_not_reached ("could not alloc connection"); @@ -4672,7 +4703,7 @@ bus_dispatch_test_conf_fail (const DBusString *test_data_dir, kill_client_connection_unchecked (foo); bus_context_unref (context); - + return TRUE; } @@ -4685,6 +4716,9 @@ bus_dispatch_test (const DBusString *test_data_dir) "valid-config-files/debug-allow-all.conf", FALSE)) return FALSE; +#ifdef DBUS_WIN + _dbus_warn("Info: Launch helper activation tests skipped because launch-helper is not supported yet\n"); +#else /* run launch-helper activation tests */ _dbus_verbose ("Launch helper activation tests\n"); if (!bus_dispatch_test_conf (test_data_dir, @@ -4695,6 +4729,7 @@ bus_dispatch_test (const DBusString *test_data_dir) if (!bus_dispatch_test_conf_fail (test_data_dir, "valid-config-files-system/debug-allow-all-fail.conf")) return FALSE; +#endif return TRUE; } @@ -4707,16 +4742,16 @@ bus_dispatch_sha1_test (const DBusString *test_data_dir) DBusError error; dbus_error_init (&error); - + /* Test SHA1 authentication */ _dbus_verbose ("Testing SHA1 context\n"); - + context = bus_context_new_test (test_data_dir, "valid-config-files/debug-allow-all-sha1.conf"); if (context == NULL) return FALSE; - foo = dbus_connection_open_private (TEST_CONNECTION, &error); + foo = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (foo == NULL) _dbus_assert_not_reached ("could not alloc connection"); @@ -4724,19 +4759,19 @@ bus_dispatch_sha1_test (const DBusString *test_data_dir) _dbus_assert_not_reached ("could not set up connection"); spin_connection_until_authenticated (context, foo); - + if (!check_hello_message (context, foo)) _dbus_assert_not_reached ("hello message failed"); if (!check_add_match_all (context, foo)) _dbus_assert_not_reached ("addmatch message failed"); - + if (!check_no_leftovers (context)) { _dbus_warn ("Messages were left over after setting up initial SHA-1 connection\n"); _dbus_assert_not_reached ("initial connection setup failed"); } - + check1_try_iterations (context, "create_and_hello_sha1", check_hello_connection); @@ -4756,7 +4791,6 @@ bus_unix_fds_passing_test(const DBusString *test_data_dir) DBusConnection *foo, *bar; DBusError error; DBusMessage *m; - dbus_bool_t b; int one[2], two[2], x, y, z; char r; @@ -4766,7 +4800,7 @@ bus_unix_fds_passing_test(const DBusString *test_data_dir) if (context == NULL) _dbus_assert_not_reached ("could not alloc context"); - foo = dbus_connection_open_private (TEST_CONNECTION, &error); + foo = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (foo == NULL) _dbus_assert_not_reached ("could not alloc connection"); @@ -4781,7 +4815,7 @@ bus_unix_fds_passing_test(const DBusString *test_data_dir) if (!check_add_match_all (context, foo)) _dbus_assert_not_reached ("AddMatch message failed"); - bar = dbus_connection_open_private (TEST_CONNECTION, &error); + bar = dbus_connection_open_private (TEST_DEBUG_PIPE, &error); if (bar == NULL) _dbus_assert_not_reached ("could not alloc connection"); @@ -4898,4 +4932,4 @@ bus_unix_fds_passing_test(const DBusString *test_data_dir) } #endif -#endif /* DBUS_BUILD_TESTS */ +#endif /* DBUS_ENABLE_EMBEDDED_TESTS */