From f216e81432ddf04889202c33a6e68113f94d7611 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Thu, 3 Apr 2003 21:56:22 +0000 Subject: 2003-04-03 Havoc Pennington * bus/activation.c (load_directory): fix up memleaks (bus_activation_entry_free): free the entry * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if we get one from the message bus; fix memleaks. * dbus/dbus-message.c (dbus_set_error_from_message): new function --- test/Makefile.am | 5 ++-- test/test-service.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 85 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/Makefile.am b/test/Makefile.am index 46a66dbc..d0429aaf 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -61,9 +61,10 @@ TESTDIRS= \ data/auth \ data/sha-1 \ data/valid-config-files \ - data/valid-config-files/basic.d + data/valid-config-files/basic.d \ + data/valid-service-files -FIND_TESTS=find -name "*.message" -o -name "*.message-raw" -o -name "*.auth-script" -o -name "*.sha1" -o -name "*.txt" -o -name "*.conf" +FIND_TESTS=find -name "*.message" -o -name "*.message-raw" -o -name "*.auth-script" -o -name "*.sha1" -o -name "*.txt" -o -name "*.conf" -o -name "*.service" dist-hook: for D in $(TESTDIRS); do \ diff --git a/test/test-service.c b/test/test-service.c index a4dff0b3..49048f66 100644 --- a/test/test-service.c +++ b/test/test-service.c @@ -1,15 +1,74 @@ #include #include +#include #include "watch.h" +static void +die (const char *message) +{ + fprintf (stderr, "%s", message); + exit (1); +} + +static DBusHandlerResult +echo_handler (DBusMessageHandler *handler, + DBusConnection *connection, + DBusMessage *message, + void *user_data) +{ + DBusError error; + DBusMessage *reply; + char *s; + + dbus_error_init (&error); + + if (!dbus_message_get_args (message, + &error, + DBUS_TYPE_STRING, &s, + DBUS_TYPE_INVALID)) + { + reply = dbus_message_new_error_reply (message, + error.name, + error.message); + + if (reply == NULL) + die ("No memory\n"); + + if (!dbus_connection_send (connection, reply, NULL)) + die ("No memory\n"); + + dbus_message_unref (reply); + + return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } + + reply = dbus_message_new_reply (message); + if (reply == NULL) + die ("No memory\n"); + + if (!dbus_message_append_string (reply, s)) + die ("No memory"); + + if (!dbus_connection_send (connection, reply, NULL)) + die ("No memory\n"); + + dbus_free (s); + + dbus_message_unref (reply); + + return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS; +} + int main (int argc, char **argv) { DBusConnection *connection; DBusError error; - DBusMessage *message; - + DBusMessageHandler *handler; + const char *to_handle[] = { "org.freedesktop.DBus.TestSuiteEcho" }; + int result; + dbus_error_init (&error); connection = dbus_bus_get (DBUS_BUS_ACTIVATION, &error); if (connection == NULL) @@ -21,10 +80,31 @@ main (int argc, } setup_connection (connection); + + handler = dbus_message_handler_new (echo_handler, NULL, NULL); + if (handler == NULL) + die ("No memory"); + + if (!dbus_connection_register_handler (connection, handler, to_handle, 1)) + die ("No memory"); + + result = dbus_bus_acquire_service (connection, "org.freedesktop.DBus.TestSuiteEchoService", + 0, &error); + if (dbus_error_is_set (&error)) + { + fprintf (stderr, "Failed to acquire service: %s\n", + error.message); + dbus_error_free (&error); + return 1; + } do_mainloop (); dbus_connection_unref (connection); + + dbus_message_handler_unref (handler); + + dbus_shutdown (); return 0; } -- cgit