From 27b694f6e109c78c633ddb8d96f524e46e536f4e Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Fri, 9 May 2003 04:15:56 +0000 Subject: 2003-05-08 Havoc Pennington * dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov data from getting written, and there wasn't a good reason to use _exit really. * test/decode-gcov.c (mark_inside_dbus_build_tests): don't count dbus_verbose lines in test coverage (main): add list of functions sorted by # of untested blocks to the coverage report * dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS * dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage * dbus/dbus-message-handler.c (_dbus_message_handler_test): extend test coverage * test/data/auth/cancel.auth-script: test canceling an authentication * dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they aren't used. in CVS history if we end up needing them. --- dbus/Makefile.am | 4 - dbus/dbus-marshal.c | 210 ++++++++++++++++++++++- dbus/dbus-memory.c | 6 +- dbus/dbus-mempool.c | 4 + dbus/dbus-message-handler.c | 4 + dbus/dbus-server-debug.c | 269 ------------------------------ dbus/dbus-server-debug.h | 41 ----- dbus/dbus-server.c | 14 -- dbus/dbus-spawn.c | 16 +- dbus/dbus-transport-debug.c | 394 -------------------------------------------- dbus/dbus-transport-debug.h | 36 ---- dbus/dbus-transport.c | 14 -- 12 files changed, 226 insertions(+), 786 deletions(-) delete mode 100644 dbus/dbus-server-debug.c delete mode 100644 dbus/dbus-server-debug.h delete mode 100644 dbus/dbus-transport-debug.c delete mode 100644 dbus/dbus-transport-debug.h (limited to 'dbus') diff --git a/dbus/Makefile.am b/dbus/Makefile.am index 3e1e0bea..99d49ab6 100644 --- a/dbus/Makefile.am +++ b/dbus/Makefile.am @@ -46,8 +46,6 @@ DBUS_LIB_SOURCES= \ dbus-resources.h \ dbus-server.c \ dbus-server-protected.h \ - dbus-server-debug.c \ - dbus-server-debug.h \ dbus-server-debug-pipe.c \ dbus-server-debug-pipe.h \ dbus-server-unix.c \ @@ -61,8 +59,6 @@ DBUS_LIB_SOURCES= \ dbus-threads.c \ dbus-transport.c \ dbus-transport.h \ - dbus-transport-debug.c \ - dbus-transport-debug.h \ dbus-transport-protected.h \ dbus-transport-unix.c \ dbus-transport-unix.h \ diff --git a/dbus/dbus-marshal.c b/dbus/dbus-marshal.c index 7841ad38..82de8ffc 100644 --- a/dbus/dbus-marshal.c +++ b/dbus/dbus-marshal.c @@ -2088,6 +2088,8 @@ _dbus_marshal_test (void) #ifdef DBUS_HAVE_INT64 dbus_int64_t array3[3] = { 0x123ffffffff, 0x456ffffffff, 0x789ffffffff }, *array4; #endif + char *s; + DBusString t; if (!_dbus_string_init (&str)) _dbus_assert_not_reached ("failed to init string"); @@ -2140,12 +2142,12 @@ _dbus_marshal_test (void) /* Marshal unsigned integers */ if (!_dbus_marshal_uint64 (&str, DBUS_BIG_ENDIAN, DBUS_UINT64_CONSTANT (0x123456789abc7))) _dbus_assert_not_reached ("could not marshal signed integer value"); - if (!_dbus_demarshal_uint64 (&str, DBUS_BIG_ENDIAN, pos, &pos) == DBUS_UINT64_CONSTANT (0x123456789abc7)) + if (!(_dbus_demarshal_uint64 (&str, DBUS_BIG_ENDIAN, pos, &pos) == DBUS_UINT64_CONSTANT (0x123456789abc7))) _dbus_assert_not_reached ("demarshal failed"); if (!_dbus_marshal_uint64 (&str, DBUS_LITTLE_ENDIAN, DBUS_UINT64_CONSTANT (0x123456789abc7))) _dbus_assert_not_reached ("could not marshal signed integer value"); - if (!_dbus_demarshal_uint64 (&str, DBUS_LITTLE_ENDIAN, pos, &pos) == DBUS_UINT64_CONSTANT (0x123456789abc7)) + if (!(_dbus_demarshal_uint64 (&str, DBUS_LITTLE_ENDIAN, pos, &pos) == DBUS_UINT64_CONSTANT (0x123456789abc7))) _dbus_assert_not_reached ("demarshal failed"); #endif /* DBUS_HAVE_INT64 */ @@ -2186,10 +2188,212 @@ _dbus_marshal_test (void) if (len != 3) _dbus_assert_not_reached ("Signed integer array lengths differ!\n"); dbus_free (array4); + + /* set/pack 64-bit integers */ + _dbus_string_set_length (&str, 8); + + /* signed little */ + _dbus_marshal_set_int64 (&str, DBUS_LITTLE_ENDIAN, + 0, DBUS_INT64_CONSTANT (-0x123456789abc7)); + + _dbus_assert (DBUS_INT64_CONSTANT (-0x123456789abc7) == + _dbus_unpack_int64 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* signed big */ + _dbus_marshal_set_int64 (&str, DBUS_BIG_ENDIAN, + 0, DBUS_INT64_CONSTANT (-0x123456789abc7)); + + _dbus_assert (DBUS_INT64_CONSTANT (-0x123456789abc7) == + _dbus_unpack_int64 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* signed little pack */ + _dbus_pack_int64 (DBUS_INT64_CONSTANT (-0x123456789abc7), + DBUS_LITTLE_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (DBUS_INT64_CONSTANT (-0x123456789abc7) == + _dbus_unpack_int64 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* signed big pack */ + _dbus_pack_int64 (DBUS_INT64_CONSTANT (-0x123456789abc7), + DBUS_BIG_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (DBUS_INT64_CONSTANT (-0x123456789abc7) == + _dbus_unpack_int64 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned little */ + _dbus_marshal_set_uint64 (&str, DBUS_LITTLE_ENDIAN, + 0, DBUS_UINT64_CONSTANT (0x123456789abc7)); + + _dbus_assert (DBUS_UINT64_CONSTANT (0x123456789abc7) == + _dbus_unpack_uint64 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned big */ + _dbus_marshal_set_uint64 (&str, DBUS_BIG_ENDIAN, + 0, DBUS_UINT64_CONSTANT (0x123456789abc7)); + + _dbus_assert (DBUS_UINT64_CONSTANT (0x123456789abc7) == + _dbus_unpack_uint64 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned little pack */ + _dbus_pack_uint64 (DBUS_UINT64_CONSTANT (0x123456789abc7), + DBUS_LITTLE_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (DBUS_UINT64_CONSTANT (0x123456789abc7) == + _dbus_unpack_uint64 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned big pack */ + _dbus_pack_uint64 (DBUS_UINT64_CONSTANT (0x123456789abc7), + DBUS_BIG_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (DBUS_UINT64_CONSTANT (0x123456789abc7) == + _dbus_unpack_uint64 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + #endif + + /* set/pack 32-bit integers */ + _dbus_string_set_length (&str, 4); + + /* signed little */ + _dbus_marshal_set_int32 (&str, DBUS_LITTLE_ENDIAN, + 0, -0x123456); - _dbus_string_free (&str); + _dbus_assert (-0x123456 == + _dbus_unpack_int32 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* signed big */ + _dbus_marshal_set_int32 (&str, DBUS_BIG_ENDIAN, + 0, -0x123456); + + _dbus_assert (-0x123456 == + _dbus_unpack_int32 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* signed little pack */ + _dbus_pack_int32 (-0x123456, + DBUS_LITTLE_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (-0x123456 == + _dbus_unpack_int32 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* signed big pack */ + _dbus_pack_int32 (-0x123456, + DBUS_BIG_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (-0x123456 == + _dbus_unpack_int32 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned little */ + _dbus_marshal_set_uint32 (&str, DBUS_LITTLE_ENDIAN, + 0, 0x123456); + + _dbus_assert (0x123456 == + _dbus_unpack_uint32 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned big */ + _dbus_marshal_set_uint32 (&str, DBUS_BIG_ENDIAN, + 0, 0x123456); + + _dbus_assert (0x123456 == + _dbus_unpack_uint32 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned little pack */ + _dbus_pack_uint32 (0x123456, + DBUS_LITTLE_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (0x123456 == + _dbus_unpack_uint32 (DBUS_LITTLE_ENDIAN, + _dbus_string_get_const_data (&str))); + + /* unsigned big pack */ + _dbus_pack_uint32 (0x123456, + DBUS_BIG_ENDIAN, + _dbus_string_get_data (&str)); + + _dbus_assert (0x123456 == + _dbus_unpack_uint32 (DBUS_BIG_ENDIAN, + _dbus_string_get_const_data (&str))); + + + /* Strings */ + + _dbus_string_set_length (&str, 0); + + _dbus_marshal_string (&str, DBUS_LITTLE_ENDIAN, + "Hello world"); + + s = _dbus_demarshal_string (&str, DBUS_LITTLE_ENDIAN, 0, NULL); + _dbus_assert (strcmp (s, "Hello world") == 0); + dbus_free (s); + + _dbus_string_init_const (&t, "Hello world foo"); + + _dbus_marshal_set_string (&str, DBUS_LITTLE_ENDIAN, 0, + &t, _dbus_string_get_length (&t)); + + s = _dbus_demarshal_string (&str, DBUS_LITTLE_ENDIAN, 0, NULL); + _dbus_assert (strcmp (s, "Hello world foo") == 0); + dbus_free (s); + + _dbus_string_init_const (&t, "Hello"); + _dbus_marshal_set_string (&str, DBUS_LITTLE_ENDIAN, 0, + &t, _dbus_string_get_length (&t)); + + s = _dbus_demarshal_string (&str, DBUS_LITTLE_ENDIAN, 0, NULL); + _dbus_assert (strcmp (s, "Hello") == 0); + dbus_free (s); + + /* Strings (big endian) */ + + _dbus_string_set_length (&str, 0); + + _dbus_marshal_string (&str, DBUS_BIG_ENDIAN, + "Hello world"); + + s = _dbus_demarshal_string (&str, DBUS_BIG_ENDIAN, 0, NULL); + _dbus_assert (strcmp (s, "Hello world") == 0); + dbus_free (s); + + _dbus_string_init_const (&t, "Hello world foo"); + + _dbus_marshal_set_string (&str, DBUS_BIG_ENDIAN, 0, + &t, _dbus_string_get_length (&t)); + + s = _dbus_demarshal_string (&str, DBUS_BIG_ENDIAN, 0, NULL); + _dbus_assert (strcmp (s, "Hello world foo") == 0); + dbus_free (s); + + _dbus_string_init_const (&t, "Hello"); + + _dbus_marshal_set_string (&str, DBUS_BIG_ENDIAN, 0, + &t, _dbus_string_get_length (&t)); + + s = _dbus_demarshal_string (&str, DBUS_BIG_ENDIAN, 0, NULL); + _dbus_assert (strcmp (s, "Hello") == 0); + dbus_free (s); + + + _dbus_string_free (&str); return TRUE; } diff --git a/dbus/dbus-memory.c b/dbus/dbus-memory.c index dce1dded..02bc1a49 100644 --- a/dbus/dbus-memory.c +++ b/dbus/dbus-memory.c @@ -442,7 +442,7 @@ dbus_malloc (size_t bytes) if (bytes == 0) /* some system mallocs handle this, some don't */ return NULL; -#if DBUS_BUILD_TESTS +#ifdef DBUS_BUILD_TESTS else if (fail_size != 0 && bytes > fail_size) return NULL; else if (guards) @@ -493,7 +493,7 @@ dbus_malloc0 (size_t bytes) if (bytes == 0) return NULL; -#if DBUS_BUILD_TESTS +#ifdef DBUS_BUILD_TESTS else if (fail_size != 0 && bytes > fail_size) return NULL; else if (guards) @@ -548,7 +548,7 @@ dbus_realloc (void *memory, dbus_free (memory); return NULL; } -#if DBUS_BUILD_TESTS +#ifdef DBUS_BUILD_TESTS else if (fail_size != 0 && bytes > fail_size) return NULL; else if (guards) diff --git a/dbus/dbus-mempool.c b/dbus/dbus-mempool.c index 5074c7d2..a53a4886 100644 --- a/dbus/dbus-mempool.c +++ b/dbus/dbus-mempool.c @@ -207,6 +207,7 @@ _dbus_mem_pool_free (DBusMemPool *pool) void* _dbus_mem_pool_alloc (DBusMemPool *pool) { +#ifdef DBUS_BUILD_TESTS if (_dbus_disable_mem_pools ()) { DBusMemBlock *block; @@ -239,6 +240,7 @@ _dbus_mem_pool_alloc (DBusMemPool *pool) return NULL; } else +#endif { if (_dbus_decrement_fail_alloc_counter ()) { @@ -334,6 +336,7 @@ dbus_bool_t _dbus_mem_pool_dealloc (DBusMemPool *pool, void *element) { +#ifdef DBUS_BUILD_TESTS if (_dbus_disable_mem_pools ()) { DBusMemBlock *block; @@ -371,6 +374,7 @@ _dbus_mem_pool_dealloc (DBusMemPool *pool, return FALSE; } else +#endif { DBusFreedElement *freed; diff --git a/dbus/dbus-message-handler.c b/dbus/dbus-message-handler.c index 0b44e133..a978ba05 100644 --- a/dbus/dbus-message-handler.c +++ b/dbus/dbus-message-handler.c @@ -359,6 +359,10 @@ _dbus_message_handler_test (const char *test_data_dir) if (dbus_message_handler_get_data (handler) != TEST_DATA) _dbus_assert_not_reached ("got wrong data"); + dbus_message_handler_set_data (handler, NULL, NULL); + if (dbus_message_handler_get_data (handler) != NULL) + _dbus_assert_not_reached ("got wrong data after set"); + dbus_message_handler_set_function (handler, NULL); _dbus_assert (handler->function == NULL); diff --git a/dbus/dbus-server-debug.c b/dbus/dbus-server-debug.c deleted file mode 100644 index 1cb4ee2d..00000000 --- a/dbus/dbus-server-debug.c +++ /dev/null @@ -1,269 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu" -*- */ -/* dbus-server-debug.h In-proc debug server implementation - * - * Copyright (C) 2003 CodeFactory AB - * - * Licensed under the Academic Free License version 1.2 - * - * 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 - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include "dbus-internals.h" -#include "dbus-server-debug.h" -#include "dbus-transport-debug.h" -#include "dbus-connection-internal.h" -#include "dbus-hash.h" - -#ifdef DBUS_BUILD_TESTS - -/** - * @defgroup DBusServerDebug DBusServerDebug - * @ingroup DBusInternals - * @brief In-process debug server used in unit tests. - * - * Types and functions related to DBusServerDebug. - * This is used for unit testing. - * - * @{ - */ - -/** - * Default timeout interval when reading or writing. - */ -#define DEFAULT_INTERVAL 1 - -/** - * Opaque object representing a debug server implementation. - */ -typedef struct DBusServerDebug DBusServerDebug; - -/** - * Implementation details of DBusServerDebug. All members - * are private. - */ -struct DBusServerDebug -{ - DBusServer base; /**< Parent class members. */ - - char *name; /**< Server name. */ -}; - -/* Not thread safe, but OK since we don't use - * threads in the bus - */ -static DBusHashTable *server_hash; - -static void -debug_finalize (DBusServer *server) -{ -} - -static void -debug_disconnect (DBusServer *server) -{ -} - -static DBusServerVTable debug_vtable = { - debug_finalize, - debug_disconnect -}; - -/** - * Looks up a server by its name. - * - * @param server_name the server name. - * @returns the server, or #NULL if none exists. - */ -DBusServer* -_dbus_server_debug_lookup (const char *server_name) -{ - if (!server_hash) - return NULL; - - return _dbus_hash_table_lookup_string (server_hash, server_name); -} - -/** - * Creates a new debug server. - * - * @param server_name the name of the server. - * @param error address where an error can be returned. - * @returns a new server, or #NULL on failure. - */ -DBusServer* -_dbus_server_debug_new (const char *server_name, - DBusError *error) -{ - DBusServerDebug *debug_server; - DBusString address; - - _DBUS_ASSERT_ERROR_IS_CLEAR (error); - - if (!server_hash) - { - server_hash = _dbus_hash_table_new (DBUS_HASH_STRING, NULL, NULL); - - if (!server_hash) - { - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - return NULL; - } - } - - if (_dbus_hash_table_lookup_string (server_hash, server_name) != NULL) - { - dbus_set_error (error, DBUS_ERROR_ADDRESS_IN_USE, - NULL); - return NULL; - } - - debug_server = dbus_new0 (DBusServerDebug, 1); - - if (debug_server == NULL) - return NULL; - - if (!_dbus_string_init (&address)) - goto nomem_0; - - if (!_dbus_string_append (&address, "debug:name=") || - !_dbus_string_append (&address, server_name)) - goto nomem_1; - - debug_server->name = _dbus_strdup (server_name); - if (debug_server->name == NULL) - goto nomem_1; - - if (!_dbus_server_init_base (&debug_server->base, - &debug_vtable, - &address)) - goto nomem_2; - - if (!_dbus_hash_table_insert_string (server_hash, - debug_server->name, - debug_server)) - goto nomem_3; - - _dbus_string_free (&address); - - return (DBusServer *)debug_server; - - nomem_3: - _dbus_server_finalize_base (&debug_server->base); - nomem_2: - dbus_free (debug_server->name); - nomem_1: - _dbus_string_free (&address); - nomem_0: - dbus_free (debug_server); - - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - - return NULL; -} - -typedef struct -{ - DBusServer *server; - DBusTransport *transport; - DBusTimeout *timeout; -} ServerAndTransport; - -static dbus_bool_t -handle_new_client (void *data) -{ - ServerAndTransport *st = data; - DBusTransport *transport; - DBusConnection *connection; - - _dbus_verbose (" new debug client transport %p connecting to server\n", - st->transport); - - transport = _dbus_transport_debug_server_new (st->transport); - if (transport == NULL) - return FALSE; - - connection = _dbus_connection_new_for_transport (transport); - _dbus_transport_unref (transport); - - if (connection == NULL) - return FALSE; - - /* See if someone wants to handle this new connection, - * self-referencing for paranoia - */ - if (st->server->new_connection_function) - { - dbus_server_ref (st->server); - - (* st->server->new_connection_function) (st->server, connection, - st->server->new_connection_data); - dbus_server_unref (st->server); - } - - _dbus_server_remove_timeout (st->server, st->timeout); - - /* If no one grabbed a reference, the connection will die. */ - dbus_connection_unref (connection); - - /* killing timeout frees both "st" and "timeout" */ - _dbus_timeout_unref (st->timeout); - - return TRUE; -} - -/** - * Tells the server to accept a transport so the transport - * can send messages to it. - * - * @param server the server - * @param transport the transport - * @returns #TRUE on success. - */ -dbus_bool_t -_dbus_server_debug_accept_transport (DBusServer *server, - DBusTransport *transport) -{ - ServerAndTransport *st = NULL; - - st = dbus_new (ServerAndTransport, 1); - if (st == NULL) - return FALSE; - - st->transport = transport; - st->server = server; - - st->timeout = _dbus_timeout_new (DEFAULT_INTERVAL, handle_new_client, st, - dbus_free); - - if (st->timeout == NULL) - goto failed; - - if (!_dbus_server_add_timeout (server, st->timeout)) - goto failed; - - return TRUE; - - failed: - if (st->timeout) - _dbus_timeout_unref (st->timeout); - dbus_free (st); - return FALSE; -} - -/** @} */ - -#endif /* DBUS_BUILD_TESTS */ - diff --git a/dbus/dbus-server-debug.h b/dbus/dbus-server-debug.h deleted file mode 100644 index 788267df..00000000 --- a/dbus/dbus-server-debug.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu" -*- */ -/* dbus-server-debug.h In-proc debug server implementation - * - * Copyright (C) 2003 CodeFactory AB - * - * Licensed under the Academic Free License version 1.2 - * - * 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 - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -#ifndef DBUS_SERVER_DEBUG_H -#define DBUS_SERVER_DEBUG_H - -#include -#include -#include - -DBUS_BEGIN_DECLS; - -DBusServer* _dbus_server_debug_new (const char *server_name, - DBusError *error); -DBusServer* _dbus_server_debug_lookup (const char *server_name); -dbus_bool_t _dbus_server_debug_accept_transport (DBusServer *server, - DBusTransport *transport); - - -DBUS_END_DECLS; - -#endif /* DBUS_SERVER_DEBUG_H */ diff --git a/dbus/dbus-server.c b/dbus/dbus-server.c index 72a60d04..e62c0284 100644 --- a/dbus/dbus-server.c +++ b/dbus/dbus-server.c @@ -24,7 +24,6 @@ #include "dbus-server.h" #include "dbus-server-unix.h" #ifdef DBUS_BUILD_TESTS -#include "dbus-server-debug.h" #include "dbus-server-debug-pipe.h" #endif #include "dbus-address.h" @@ -389,19 +388,6 @@ dbus_server_listen (const char *address, break; } #ifdef DBUS_BUILD_TESTS - else if (strcmp (method, "debug") == 0) - { - const char *name = dbus_address_entry_get_value (entries[i], "name"); - - if (name == NULL) - { - address_problem_type = "debug"; - address_problem_field = "name"; - goto bad_address; - } - - server = _dbus_server_debug_new (name, error); - } else if (strcmp (method, "debug-pipe") == 0) { const char *name = dbus_address_entry_get_value (entries[i], "name"); diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index 5a367036..179b9f9a 100644 --- a/dbus/dbus-spawn.c +++ b/dbus/dbus-spawn.c @@ -765,7 +765,7 @@ do_write (int fd, const void *buf, size_t count) else { _dbus_warn ("Failed to write data to pipe!\n"); - _exit (1); /* give up, we suck */ + exit (1); /* give up, we suck */ } } else @@ -783,7 +783,7 @@ write_err_and_exit (int fd, int msg) do_write (fd, &msg, sizeof (msg)); do_write (fd, &en, sizeof (en)); - _exit (1); + exit (1); } static void @@ -803,7 +803,7 @@ write_status_and_exit (int fd, int status) do_write (fd, &msg, sizeof (msg)); do_write (fd, &status, sizeof (status)); - _exit (0); + exit (0); } static void @@ -868,7 +868,7 @@ check_babysit_events (pid_t grandchild_pid, /* This isn't supposed to happen. */ _dbus_warn ("unexpected waitpid() failure in check_babysit_events(): %s\n", _dbus_strerror (errno)); - _exit (1); + exit (1); } else if (ret == grandchild_pid) { @@ -881,7 +881,7 @@ check_babysit_events (pid_t grandchild_pid, { _dbus_warn ("waitpid() reaped pid %d that we've never heard of\n", (int) ret); - _exit (1); + exit (1); } if (revents & _DBUS_POLLIN) @@ -893,7 +893,7 @@ check_babysit_events (pid_t grandchild_pid, { /* Parent is gone, so we just exit */ _dbus_verbose ("babysitter got POLLERR or POLLHUP from parent\n"); - _exit (0); + exit (0); } } @@ -928,7 +928,7 @@ babysit (pid_t grandchild_pid, if (pipe (sigchld_pipe) < 0) { _dbus_warn ("Not enough file descriptors to create pipe in babysitter process\n"); - _exit (1); + exit (1); } babysit_sigchld_pipe = sigchld_pipe[WRITE_END]; @@ -966,7 +966,7 @@ babysit (pid_t grandchild_pid, } } - _exit (1); + exit (1); } /** diff --git a/dbus/dbus-transport-debug.c b/dbus/dbus-transport-debug.c deleted file mode 100644 index 5b250d7f..00000000 --- a/dbus/dbus-transport-debug.c +++ /dev/null @@ -1,394 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu" -*- */ -/* dbus-transport-debug.c In-proc debug subclass of DBusTransport - * - * Copyright (C) 2003 CodeFactory AB - * Copyright (C) 2003 Red Hat, Inc. - * - * Licensed under the Academic Free License version 1.2 - * - * 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 - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include "dbus-internals.h" -#include "dbus-connection-internal.h" -#include "dbus-transport-protected.h" -#include "dbus-transport-debug.h" -#include "dbus-server-debug.h" -#include "dbus-list.h" - -#ifdef DBUS_BUILD_TESTS - -/** - * @defgroup DBusTransportDebug DBusTransportDebug - * @ingroup DBusInternals - * @brief In-process debug transport used in unit tests. - * - * Types and functions related to DBusTransportDebug. - * This is used for unit testing. - * - * @{ - */ - -/** - * Default timeout interval when reading or writing. - */ -#define DEFAULT_INTERVAL 1 - -/** - * Hack due to lack of OOM handling in a couple places. - * Need to alloc timeout permanently and enabled/disable so - * that check_timeout won't fail in messages_pending - */ -#define WAIT_FOR_MEMORY() _dbus_sleep_milliseconds (250) - -static dbus_bool_t check_timeout (DBusTransport *transport); - -/** - * Opaque object representing a debug transport. - * - */ -typedef struct DBusTransportDebug DBusTransportDebug; - -/** - * Implementation details of DBusTransportDebug. All members are private. - */ -struct DBusTransportDebug -{ - DBusTransport base; /**< Parent instance */ - - DBusTimeout *timeout; /**< Timeout for moving messages. */ - - DBusTransport *other_end; /**< The transport that this transport is connected to. */ - - unsigned int timeout_added : 1; /**< Whether timeout has been added */ -}; - -/* move messages in both directions */ -static dbus_bool_t -move_messages (DBusTransport *transport) -{ - DBusTransportDebug *debug_transport = (DBusTransportDebug*) transport; - - if (transport->disconnected) - return TRUE; - - while (!transport->disconnected && - _dbus_connection_have_messages_to_send (transport->connection)) - { - DBusMessage *message, *copy; - - message = _dbus_connection_get_message_to_send (transport->connection); - _dbus_assert (message != NULL); - - copy = dbus_message_copy (message); - if (copy == NULL) - return FALSE; - - _dbus_message_lock (message); - - _dbus_connection_message_sent (transport->connection, - message); - - _dbus_verbose (" -->transporting message %s from %s %p to %s %p\n", - dbus_message_get_name (copy), - transport->is_server ? "server" : "client", - transport->connection, - debug_transport->other_end->is_server ? "server" : "client", - debug_transport->other_end->connection); - - _dbus_connection_queue_received_message (debug_transport->other_end->connection, - copy); - dbus_message_unref (copy); - } - - if (debug_transport->other_end && - !debug_transport->other_end->disconnected && - _dbus_connection_have_messages_to_send (debug_transport->other_end->connection)) - { - if (!move_messages (debug_transport->other_end)) - return FALSE; - } - - return TRUE; -} - -static dbus_bool_t -timeout_handler (void *data) -{ - DBusTransport *transport = data; - - if (!move_messages (transport)) - return FALSE; - - if (!check_timeout (transport)) - return FALSE; - - return TRUE; -} - -static dbus_bool_t -check_timeout (DBusTransport *transport) -{ - DBusTransportDebug *debug_transport = (DBusTransportDebug*) transport; - - if (transport->connection && - transport->authenticated && - (transport->messages_need_sending || - (debug_transport->other_end && - debug_transport->other_end->messages_need_sending))) - { - if (!debug_transport->timeout_added) - { - /* FIXME this can be fixed now, by enabling/disabling - * the timeout instead of adding it here - */ - if (!_dbus_connection_add_timeout (transport->connection, - debug_transport->timeout)) - return FALSE; - debug_transport->timeout_added = TRUE; - } - } - else - { - if (debug_transport->timeout_added) - { - _dbus_connection_remove_timeout (transport->connection, - debug_transport->timeout); - debug_transport->timeout_added = FALSE; - } - } - - return TRUE; -} - -static void -debug_finalize (DBusTransport *transport) -{ - DBusTransportDebug *debug_transport = (DBusTransportDebug*) transport; - - if (debug_transport->timeout_added) - _dbus_connection_remove_timeout (transport->connection, - debug_transport->timeout); - - if (debug_transport->other_end) - { - _dbus_transport_disconnect (debug_transport->other_end); - debug_transport->other_end = NULL; - } - - _dbus_transport_finalize_base (transport); - - _dbus_timeout_unref (debug_transport->timeout); - - dbus_free (transport); -} - -static dbus_bool_t -debug_handle_watch (DBusTransport *transport, - DBusWatch *watch, - unsigned int flags) -{ - return TRUE; -} - -static void -debug_disconnect (DBusTransport *transport) -{ -} - -static dbus_bool_t -debug_connection_set (DBusTransport *transport) -{ - if (!check_timeout (transport)) - return FALSE; - return TRUE; -} - -static void -debug_messages_pending (DBusTransport *transport, - int messages_pending) -{ - while (!check_timeout (transport)) - WAIT_FOR_MEMORY (); -} - -static void -debug_do_iteration (DBusTransport *transport, - unsigned int flags, - int timeout_milliseconds) -{ - move_messages (transport); -} - -static void -debug_live_messages_changed (DBusTransport *transport) -{ -} - -static DBusTransportVTable debug_vtable = { - debug_finalize, - debug_handle_watch, - debug_disconnect, - debug_connection_set, - debug_messages_pending, - debug_do_iteration, - debug_live_messages_changed -}; - -static dbus_bool_t -create_timeout_object (DBusTransportDebug *debug_transport) -{ - debug_transport->timeout = _dbus_timeout_new (DEFAULT_INTERVAL, - timeout_handler, - debug_transport, NULL); - - return debug_transport->timeout != NULL; -} - -/** - * Creates a new debug server transport. - * - * @param client the client transport that the server transport - * should use. - * @returns a new debug transport - */ -DBusTransport* -_dbus_transport_debug_server_new (DBusTransport *client) -{ - DBusTransportDebug *debug_transport; - - debug_transport = dbus_new0 (DBusTransportDebug, 1); - - if (debug_transport == NULL) - return NULL; - - if (!_dbus_transport_init_base (&debug_transport->base, - &debug_vtable, - TRUE, NULL)) - { - dbus_free (debug_transport); - return NULL; - } - - if (!create_timeout_object (debug_transport)) - { - _dbus_transport_finalize_base (&debug_transport->base); - dbus_free (debug_transport); - return NULL; - } - - debug_transport->base.authenticated = TRUE; - - /* Connect the two transports */ - debug_transport->other_end = client; - ((DBusTransportDebug *)client)->other_end = (DBusTransport *)debug_transport; - - _dbus_verbose (" new debug server transport %p created, other end %p\n", - debug_transport, debug_transport->other_end); - - return (DBusTransport *)debug_transport; -} - -/** - * Creates a new debug client transport. - * - * @param server_name name of the server transport that - * the client should try to connect to. - * @param error address where an error can be returned. - * @returns a new transport, or #NULL on failure. - */ -DBusTransport* -_dbus_transport_debug_client_new (const char *server_name, - DBusError *error) -{ - DBusServer *debug_server; - DBusTransportDebug *debug_transport; - DBusString address; - - _DBUS_ASSERT_ERROR_IS_CLEAR (error); - - debug_server = _dbus_server_debug_lookup (server_name); - - if (!debug_server) - { - dbus_set_error (error, DBUS_ERROR_NO_SERVER, NULL); - return NULL; - } - - if (!_dbus_string_init (&address)) - { - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - return NULL; - } - - if (!_dbus_string_append (&address, "debug-pipe:name=") || - !_dbus_string_append (&address, server_name)) - { - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - _dbus_string_free (&address); - return NULL; - } - - debug_transport = dbus_new0 (DBusTransportDebug, 1); - if (debug_transport == NULL) - { - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - _dbus_string_free (&address); - return NULL; - } - - if (!_dbus_transport_init_base (&debug_transport->base, - &debug_vtable, - FALSE, &address)) - { - dbus_free (debug_transport); - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - _dbus_string_free (&address); - return NULL; - } - - _dbus_string_free (&address); - - if (!create_timeout_object (debug_transport)) - { - _dbus_transport_finalize_base (&debug_transport->base); - dbus_free (debug_transport); - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - return NULL; - } - - if (!_dbus_server_debug_accept_transport (debug_server, - (DBusTransport *)debug_transport)) - { - _dbus_timeout_unref (debug_transport->timeout); - _dbus_transport_finalize_base (&debug_transport->base); - dbus_free (debug_transport); - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - return NULL; - } - - /* FIXME: Prolly wrong to do this. */ - debug_transport->base.authenticated = TRUE; - - _dbus_verbose (" new debug client transport %p created, other end %p\n", - debug_transport, debug_transport->other_end); - - return (DBusTransport *)debug_transport; -} - -/** @} */ - -#endif /* DBUS_BUILD_TESTS */ diff --git a/dbus/dbus-transport-debug.h b/dbus/dbus-transport-debug.h deleted file mode 100644 index ced95090..00000000 --- a/dbus/dbus-transport-debug.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu" -*- */ -/* dbus-transport-debug.h Debug in-proc subclass of DBusTransport - * - * Copyright (C) 2003 CodeFactory AB - * - * Licensed under the Academic Free License version 1.2 - * - * 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 - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -#ifndef DBUS_TRANSPORT_DEBUG_H -#define DBUS_TRANSPORT_DEBUG_H - -#include - -DBUS_BEGIN_DECLS; - -DBusTransport* _dbus_transport_debug_server_new (DBusTransport *client); -DBusTransport* _dbus_transport_debug_client_new (const char *server_name, - DBusError *error); - -DBUS_END_DECLS; - -#endif /* DBUS_TRANSPORT_DEBUG_H */ diff --git a/dbus/dbus-transport.c b/dbus/dbus-transport.c index 23322566..af1cb421 100644 --- a/dbus/dbus-transport.c +++ b/dbus/dbus-transport.c @@ -28,7 +28,6 @@ #include "dbus-auth.h" #include "dbus-address.h" #ifdef DBUS_BUILD_TESTS -#include "dbus-transport-debug.h" #include "dbus-server-debug-pipe.h" #endif @@ -288,19 +287,6 @@ _dbus_transport_open (const char *address, transport = _dbus_transport_new_for_tcp_socket (host, lport, &tmp_error); } #ifdef DBUS_BUILD_TESTS - else if (strcmp (method, "debug") == 0) - { - const char *name = dbus_address_entry_get_value (entries[i], "name"); - - if (name == NULL) - { - address_problem_type = "debug"; - address_problem_field = "name"; - goto bad_address; - } - - transport = _dbus_transport_debug_client_new (name, &tmp_error); - } else if (strcmp (method, "debug-pipe") == 0) { const char *name = dbus_address_entry_get_value (entries[i], "name"); -- cgit