From d8abf955f5bff3e83cabd267883039f7a42c98c3 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Tue, 8 Jul 2003 05:07:32 +0000 Subject: 2003-07-08 Havoc Pennington * dbus/dbus-object.h: sketch out an API for registering objects with a connection, that allows us to use as little as 24 bytes per object and lets application code represent an object in any conceivable way. * dbus/dbus-object-registry.c: implement the hard bits of the DBusConnection aspect of object API. Not yet wired up. --- ChangeLog | 1258 ++++++++++++++++++++------------------- dbus/Makefile.am | 4 + dbus/dbus-connection-internal.h | 1 + dbus/dbus-connection.c | 16 + dbus/dbus-connection.h | 1 + dbus/dbus-object-registry.c | 325 ++++++++++ dbus/dbus-object-registry.h | 50 ++ dbus/dbus-object.c | 27 + dbus/dbus-object.h | 85 +++ dbus/dbus-objectid.h | 4 + dbus/dbus-test.c | 6 + dbus/dbus-test.h | 1 + dbus/dbus.h | 1 + 13 files changed, 1155 insertions(+), 624 deletions(-) create mode 100644 dbus/dbus-object-registry.c create mode 100644 dbus/dbus-object-registry.h create mode 100644 dbus/dbus-object.c create mode 100644 dbus/dbus-object.h diff --git a/ChangeLog b/ChangeLog index 527ad1fd..9ed9055c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,22 @@ +2003-07-08 Havoc Pennington + + * dbus/dbus-object.h: sketch out an API for registering objects + with a connection, that allows us to use as little as 24 bytes + per object and lets application code represent an object in + any conceivable way. + + * dbus/dbus-object-registry.c: implement the hard bits of the + DBusConnection aspect of object API. Not yet wired up. + 2003-07-06 Havoc Pennington * dbus/dbus-marshal.c (_dbus_marshal_set_object_id): new function (_dbus_marshal_object_id): new (_dbus_demarshal_object_id): new (_dbus_marshal_get_arg_end_pos): support object ID type, and - consolidate identical switch cases. Don't conditionalize handling + consolidate identical switch cases. Don't conditionalize handling of DBUS_TYPE_UINT64, need to handle the type always. - (_dbus_marshal_validate_arg): consolidate identical cases, and + (_dbus_marshal_validate_arg): consolidate identical cases, and handle DBUS_TYPE_OBJECT_ID * dbus/dbus-objectid.c: new file with DBusObjectID data type. @@ -26,7 +36,7 @@ 2003-07-01 Havoc Pennington - * doc/dbus-specification.sgml: clarify the format of a type code, + * doc/dbus-specification.sgml: clarify the format of a type code, change suggested by Jim Blandy 2003-06-29 Miloslav Trmac @@ -44,7 +54,7 @@ of %c%c%c%c. (dbus_message_new): Remove obsolete @todo. - * dbus/dbus-marshal.c (_dbus_marshal_set_int64) + * dbus/dbus-marshal.c (_dbus_marshal_set_int64) (_dbus_marshal_set_uint64): Fix comment. * dbus/dbus-message.c (append_int_field, append_uint_field): Don't @@ -77,7 +87,7 @@ (Message.Message): * gcj/org/freedesktop/dbus/natMessage.cc: Fix the build system. - + 2003-06-22 Havoc Pennington * mono/Connection.cs: add more bindings @@ -87,13 +97,13 @@ 2003-06-22 Havoc Pennington - * mono/Connection.cs, mono/DBus.cs, mono/Error.cs: + * mono/Connection.cs, mono/DBus.cs, mono/Error.cs: Start wrapping more stuff. 2003-06-22 Havoc Pennington * mono/Message.cs: implement Message.Wrap() that ensures we only - have a single C# wrapper per DBusMessage, assuming it works which + have a single C# wrapper per DBusMessage, assuming it works which it probably doesn't. * dbus/dbus-message.c (dbus_message_allocate_data_slot): new @@ -105,9 +115,9 @@ * dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref) (_dbus_data_slot_allocator_alloc): rework these to keep a - reference count on each slot and automatically manage a global + reference count on each slot and automatically manage a global slot ID variable passed in by address - + * bus/bus.c: convert to new dataslot API * dbus/dbus-bus.c: convert to new dataslot API @@ -133,9 +143,9 @@ 2003-06-22 Havoc Pennington - * mono/*, gcj/*, configure.in, Makefile.am: - Check in makefiles and subdirs for mono and gcj bindings. - Neither binding actually exists, just trying to get through + * mono/*, gcj/*, configure.in, Makefile.am: + Check in makefiles and subdirs for mono and gcj bindings. + Neither binding actually exists, just trying to get through all the build and other boring bits. 2003-06-21 Philip Blundell @@ -146,7 +156,7 @@ 2003-06-20 Anders Carlsson - * dbus/dbus-transport-unix.c (unix_handle_watch): Check + * dbus/dbus-transport-unix.c (unix_handle_watch): Check for hangup and error after checking read so we won't discard pending data if both hangup and read are set. @@ -155,9 +165,9 @@ * tools/dbus-print-message.c (print_message): Handle BOOLEAN. * tools/dbus-send.c: Accept both --system and --session. - + * tools/dbus-monitor.c: Same here. - + 2003-06-19 Anders Carlsson * glib/dbus-glib.h: Fix so that dbus-glib.h can be used @@ -201,13 +211,13 @@ toggle as an argument, implement abstract namespace support (_dbus_listen_unix_socket): ditto - * configure.in: add --enable-abstract-sockets and implement + * configure.in: add --enable-abstract-sockets and implement a configure check for autodetection of the right value. 2003-06-01 Havoc Pennington - * tools/dbus-cleanup-sockets.c: add utility to clean up sockets - in /tmp (though on Linux this will end up being useless, + * tools/dbus-cleanup-sockets.c: add utility to clean up sockets + in /tmp (though on Linux this will end up being useless, when we add abstract namespace support) * configure.in: define DBUS_SESSION_SOCKET_DIR in addition to @@ -226,29 +236,29 @@ * tools/dbus-send.c: Don't exit with an error code if --help was passed. Default to using the session bus instead of the system one. - - * tools/dbus-launch.c: Ditto. + + * tools/dbus-launch.c: Ditto. * tools/dbus-monitor.c: Ditto. * tools/dbus-send.1: Update with new arguments. - + * tools/dbus-launch.c: Emit code to export variables. New arguments -s and -c to specify shell syntax, and a bit of code to autodetect syntax. Also, allow specifying a program to run. - + * tools/dbus-launch.1: Update with new arguments. - + * tools/dbus-send.1: Ditto. * tools/dbus-monitor.1: Ditto. - + 2003-05-17 Havoc Pennington * bus/config-parser.c (merge_included): merge in policies from child configuration file. - * bus/policy.c (bus_policy_merge): function to merge two policies + * bus/policy.c (bus_policy_merge): function to merge two policies together 2003-05-16 Havoc Pennington @@ -257,12 +267,12 @@ * tools/dbus-send.c: add --print-reply command line option - * tools/dbus-print-message.h (print_message): new util function + * tools/dbus-print-message.h (print_message): new util function shared by dbus-send and dbus-monitor * tools/dbus-monitor.c (handler_func): exit on disconnect - * dbus/dbus-transport-unix.c (do_reading): if the transport is + * dbus/dbus-transport-unix.c (do_reading): if the transport is disconnected, don't try to use the read_watch * dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL @@ -301,7 +311,7 @@ check" as it broke distcheck * bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d - + 2003-05-13 James Willcox * configure.in: @@ -323,18 +333,18 @@ 2003-05-11 Havoc Pennington - * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid + * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid calling _dbus_marshal_validate_arg() for every byte in a byte array, etc. - * dbus/dbus-message-handler.c: use atomic reference counting to + * dbus/dbus-message-handler.c: use atomic reference counting to reduce number of locks slightly; the global lock in here sucks * dbus/dbus-connection.c (_dbus_connection_update_dispatch_status_and_unlock): variant of update_dispatch_status that can be called with lock held; then use in a couple places to reduce locking/unlocking - (dbus_connection_send): hold the lock over the whole function + (dbus_connection_send): hold the lock over the whole function instead of acquiring it twice. * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM @@ -350,7 +360,7 @@ * dbus/dbus-list.c (_dbus_list_find_last): new function * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): - change to use a struct for the atomic type; fix docs, + change to use a struct for the atomic type; fix docs, they return value before increment, not after increment. * dbus/dbus-string.c (_dbus_string_append_4_aligned) @@ -367,8 +377,8 @@ * dbus/dbus-string.c (_dbus_string_move): just call _dbus_string_move_len - (_dbus_string_move_len): add a special case for moving - an entire string into an empty string; we can just + (_dbus_string_move_len): add a special case for moving + an entire string into an empty string; we can just swap the string data instead of doing any reallocs. (_dbus_string_init_preallocated): new function @@ -379,14 +389,14 @@ UTF-8 validation as hot spots. 20% of lock contention eliminated with dbus_atomic_inc/dec implementation on x86. Much remaining contention is global mempool locks for GList and DBusList. - + * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): add x86 implementation * dbus/dbus-connection.c (struct DBusConnection): use - dbus_atomic_t for the reference count + dbus_atomic_t for the reference count - * dbus/dbus-message.c (struct DBusMessage): declare + * dbus/dbus-message.c (struct DBusMessage): declare dbus_atomic_t values as volatile * configure.in: code to detect ability to use atomic integer @@ -395,22 +405,22 @@ * dbus/dbus-internals.c (_dbus_verbose_real): call getpid every time, tired of it being wrong in threads and forked processes - * glib/test-profile.c: a little program to bounce messages back + * glib/test-profile.c: a little program to bounce messages back and forth between threads and eat CPU * dbus/dbus-connection.c: add debug spew macros for debugging - thread locks; include config.h at top; fix deadlock in + thread locks; include config.h at top; fix deadlock in dbus_connection_flush() 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 + 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 + (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 @@ -451,14 +461,14 @@ 2003-05-04 Havoc Pennington - * dbus-glib-1.pc.in (Requires): fix dependencies, from + * dbus-glib-1.pc.in (Requires): fix dependencies, from Anders Gustafsson 2003-05-04 Havoc Pennington * tools/dbus-launch.c: implement - * bus/main.c (main), bus/bus.c (bus_context_new): + * bus/main.c (main), bus/bus.c (bus_context_new): implement --print-pid and --fork 2003-05-03 Havoc Pennington @@ -475,7 +485,7 @@ * tools/Makefile.am, tools/dbus-launch.c, tools/dbus-launch.1: add dbus-launch utility to launch the bus from a shell script. Didn't actually implement dbus-launch yet, it's just a placeholder still. - + 2003-05-03 Havoc Pennington * bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the @@ -485,7 +495,7 @@ 2003-05-03 Havoc Pennington - * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1: + * tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1: add some man pages 2003-05-03 Colin Walters @@ -536,7 +546,7 @@ * dbus/dbus.h: add "you have to define DBUS_API_SUBJECT_TO_CHANGE to use this library" to be sure people have the right expectations. - + 2003-04-28 Havoc Pennington * configure.in: add --enable-docs which by default is auto yes if @@ -552,14 +562,14 @@ * NEWS: update * bus/system.conf.in: add system.d - + * dbus/dbus-userdb.c (_dbus_user_database_lookup): fix bug when username was provided but not uid * bus/config-parser.c (struct BusConfigParser): keep track of - whether the parser is toplevel or was included; change some + whether the parser is toplevel or was included; change some of the error handling if it's included. - + 2003-04-27 Havoc Pennington Unbreak my code... @@ -567,7 +577,7 @@ * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status): report correct status if we finish processing authentication inside this function. - + * bus/activation.c (try_send_activation_failure): use bus_transaction_send_error_reply @@ -576,7 +586,7 @@ * bus/bus.c (bus_context_check_security_policy): implement restriction here that inactive connections can only send the - hello message. Also, allow bus driver to send anything to + hello message. Also, allow bus driver to send anything to any recipient. * bus/connection.c (bus_connection_complete): create the @@ -595,7 +605,7 @@ 2003-04-25 Havoc Pennington test suite is slightly hosed at the moment, will fix soon - + * bus/connection.c (bus_connections_expire_incomplete): fix to properly disable the timeout when required (bus_connection_set_name): check whether we can remove incomplete @@ -605,7 +615,7 @@ probably still broken. * bus/services.c (bus_registry_acquire_service): implement max - number of services owned, and honor allow/deny rules on which + number of services owned, and honor allow/deny rules on which services a connection can own. * bus/connection.c (bus_connection_get_policy): report errors here @@ -627,19 +637,19 @@ * test/data/valid-config-files/basic.conf: add tags to this test - + * bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement tag in configuration file. - + 2003-04-24 Havoc Pennington * bus/dispatch.c: somehow missed some name_is - * dbus/dbus-timeout.c (_dbus_timeout_set_enabled) + * dbus/dbus-timeout.c (_dbus_timeout_set_enabled) (_dbus_timeout_set_interval): new * bus/connection.c (bus_connections_setup_connection): record time - when each connection is first set up, and expire them after the + when each connection is first set up, and expire them after the auth timeout passes. 2003-04-24 Havoc Pennington @@ -687,7 +697,7 @@ 2003-04-22 Havoc Pennington * dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer - support, and do some code cleanups to share more code and + support, and do some code cleanups to share more code and speed up array marshal/demarshal. * dbus-1.0.pc.in (Cflags): put libdir include file in cflags @@ -703,7 +713,7 @@ to use proper type for rply field * test/data/invalid-messages: add tests for below validation - + * dbus/dbus-message.c (decode_header_data): validate field types, and validate that named fields are valid names (decode_name_field): consider messages in the @@ -713,7 +723,7 @@ 2003-04-19 Havoc Pennington - * bus/driver.c (bus_driver_handle_hello): check limits and + * bus/driver.c (bus_driver_handle_hello): check limits and return an error if they are exceeded. * bus/connection.c: maintain separate lists of active and inactive @@ -732,7 +742,7 @@ * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some memleaks - * dbus/dbus-keyring.c (add_new_key): fix a memleak, and + * dbus/dbus-keyring.c (add_new_key): fix a memleak, and on realloc be sure to update the pointer in the keyring * dbus/dbus-string.c (_dbus_string_zero): compensate for align @@ -756,7 +766,7 @@ server. 2003-04-18 Havoc Pennington - + * dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose debug spew @@ -768,7 +778,7 @@ * bus/Makefile.am (TESTS_ENVIRONMENT): put DBUS_TEST_HOMEDIR in the environment - + * bus/dispatch.c (bus_dispatch_sha1_test): actually load sha1 config file so we test the right thing @@ -811,14 +821,14 @@ * dbus/dbus-message.h: change message serials to unsigned * dbus/dbus-connection.c: adapt to message serials being unsigned - + 2003-04-15 Havoc Pennington - * bus/bus.c: create and keep around a shared DBusUserDatabase + * bus/bus.c: create and keep around a shared DBusUserDatabase object. * bus/connection.c (bus_connection_get_groups): don't cache - groups for user in the connection object, since user database + groups for user in the connection object, since user database object now does that. 2003-04-16 Havoc Pennington @@ -828,12 +838,12 @@ (_dbus_message_loader_putback_message_link): put back a popped link * dbus/dbus-connection.c - (dbus_connection_set_max_live_messages_size): rename + (dbus_connection_set_max_live_messages_size): rename max_received_size - (dbus_connection_get_outgoing_size): get size of outgoing + (dbus_connection_get_outgoing_size): get size of outgoing queue (_dbus_connection_set_connection_counter): remove this cruft - + 2003-04-14 Havoc Pennington * dbus/dbus-userdb.c: user database abstraction, mostly to get @@ -845,17 +855,17 @@ test always uses EXTERNAL when available. * configure.in, - test/data/valid-config-files/debug-allow-all-sha1.conf.in: + test/data/valid-config-files/debug-allow-all-sha1.conf.in: add conf file that requires use of sha1 auth 2003-04-13 Havoc Pennington - + * tools/dbus-send.c, tools/dbus-monitor.c: two utility programs from Philip Blundell to send messages and monitor them. - + 2003-04-13 Havoc Pennington - * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting + * dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting callbacks * test/data/valid-config-files/debug-allow-all.conf.in: allow all @@ -863,11 +873,11 @@ * dbus/dbus-transport.c (_dbus_transport_get_dispatch_status): fix to only recover unused bytes if we're already authenticated - (_dbus_transport_get_is_authenticated): fix to still mark us + (_dbus_transport_get_is_authenticated): fix to still mark us authenticated if there are unused bytes. * bus/dispatch.c: implement security policy checking - + * bus/connection.c (bus_transaction_send_from_driver): new * bus/bus.c (bus_context_check_security_policy): new @@ -885,7 +895,7 @@ 2003-04-13 Havoc Pennington * bus/config-parser.c: Load up the BusPolicy and BusPolicyRules - + * dbus/dbus-sysdeps.c (_dbus_get_user_id): new function * bus/policy.c (bus_policy_append_mandatory_rule) @@ -900,7 +910,7 @@ the pid/gid/uid, just for paranoia. * test/break-loader.c (randomly_do_n_things): find a byte - containing a type code, and randomly change it to a different + containing a type code, and randomly change it to a different type code. 2003-04-12 Havoc Pennington @@ -908,7 +918,7 @@ * bus/policy.h: change BusPolicy to be the thing from the config file, and rename old BusPolicy to BusClientPolicy - * bus/bus.c, bus/connection.c, bus/config-parser.c: change to + * bus/bus.c, bus/connection.c, bus/config-parser.c: change to match change in how policy works * dbus/dbus-internals.h: mark assert_not_reached as @@ -916,7 +926,7 @@ 2003-04-11 Havoc Pennington - * doc/dbus-specification.sgml: fix a spot with the wrong name for + * doc/dbus-specification.sgml: fix a spot with the wrong name for the broadcast service. Use boolean return for ServiceExists. 2003-04-11 Havoc Pennington @@ -991,7 +1001,7 @@ we don't successfully create the service after all. Don't remove pending activation if the function fails. - * dbus/dbus-list.c (_dbus_list_insert_before_link) + * dbus/dbus-list.c (_dbus_list_insert_before_link) (_dbus_list_insert_after_link): new code to facilitate services.c fixes @@ -1000,30 +1010,30 @@ into a hash table. * bus/connection.c (bus_transaction_add_cancel_hook): new function - allowing us to put custom hooks in a transaction to be used for + allowing us to put custom hooks in a transaction to be used for cancelling said transaction * doc/dbus-specification.sgml: add some discussion of secondary service owners, and disallow zero-length service names * bus/services.c (bus_registry_acquire_service): new function, - splits out part of bus_driver_handle_acquire_service() and fixes - a bug where we didn't remove the service doing the acquiring + splits out part of bus_driver_handle_acquire_service() and fixes + a bug where we didn't remove the service doing the acquiring from the secondary queue if we failed to remove the current owner from the front of the queue. - + 2003-04-10 Alexander Larsson * doc/dbus-specification.sgml: s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/ - + 2003-04-10 Alexander Larsson * bus/.cvsignore: * glib/.cvsignore: * test/.cvsignore: Added files to cvsignore - + * dbus/dbus-message.h: * dbus/dbus-message.c: (dbus_message_iter_get_named): Make get_named() take two out argument and return a boolean. @@ -1041,38 +1051,38 @@ * dbus/dbus-marshal.[ch]: Add array_type_pos argument to _dbus_marshal_validate_arg. Let you pass a NULL end_pos to _dbus_marshal_validate_type. - + * dbus/dbus-message.[ch]: Multi-dimensional arrays have full type specification in the outermost array. Iter code re-arranged to handle this. Added some more iter tests. - + * doc/dbus-specification.sgml: Add me to authors. Remove old FIXME. Update new array encoding description. Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description. - + * test/data/invalid-messages/array-with-mixed-types.message: * test/data/valid-messages/array-of-array-of-uint32.message: Change to the new array format. - + * test/data/invalid-messages/too-short-dict.message: Fix bug in test. - + * test/data/valid-messages/recursive-types.message: Fix up and extend test. 2003-04-10 Havoc Pennington * bus/dispatch.c: lots of fixes - + * dbus/dbus-mainloop.c (_dbus_loop_dispatch): export (_dbus_loop_iterate): remove old "quit if no callbacks" code, that was crack, broke the test service. * dbus/dbus-transport.c (_dbus_transport_open): fix error - handling to avoid piling up errors if we get a failure on the + handling to avoid piling up errors if we get a failure on the first address. * dbus/dbus-internals.c (_dbus_real_assert_not_reached): include @@ -1113,7 +1123,7 @@ allowing us to fix up main loop usage (_dbus_connection_last_unref): free all the various function user data - (dbus_connection_dispatch): call the DispatchStatusFunction + (dbus_connection_dispatch): call the DispatchStatusFunction whenever this function returns (dbus_connection_handle_watch): call DispatchStatusFunction (dbus_connection_send_with_reply_and_block): call DispatchStatusFunction @@ -1122,7 +1132,7 @@ 2003-04-09 Havoc Pennington - * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and + * dbus/dbus-bus.c (dbus_bus_register): fix up error handling and a memory leak * bus/dispatch.c (check_service_activated): fix bug in test @@ -1134,12 +1144,12 @@ e.g. in the activation case. 2003-04-08 Colin Walters - + * bus/bus.c (struct BusContext) [pidfile]: New member, to store the pid file. (bus_context_new): Set it. (bus_context_unref): Use it to delete the pid file. - + 2003-04-08 Havoc Pennington * test/data/invalid-messages/array-with-mixed-types.message: @@ -1155,7 +1165,7 @@ * test/data/valid-messages/array-of-array-of-uint32.message: happened to write this so added it to suite - + 2003-04-08 Havoc Pennington * bus/driver.c (bus_driver_handle_acquire_service): init @@ -1184,7 +1194,7 @@ * glib/test-thread-server.c: (handle_test_message): * test/test-service.c: (handle_echo): Update to new api - + * dbus/Makefile.am: * dbus/dbus-dict.c: * dbus/dbus-dict.h: @@ -1193,16 +1203,16 @@ * dbus/dbus-internals.c: (_dbus_type_to_string): Update for new types. - + * dbus/dbus-marshal.[ch]: Implement recursive types and the new marshalling format. Remove hardcoded dict marshalling. Marshal named types. - + * dbus/dbus-message-builder.c: Add BYTE_ARRAY. Remove references to old types - + * dbus/dbus-message.[ch]: New non-refcounted iter API that supports recursive iters. Use iters for appending, including support for recursive @@ -1210,24 +1220,24 @@ Add byte and named type support. Update everything to new marshalling formats. Add tests for new API. - + * dbus/dbus-protocol.h: Remove old array types. Add types: BYTE, ARRAY, DICT, NAMED - + * dbus/dbus-string.c: * dbus/dbus-sysdeps.c: Make parse_double locale safe. - + * dbus/dbus-test-main.c: Call setlocale. - + * dbus/dbus-test.c: Kill dict test - + * doc/dbus-specification.sgml: Update spec - + * test/data/incomplete-messages/missing-body.message: * test/data/invalid-messages/bad-boolean.message: * test/data/invalid-messages/bad-boolean-array.message: @@ -1242,10 +1252,10 @@ * test/data/valid-messages/recursive-types.message: Add missing NAME fields Fix up dicts & arrays - + * test/data/invalid-messages/dict-with-nil-value.message: Removed, this is not invalid anymore. - + * test/data/valid-messages/recursive-types.message: Add new test for deeply recursive types. @@ -1256,11 +1266,11 @@ 2003-04-07 Havoc Pennington - * doc/dbus-specification.sgml: require that base service names - start with ':' and that the base service is created/deleted + * doc/dbus-specification.sgml: require that base service names + start with ':' and that the base service is created/deleted as first and last things a connection does on the bus - * bus/dispatch.c (check_existent_service_activation): lots more + * bus/dispatch.c (check_existent_service_activation): lots more work on the activation test; it doesn't fully pass yet... * test/test-service.c (main): fix so we don't memleak the @@ -1269,7 +1279,7 @@ 2003-04-06 Havoc Pennington - * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h, + * qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h, from Colin Walters * configure.in: fixes to Qt detection from Colin Walters @@ -1278,7 +1288,7 @@ exist, from Colin Walters * dbus/dbus-bus.c: change how we set well-known connections to - NULL, so that it works if a single connection is stored in + NULL, so that it works if a single connection is stored in two well-known array slots. * test/Makefile.am: remove a lot of stuff that isn't immediately @@ -1294,17 +1304,17 @@ elsewhere, and util functions that are used in tests/daemon but don't go in the lib. - * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc] + * dbus/dbus-mainloop.h, dbus/dbus-mainloop.c: move bus/loop.[hc] here so it can be used in test binaries also 2003-04-06 Havoc Pennington * dbus/dbus-sysdeps.c (_dbus_become_daemon): write the pidfile here in the parent process, so we can return an error if it - fails. Also, move some of the code into the child so the parent + fails. Also, move some of the code into the child so the parent is less hosed if we fail midway through. - * bus/bus.c (bus_context_new): move pidfile detection further up + * bus/bus.c (bus_context_new): move pidfile detection further up in the function, before we start overwriting sockets and such. * bus/messagebus.in: adjust this a bit, not sure if it will work. @@ -1326,13 +1336,13 @@ (bus_config_parser_end_element, bus_config_parser_content): Handle it. (bus_config_parser_unref): Free it. (bus_config_parser_get_pidfile): New function. - + * bus/config-parser.h (_dbus_write_pid_file): Prototype. * dbus/dbus-errors.h (DBUS_ERROR_PIDFILE_EXISTS): New error. * dbus/dbus-sysdeps.c (_dbus_write_pid_file): New function. - + * dbus/dbus-sysdeps.h: Prototype it. 2003-04-06 Havoc Pennington @@ -1340,7 +1350,7 @@ * bus/bus.c (bus_context_new): print the address in here, rather than in main(), because we need to do it before forking the daemon - * bus/dispatch.c (send_service_nonexistent_error): set the sender + * bus/dispatch.c (send_service_nonexistent_error): set the sender on the service nonexistent error * bus/driver.c (bus_driver_handle_acquire_service): set the @@ -1351,8 +1361,8 @@ 2003-04-06 Havoc Pennington - * dbus/dbus-threads.c: Redo how the fake debug mutexes are done - so it detects deadlocks and also we actually init threads when + * dbus/dbus-threads.c: Redo how the fake debug mutexes are done + so it detects deadlocks and also we actually init threads when debugging. 2003-04-06 Havoc Pennington @@ -1370,7 +1380,7 @@ 2003-04-06 Havoc Pennington * bus/bus.c (bus_context_new): fix wrong handling of - server_data_slot_unref() in the error case. + server_data_slot_unref() in the error case. * dbus/dbus-internals.h (_dbus_assert): change so it passes "(condition) != 0" to _dbus_real_assert so that @@ -1384,10 +1394,10 @@ * dbus/dbus-transport.c (_dbus_transport_open): special error for "tmpdir" option to unix: address on client side - * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option + * dbus/dbus-server.c (dbus_server_listen): handle "tmpdir" option to unix: address - - * configure.in (TEST_SOCKET_DIR): locate a temporary directory + + * configure.in (TEST_SOCKET_DIR): locate a temporary directory we can use to create sockets in the test suite. * bus/main.c (signal_handler): on SIGTERM, exit the daemon @@ -1408,22 +1418,22 @@ 2003-04-05 Havoc Pennington - * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't - crash on startup. Need to get "try starting the daemon" + * bus/bus.c (setup_server): fix this so dbus-daemon-1 doesn't + crash on startup. Need to get "try starting the daemon" in the test suite I guess. ;-) * dbus/dbus-server.h, dbus/dbus-server.c: remove the stuff that - tracked the number of open connections; it's better done in + tracked the number of open connections; it's better done in application-specific code as you want it to span all servers etc. 2003-04-05 Havoc Pennington - * bus/Makefile.am (install-data-hook): add missing DESTDIR, + * bus/Makefile.am (install-data-hook): add missing DESTDIR, patch from Colin Walters 2003-04-05 Havoc Pennington - * doc/config-file.txt (Elements): fix docs of to reflect + * doc/config-file.txt (Elements): fix docs of to reflect reality; in fact multiple mechanisms are allowed. * dbus/dbus-internals.c (_dbus_real_assert) @@ -1440,21 +1450,21 @@ * NEWS: update * configure.in: 0.7 - + 2003-04-05 Havoc Pennington * dbus/dbus-string.c: docs warning - + * dbus/dbus-spawn.c: missing docs * dbus/dbus-memory.c (struct ShutdownClosure): missing docs 2003-04-05 Havoc Pennington - * bus/loop.c (bus_loop_iterate): fix the timeout code, using + * bus/loop.c (bus_loop_iterate): fix the timeout code, using magic from GLib - * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid + * dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid to -1 once we've reaped the babysitter (_dbus_babysitter_handle_watch): do as much work as we can, not just one go of it @@ -1475,7 +1485,7 @@ * Makefile.am (coverage-report.txt): add target "coverage-report.txt" - * test/decode-gcov.c: hack up a little program to suck data + * test/decode-gcov.c: hack up a little program to suck data out of gcov files. Yes this is sort of silly. * configure.in: define something in config.h and do an @@ -1488,15 +1498,15 @@ the spawned process and reap it when required. * test/test-segfault.c, test/test-exit.c, - test/test-sleep-forever.c: binaries that do various lame things, + test/test-sleep-forever.c: binaries that do various lame things, used in the test suite. * dbus/dbus-sysdeps.c: kill _dbus_errno_to_string() - + 2003-04-03 Havoc Pennington - * dbus/dbus-spawn.c: Move dbus-spawn into a separate file - in preparation for modifying it, dbus-sysdeps is getting + * dbus/dbus-spawn.c: Move dbus-spawn into a separate file + in preparation for modifying it, dbus-sysdeps is getting a bit unmanageable. 2003-04-03 Havoc Pennington @@ -1518,41 +1528,41 @@ 2003-04-03 Havoc Pennington - * bus/config-parser.c (bus_config_parser_unref): free + * bus/config-parser.c (bus_config_parser_unref): free list of mechanisms, bug discovered by test suite enhancements (putting system.conf and session.conf into suite) * test/Makefile.am, test/test-service.c: add placeholder for a - test service that we'll activate as part of test suite. Doesn't + test service that we'll activate as part of test suite. Doesn't do anything yet. - * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by - setting NULL value, and use system malloc not dbus_malloc() + * dbus/dbus-sysdeps.c (_dbus_setenv): support unsetenv by + setting NULL value, and use system malloc not dbus_malloc() when we have unavoidable memleakage. * dbus/dbus-bus.c (dbus_bus_get): fix bug where bus type of 0 didn't work, and support DBUS_BUS_ACTIVATION. - + * bus/activation.c (child_setup): pass our well-known bus type to the child * bus/config-parser.c: support to specify well-known type - * doc/dbus-specification.sgml: document the env variables to + * doc/dbus-specification.sgml: document the env variables to locate well-known buses and find service activator 2003-04-02 Havoc Pennington * test/Makefile.am (all-local): add a rule to copy tests to builddir, so we can have generated tests. Use this to remove the - silly hack for testing system.conf and session.conf. Will use this + silly hack for testing system.conf and session.conf. Will use this shortly to generate .service files pointing to test binaries. 2003-04-02 Havoc Pennington * dbus/dbus-string.c (set_length): fix a bug - we allocated max of current alloc and needed new length, not max of the doubled - allocation and needed new length. Also, when building tests, + allocation and needed new length. Also, when building tests, don't do the double-allocation stuff, just realloc every time. 2003-04-02 Havoc Pennington @@ -1599,13 +1609,13 @@ socket 0777, and unlink any existing socket. * bus/bus.c (bus_context_new): change our UID/GID and fork if - the configuration file so specifies; set up auth mechanism + the configuration file so specifies; set up auth mechanism restrictions * bus/config-parser.c (bus_config_parser_content): add support - for option and fill in code for + for option and fill in code for - * bus/system.conf.in: add to default configuration, + * bus/system.conf.in: add to default configuration, and limit auth mechanisms to EXTERNAL * doc/config-file.txt (Elements): add @@ -1615,7 +1625,7 @@ 2003-03-31 Havoc Pennington - * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket) + * dbus/dbus-sysdeps.c (_dbus_connect_unix_socket) (_dbus_listen_unix_socket): fix off-by-one error in null termination spotted by Nalin @@ -1637,10 +1647,10 @@ 2003-03-31 Havoc Pennington Fix some annoying DBusString API and fix all affected code. - + * dbus/dbus-string.c (_dbus_string_init): get rid of annoying max_length argument - (_dbus_string_get_data): change to return string instead of using + (_dbus_string_get_data): change to return string instead of using an out param (_dbus_string_get_const_data): ditto (_dbus_string_get_data_len): ditto @@ -1653,7 +1663,7 @@ 2003-03-31 Havoc Pennington * dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to - define DBUS_SYSTEM_BUS_PATH as we want to compile in the same + define DBUS_SYSTEM_BUS_PATH as we want to compile in the same final location that lands in the config file * bus/config-loader-expat.c (bus_config_load): fix type of @@ -1673,7 +1683,7 @@ * bus/main.c (main): take the configuration file as an argument. - * test/data/valid-config-files/debug-allow-all.conf: new file to + * test/data/valid-config-files/debug-allow-all.conf: new file to use with dispatch.c tests for example * bus/test-main.c (main): require test data dir @@ -1684,7 +1694,7 @@ * doc/config-file.txt (Elements): add * bus/system.conf, bus/session.conf: new files - + * dbus/dbus-bus.c (dbus_bus_get): look for system bus on well-known socket if none set @@ -1693,8 +1703,8 @@ 2003-03-30 Havoc Pennington * bus/config-parser.c: hacking - - * dbus/dbus-memory.c: don't use DBusList for the list of stuff + + * dbus/dbus-memory.c: don't use DBusList for the list of stuff to shut down, since it could cause weirdness with the DBusList lock @@ -1720,13 +1730,13 @@ * dbus/dbus-bus.c: (bus_data_free), (dbus_bus_get): * dbus/dbus-bus.h: Add dbus_bus_get. - + * dbus/dbus-memory.c: Fix a doc comment. - + 2003-03-28 Havoc Pennington - * bus/test.c (bus_test_flush_bus): remove the sleep from here, + * bus/test.c (bus_test_flush_bus): remove the sleep from here, I think it may have just been superstition. Not sure. * dbus/dbus-string.c (_dbus_string_base64_decode): catch some OOM @@ -1752,10 +1762,10 @@ * doc/TODO: Add note about automatic service activation. - + * doc/dbus-specification.sgml: Rename the specification and clarify a few things. - + 2003-03-26 Anders Carlsson * Doxyfile.in: @@ -1765,7 +1775,7 @@ * dbus/dbus-server-debug-pipe.c: * dbus/dbus-transport-unix.c: Fix documentation warnings. - + 2003-03-26 Havoc Pennington * bus/test-main.c, dbus/dbus-test.c (main): check memleaks @@ -1784,11 +1794,11 @@ 2003-03-25 Havoc Pennington * throughout - add more _DBUS_ASSERT_ERROR_IS_CLEAR - + * configure.in: add --with-xml option to specify XML library, right now only libxml is supported. - * bus/config-loader-libxml.c, config-parser.c: sync some minor + * bus/config-loader-libxml.c, config-parser.c: sync some minor nonworking code between home and work, still just stubs 2003-03-24 Havoc Pennington @@ -1796,8 +1806,8 @@ * dbus/dbus-sysdeps.c (_dbus_set_fd_nonblocking): move to this file - * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow - NULL argument for "message" if the error is a well-known one, + * dbus/dbus-errors.c (dbus_set_error, dbus_set_error_const): allow + NULL argument for "message" if the error is a well-known one, fill in a generic message in this case. * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in @@ -1809,20 +1819,20 @@ 2003-03-24 Havoc Pennington - * bus/connection.c (bus_connections_setup_connection): set up - the "can this user connect" function, but it always returns + * bus/connection.c (bus_connections_setup_connection): set up + the "can this user connect" function, but it always returns TRUE until we have a config file parser so we can have a config file that allows connections. 2003-03-23 Havoc Pennington - * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with - DBUS_BUILD_TESTS, actually alloc/free a block of memory for - the mutex, so we can check for proper memory management + * dbus/dbus-threads.c (dbus_mutex_new, dbus_condvar_new): with + DBUS_BUILD_TESTS, actually alloc/free a block of memory for + the mutex, so we can check for proper memory management and OOM handling. * dbus/dbus-dataslot.c: remove the mutex from - DBusDataSlotAllocator and lock it manually when using it, + DBusDataSlotAllocator and lock it manually when using it, to simplify fitting it into the global slots framework. * dbus/dbus-threads.c (init_static_locks): rework how we're @@ -1832,17 +1842,17 @@ * bus/test-main.c (main): check for memleaks - * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make + * dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): make test suite check for memleaks - * dbus/dbus-memory.c: add support in test mode for tracking + * dbus/dbus-memory.c: add support in test mode for tracking number of outstanding blocks 2003-03-23 Havoc Pennington * bus/policy.c, bus/bus.c, bus/connection.c: implement allow/deny policies code - + * dbus/dbus-hash.h: add ULONG hash keys * dbus/dbus-sysdeps.c (_dbus_get_groups): new @@ -1869,7 +1879,7 @@ 2003-03-19 Havoc Pennington - * bus/policy.c: start sketching code for policy restrictions on + * bus/policy.c: start sketching code for policy restrictions on what connections can do. 2003-03-18 Havoc Pennington @@ -1884,14 +1894,14 @@ * configure.in: 0.6 * NEWS: Update. - + 2003-03-17 Havoc Pennington - * dbus/dbus-internals.h: add gcc attributes so that - our printf-style functions warn on bad arguments to + * dbus/dbus-internals.h: add gcc attributes so that + our printf-style functions warn on bad arguments to format - - * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf + + * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix printf format bug * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix @@ -1899,10 +1909,10 @@ 2003-03-17 Havoc Pennington - * bus/test-main.c (main): make it print something as it runs + * bus/test-main.c (main): make it print something as it runs so make check doesn't look stuck - * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove + * doc/negotiation.txt, doc/dbus-sasl-profile.txt: remove from CVS, now obsolete 2003-03-17 Anders Carlsson @@ -1910,15 +1920,15 @@ * bus/dispatch.c: (bus_dispatch): Refetch the service name since it may have been reallocated when dbus_message_set_sender was called. - + * dbus/dbus-sysdeps.c: (_dbus_accept): Add address and address length variables and use them to stop valgrind from complaining. - + 2003-03-17 Havoc Pennington All tests pass, no memleaks, no valgrind complaints. - + * bus/test.c: refcount handler_slot * bus/connection.c (bus_connections_new): refcount @@ -1965,22 +1975,22 @@ * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new): add some missing dbus_set_result - * bus/dispatch.c (bus_dispatch_add_connection): handle failure to + * bus/dispatch.c (bus_dispatch_add_connection): handle failure to alloc the DBusMessageHandler * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref - the transport here, since we call this from the finalizer; it + the transport here, since we call this from the finalizer; it resulted in a double-finalize. - * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug - where we tried to use transport->connection that was NULL, + * dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug + where we tried to use transport->connection that was NULL, happened when transport was disconnected early on due to OOM * bus/*.c: adapt to handle OOM for watches/timeouts - * dbus/dbus-transport-unix.c: port to handle OOM during + * dbus/dbus-transport-unix.c: port to handle OOM during watch handling - + * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a reference to unused bytes instead of a copy @@ -1997,7 +2007,7 @@ * doc/dbus-specification.sgml: Document reply message for ActivateService. - + 2003-03-16 Anders Carlsson * bus/activation.c: (bus_pending_activation_entry_free), @@ -2017,7 +2027,7 @@ * dbus/dbus-protocol.h: Make activation work better. Now pending activations will be queued and the daemon won't try to activate services that are already registered. - + 2003-03-16 Havoc Pennington * dbus/dbus-bus.c (ensure_bus_data): handle failure to set @@ -2033,8 +2043,8 @@ * bus/*: adapt to DBusConnection API changes - * glib/dbus-gmain.c: adapt to DBusConnection API changes, - requires renaming stuff to avoid dbus_connection_dispatch name + * glib/dbus-gmain.c: adapt to DBusConnection API changes, + requires renaming stuff to avoid dbus_connection_dispatch name conflict. * dbus/dbus-transport.c (_dbus_transport_queue_messages): new @@ -2060,7 +2070,7 @@ * dbus/dbus-connection.c: (dbus_connection_send_with_reply_and_block): - Decrease connection->n_incoming when removing an entry + Decrease connection->n_incoming when removing an entry from the list. * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array), @@ -2069,7 +2079,7 @@ (dbus_dict_get_boolean_array), (dbus_dict_get_double_array), (dbus_dict_get_byte_array): Handle NULL arrays and strings. Also add support for byte arrays. - + * dbus/dbus-marshal.c: (_dbus_marshal_byte_array), (_dbus_marshal_dict), (_dbus_demarshal_byte_array), (_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array), @@ -2078,7 +2088,7 @@ (_dbus_marshal_validate_arg), (_dbus_marshal_test): * dbus/dbus-marshal.h: Add support for marshalling and demarshalling empty arrays and strings. - + * dbus/dbus-message.c: (dbus_message_append_args_valist), (dbus_message_append_string_array), (dbus_message_iter_get_boolean), @@ -2090,14 +2100,14 @@ (dbus_message_iter_get_string_array), (dbus_message_iter_get_dict), (check_message_handling): Add support for getting empty arrays and dicts. - + * dbus/dbus-string.c: (_dbus_string_validate_utf8): Don't do any validation at all for now, that's better than just checking for ASCII. - + * test/data/valid-messages/emptiness.message: New test message with lots of empty arrays. - + 2003-03-16 Havoc Pennington * dbus/dbus-connection.c @@ -2105,7 +2115,7 @@ can't fail due to OOM * dbus/dbus-message.c (_dbus_message_loader_pop_message_link): - new function pops a message together with a list link + new function pops a message together with a list link containing it. * dbus/dbus-transport-unix.c (queue_messages): use new link-based @@ -2120,20 +2130,20 @@ in the shared lib, and only daemon mallocs were tested. In any case, the test case now tests all 500+ mallocs, and doesn't pass yet, though there are lots of fixes in this patch. - + * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix - this so that it doesn't need to allocate memory, since it - has no way of indicating failure due to OOM (and would be + this so that it doesn't need to allocate memory, since it + has no way of indicating failure due to OOM (and would be annoying if it did). * dbus/dbus-list.c (_dbus_list_pop_first_link): new function * bus/Makefile.am: rearrange to create two self-contained - libraries, to avoid having libraries with overlapping symbols. - that was resulting in weirdness, e.g. I'm pretty sure there + libraries, to avoid having libraries with overlapping symbols. + that was resulting in weirdness, e.g. I'm pretty sure there were two copies of global static variables. - * dbus/dbus-internals.c: move the malloc debug stuff to + * dbus/dbus-internals.c: move the malloc debug stuff to dbus-memory.c * dbus/dbus-list.c (free_link): free list mempool if it becomes @@ -2145,15 +2155,15 @@ on failure. * bus/dispatch.c (bus_dispatch_add_connection): free - message_handler_slot when no longer using it, so + message_handler_slot when no longer using it, so memory leak checkers are happy for the test suite. * dbus/dbus-server-debug-pipe.c (debug_finalize): free server name - * bus/bus.c (new_connection_callback): disconnect in here if + * bus/bus.c (new_connection_callback): disconnect in here if bus_connections_setup_connection fails. - * bus/connection.c (bus_connections_unref): fix to free the + * bus/connection.c (bus_connections_unref): fix to free the connections (bus_connections_setup_connection): if this fails, don't disconnect the connection, just be sure there are no side @@ -2163,11 +2173,11 @@ * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were leaking - (_dbus_auth_new): fix the order in which we free strings + (_dbus_auth_new): fix the order in which we free strings on OOM failure - * bus/connection.c (bus_connection_disconnected): fix to - not send ServiceDeleted multiple times in case of memory + * bus/connection.c (bus_connection_disconnected): fix to + not send ServiceDeleted multiple times in case of memory allocation failure * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to @@ -2177,18 +2187,18 @@ function for it. (dbus_bus_register_client): rename dbus_bus_register() - * bus/dispatch.c (check_hello_message): verify that other - connections on the bus also got the correct results, not + * bus/dispatch.c (check_hello_message): verify that other + connections on the bus also got the correct results, not just the one sending hello 2003-03-15 Havoc Pennington Make it pass the Hello handling test including all OOM codepaths. Now to do other messages... - + * bus/services.c (bus_service_remove_owner): fix crash when removing owner from an empty list of owners - (bus_registry_ensure): don't leave service in the list of + (bus_registry_ensure): don't leave service in the list of a connection's owned services if we fail to put the service in the hash table. @@ -2203,7 +2213,7 @@ needed. (unix_connection_set): this can now fail on OOM - * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept + * dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept of enabling/disabling a watch or timeout. * bus/loop.c (bus_loop_iterate): don't touch disabled @@ -2222,69 +2232,69 @@ watch). To fix this, I think we need to add new stuff to set_watch_functions, namely a SetEnabled function so we can alloc the watch earlier, then enable it later. - + * dbus/Makefile.am (libdbus_convenience_la_SOURCES): move dbus-memory.c to the convenience lib - * bus/test.c: rename some static functions to keep them clearly + * bus/test.c: rename some static functions to keep them clearly distinct from stuff in connection.c. Handle client disconnection. 2003-03-14 Havoc Pennington - * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe - transport, tests more of the real codepath. Set up clients + * bus/dispatch.c (bus_dispatch_test): do test using debug-pipe + transport, tests more of the real codepath. Set up clients with bus_setup_debug_client. - * bus/test.c (bus_setup_debug_client): function to set up debug + * bus/test.c (bus_setup_debug_client): function to set up debug "clients" on the main loop - * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe + * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe support - * dbus/dbus-server.c (dbus_server_listen): add debug-pipe + * dbus/dbus-server.c (dbus_server_listen): add debug-pipe server type * dbus/dbus-server-debug.c: support a debug server based on pipes * dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function (_dbus_close): new function - + * configure.in: check for socketpair 2003-03-14 Havoc Pennington - * dbus/dbus-memory.c: add a "detect buffer overwrites on free" + * dbus/dbus-memory.c: add a "detect buffer overwrites on free" cheesy hack - * dbus/dbus-transport-debug.c: rework this a good bit to be + * dbus/dbus-transport-debug.c: rework this a good bit to be less complicated. hopefully still works. * dbus/dbus-server-debug.c (handle_new_client): remove timeout manually - * glib/dbus-gmain.c (timeout_handler): don't remove timeout + * glib/dbus-gmain.c (timeout_handler): don't remove timeout after running it - * dbus/dbus-message.c (dbus_message_copy): rename from - dbus_message_new_from_message, fix it up to copy + * dbus/dbus-message.c (dbus_message_copy): rename from + dbus_message_new_from_message, fix it up to copy all the message fields, add test case - * bus/dispatch.c (bus_dispatch_test): add some more test code, + * bus/dispatch.c (bus_dispatch_test): add some more test code, not quite passing yet 2003-03-14 Havoc Pennington * bus/loop.c (bus_loop_iterate): add this so we can "run loop - until no work remains" in test code. (the large diff here + until no work remains" in test code. (the large diff here is just code movement, no actual changes) * dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to 1, no point waiting around for test code. - (_dbus_server_debug_accept_transport): unref the timeout + (_dbus_server_debug_accept_transport): unref the timeout after adding it (right?) * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto - + 2003-03-13 Havoc Pennington * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle @@ -2312,33 +2322,33 @@ * bus/dispatch.c (bus_dispatch_test): started adding this but didn't finish - + 2003-03-14 Anders Carlsson * bus/dispatch.c (send_service_nonexistent_error): Fix typo. 2003-03-13 Havoc Pennington - * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c: + * bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c: set up a test framework as for the library 2003-03-12 Havoc Pennington - Throughout: purge global variables, introduce BusActivation, + Throughout: purge global variables, introduce BusActivation, BusConnections, BusRegistry, etc. objects instead. - - * bus/bus.h, bus/bus.c: introduce BusContext as a global + + * bus/bus.h, bus/bus.c: introduce BusContext as a global message bus object - * test/Makefile.am (TEST_BINARIES): disable bus-test for now, + * test/Makefile.am (TEST_BINARIES): disable bus-test for now, going to redo this a bit differently I think - + 2003-03-12 Havoc Pennington - Mega-patch that gets the message bus daemon initially handling - out-of-memory. Work still needed. Also lots of random + Mega-patch that gets the message bus daemon initially handling + out-of-memory. Work still needed. Also lots of random moving stuff to DBusError instead of ResultCode. - + * dbus/dbus-list.c (_dbus_list_length_is_one): new function * dbus/dbus-connection.c @@ -2354,7 +2364,7 @@ rename bus_connection_disconnected as it's a notification only * bus/driver.c (bus_driver_handle_acquire_service): don't free - "name" on get_args failure, should be done by get_args; + "name" on get_args failure, should be done by get_args; don't disconnect client for bad args, just return an error. (bus_driver_handle_service_exists): ditto @@ -2376,8 +2386,8 @@ * bus/connection.c (bus_connection_foreach): allow stopping iteration by returning FALSE from foreach function. - * dbus/dbus-connection.c (dbus_connection_send_preallocated) - (dbus_connection_free_preallocated_send) + * dbus/dbus-connection.c (dbus_connection_send_preallocated) + (dbus_connection_free_preallocated_send) (dbus_connection_preallocate_send): new API for sending a message without possibility of malloc failure. (dbus_connection_send_message): rename to just @@ -2397,23 +2407,23 @@ 2003-03-10 Anders Carlsson - * dbus/dbus-marshal.c: + * dbus/dbus-marshal.c: (_dbus_marshal_set_string): Take a length argument so we can marshal the correct string length. - + (_dbus_marshal_dict), (_dbus_demarshal_dict), (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg), (_dbus_marshal_test): - * dbus/dbus-marshal.h: + * dbus/dbus-marshal.h: Add support for marshalling and demarshalling dicts. - + * dbus/dbus-message-builder.c: (_dbus_message_data_load): Add support for TYPE DICT. - + * dbus/dbus-message.c: (set_string_field): Adjust header padding. - + (dbus_message_append_args_valist), (dbus_message_append_dict), (dbus_message_get_args_valist), (dbus_message_iter_get_arg_type), (dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer), @@ -2423,13 +2433,13 @@ * dbus/dbus-protocol.h: Add DBUS_TYPE_DICT. - + * dbus/dbus.h: Add dbus-dict.h - + * doc/dbus-specification.sgml: Add information about how dicts are marshalled. - + * test/data/invalid-messages/dict-with-nil-value.message: * test/data/invalid-messages/too-short-dict.message: * test/data/valid-messages/dict-simple.message: @@ -2452,7 +2462,7 @@ (dbus_dict_set_string_array), (_dbus_dict_test): * dbus/dbus-dict.h: Fix according to comments from Havoc. - + 2003-03-06 Michael Meeks * configure.in: if we don't have kde-config, disable have_qt. @@ -2461,7 +2471,7 @@ * dbus/Makefile.am: Add dbus-dict.[ch] - + * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new), (dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains), (dbus_dict_remove), (dbus_dict_get_value_type), @@ -2478,11 +2488,11 @@ (dbus_dict_get_string_array), (_dbus_dict_test): * dbus/dbus-dict.h: Add DBusDict implementation - + * dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests): * dbus/dbus-test.h: Add _dbus_dict_test - + 2003-03-04 Havoc Pennington * test/data/auth/*: adapt to changes @@ -2492,15 +2502,15 @@ userid * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent - more stuff from being in a context name, to make the protocol + more stuff from being in a context name, to make the protocol simpler to deal with * dbus/dbus-errors.c (dbus_error_has_name): new function (dbus_error_is_set): new function - * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth + * dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1 - + * dbus/dbus-connection.c (dbus_connection_flush): also read messages during a flush operation @@ -2512,10 +2522,10 @@ * dbus/dbus-transport.c: (_dbus_transport_open): Remove duplicate "tcp" entry. - + * doc/dbus-specification.sgml: Clarify some things. - + 2003-03-05 Anders Carlsson * dbus/dbus-auth.c: (send_rejected), (process_test_subdir): @@ -2540,7 +2550,7 @@ sets really huge and small integers * dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check - that length of boolean array fits in the string, and that + that length of boolean array fits in the string, and that string has room for boolean value in single-bool case. * dbus/dbus-message-builder.c (_dbus_message_data_load): add @@ -2574,7 +2584,7 @@ 2003-02-27 Alexander Larsson - * glib/Makefile.am: + * glib/Makefile.am: * configure.in: Make gthreads-2.0 dependency optional. Don't build thread test if its not found. @@ -2585,14 +2595,14 @@ (dbus_connection_send_message_with_reply_and_block): fix doh! doh! doh! bug that resulted in never removing a reply from the queue, no wonder we called get_reply_serial so much ;-) - + * dbus/dbus-message.c (struct DBusMessage): cache reply serial and client serial instead of demarshaling them every time 2003-02-27 Havoc Pennington * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much - more inlined, using dbus-string-private.h, speeds things up + more inlined, using dbus-string-private.h, speeds things up substantially * dbus/dbus-string.c (_dbus_string_free): apply align offset @@ -2602,17 +2612,17 @@ 2003-02-26 Havoc Pennington - All kinds of audit fixes from Owen, plus initial attempt to + All kinds of audit fixes from Owen, plus initial attempt to handle unaligned memory returned from malloc. - - * dbus/dbus-string.c (_dbus_string_init): clamp max length to + + * dbus/dbus-string.c (_dbus_string_init): clamp max length to leave room for align_offset and nul byte - (fixup_alignment): function to track an align_offset and + (fixup_alignment): function to track an align_offset and ensure real->str is aligned - (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated, + (DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated, to allow a nul byte plus align offset (_dbus_string_lock): fix overflow issue - (_dbus_string_init_const_len): add assertions on sanity of len, + (_dbus_string_init_const_len): add assertions on sanity of len, assign allocated to be ALLOCATION_PADDING larger than len (set_length): fixup the overflow handling (_dbus_string_get_data_len): fix overflow in assertion @@ -2624,16 +2634,16 @@ (_dbus_string_delete): fix overflow in assertion (_dbus_string_copy_len): overflow in assertion (_dbus_string_replace_len): overflows in assertions - (_dbus_string_find): change to implement in terms of + (_dbus_string_find): change to implement in terms of _dbus_string_find_to (_dbus_string_find_to): assorted fixage - (_dbus_string_equal_c_str): assert c_str != NULL, + (_dbus_string_equal_c_str): assert c_str != NULL, fix logic so the function works (_dbus_string_ends_with_c_str): fix overflow thingy (_dbus_string_base64_encode): overflow fix (_dbus_string_validate_ascii): overflow (_dbus_string_validate_nul): overflow - + 2003-02-26 Havoc Pennington * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS @@ -2642,29 +2652,29 @@ * configure.in: Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0 - + * dbus/dbus-connection.c: * dbus/dbus-connection.h: Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch. Add dbus_connection_set_wakeup_main_function and use it when queueing incoming and outgoing messages. - - + + * dbus/dbus-dataslot.c: Threadsafe usage of DBusDataSlotAllocator - + * dbus/dbus-message.c: (dbus_message_get_args_iter): dbus_new can fail. - + * dbus/dbus-server-unix.c: Add todo comment - + * glib/dbus-gmain.c: Implement the new wakeup functions for glib. - + * glib/Makefile.am: - * glib/test-thread-client.c: - * glib/test-thread-server.c: + * glib/test-thread-client.c: + * glib/test-thread-server.c: * glib/test-thread.h: Initial cut at some thread test code. Not really done yet. @@ -2678,7 +2688,7 @@ at the end of this function, so if we didn't need to read for authentication, we reinstall it for receiving messages - * dbus/dbus-message.c (dbus_message_new_reply): allow replies to + * dbus/dbus-message.c (dbus_message_new_reply): allow replies to a NULL sender for peer-to-peer case * dbus/dbus-transport-unix.c (check_read_watch): handle @@ -2696,9 +2706,9 @@ * Doxyfile.in (INPUT): add glib subdir - * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename + * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename setup_with_g_main instead of hookup_with_g_main; write docs - + 2003-02-24 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg): @@ -2709,11 +2719,11 @@ * dbus/dbus-message.h: * doc/dbus-specification.sgml: Various fixes as pointed out by Havoc. - + * test/data/invalid-messages/bad-boolean-array.message: * test/data/invalid-messages/bad-boolean.message: Add invalid boolean value test cases. - + 2003-02-24 Anders Carlsson * dbus/dbus-internals.c: (_dbus_type_to_string): @@ -2731,10 +2741,10 @@ * doc/dbus-specification.sgml: * test/data/valid-messages/lots-of-arguments.message: Add support for boolean and boolean array types. - + 2003-02-23 Havoc Pennington - * dbus/dbus-keyring.c: finish most of this implementation and + * dbus/dbus-keyring.c: finish most of this implementation and simple unit test * dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make @@ -2753,7 +2763,7 @@ * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode - * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use + * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use the save-to-temp/rename trick to atomically write the new file (_dbus_string_parse_uint): new function @@ -2774,25 +2784,25 @@ * dbus/dbus-marshal.c: (_dbus_demarshal_string_array): Make string arrays NULL-terminated. - + * dbus/dbus-memory.c: (dbus_free_string_array): * dbus/dbus-memory.h: New function for freeing NULL-terminated string arrays. - + * dbus/dbus-message-builder.c: (append_quoted_string), (_dbus_message_data_load): Add support for array types. - + * dbus/dbus-message.c: (check_message_handling): Add more types as test cases. - + * dbus/dbus-sysdeps.c: (_dbus_string_parse_int), (_dbus_string_parse_double): Add the start offset to the end offset. - + * test/data/valid-messages/lots-of-arguments.message: New test message with lots of arguments. - + 2003-02-21 Anders Carlsson * dbus/dbus-message.c: (dbus_message_append_nil), @@ -2809,7 +2819,7 @@ * dbus/dbus-message.c: (dbus_message_append_nil): Fix a silly. - + 2003-02-21 Anders Carlsson * dbus/dbus-message.c: (dbus_message_append_args_valist), @@ -2826,7 +2836,7 @@ * dbus/dbus-message.h: Add functions for appending and getting arrays. - + 2003-02-21 Anders Carlsson * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the @@ -2839,7 +2849,7 @@ Unlock the connection mutex during a blocking select call. Add todo about how we need a way to wake up the select. - * dbus/dbus-connection-internal.h: + * dbus/dbus-connection-internal.h: * dbus/dbus-connection.c: Add _dbus_connection_lock and _dbus_connection_unlock. @@ -2855,7 +2865,7 @@ * dbus/dbus-errors.c (dbus_set_error_const): do not call dbus_error_init (dbus_set_error): remove dbus_error_init, check for message == - NULL *before* we sprintf into it, and add @todo about including + NULL *before* we sprintf into it, and add @todo about including system headers in this file * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new @@ -2863,7 +2873,7 @@ * dbus/dbus-errors.h (DBUS_ERROR_FAILED): add * dbus/dbus-sysdeps.c (get_user_info): break this function out to - get various bits of user information based on either username + get various bits of user information based on either username or user ID (_dbus_homedir_from_username): new function @@ -2871,22 +2881,22 @@ * configure.in: Add check for nonposix getpwnam_r - + * dbus/dbus-mempool.c: (_dbus_mem_pool_new): Align the pool element size to a sizeof (void *) boundary. - + * dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket), (_dbus_listen_unix_socket), (_dbus_credentials_from_username): General Solaris fixes. - + * test/data/valid-messages/simplest-manual.message: Explicitly state that we want little-endian packing. - + 2003-02-19 Mikael Hallendal * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses. - * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket): + * dbus/dbus-transport-unix.c (_dbus_transport_new_for_tcp_socket): Added to create a transport connecting using a tcp/ip socket. * dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): Added to connect @@ -2896,14 +2906,14 @@ * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses. - * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket): + * dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket): Added to create a server listening on a TCP/IP socket. 2003-02-19 Havoc Pennington Throughout: mop up all the Doxygen warnings and undocumented stuff. - + * dbus/dbus-sysdeps.c (do_exec): do not use execvp, we don't want to search any paths. @@ -2912,10 +2922,10 @@ besides being kind of ugly * Doxyfile (PREDEFINED): have Doxygen define - DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from + DOXYGEN_SHOULD_SKIP_THIS so we can exclude things from docs with #ifndef DOXYGEN_SHOULD_SKIP_THIS - (do not abuse the feature! it's for stuff like the autogenerated - macros in dbus-md5.c, not just for things you don't feel like + (do not abuse the feature! it's for stuff like the autogenerated + macros in dbus-md5.c, not just for things you don't feel like documenting...) 2003-02-18 Havoc Pennington @@ -2964,14 +2974,14 @@ 2003-02-17 Anders Carlsson Release 0.4 - + * NEWS: Update 2003-02-17 Anders Carlsson * doc/dbus-specification.sgml: Specification updates. - + 2003-02-17 Anders Carlsson * bus/activation.c: (bus_activation_init), (child_setup), @@ -2979,21 +2989,21 @@ * bus/activation.h: * bus/main.c: (main): Set DBUS_ADDRESS environment variable. - + * dbus/dbus-errors.c: (dbus_set_error): Don't use va_copy since that's a C99 feature. - + * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec), (_dbus_spawn_async): * dbus/dbus-sysdeps.h: Add child_setup_func to _dbus_spawn_async. - + * doc/dbus-specification.sgml: Update specification. - + * test/spawn-test.c: (setup_func), (main): Fix test. - + 2003-02-17 Alexander Larsson * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked): @@ -3005,10 +3015,10 @@ * doc/Makefile.am: * doc/dbus-test-plan.sgml: Add test plan document. - + * test/Makefile.am: Fix distcheck. - + 2003-02-17 Anders Carlsson * dbus/dbus-message.c: (decode_header_data), @@ -3019,11 +3029,11 @@ * bus/dispatch.c: (send_one_message): Only send broadcast messages to registered connections. - + * dbus/dbus-message.c: (dbus_message_name_is): * dbus/dbus-message.h: New convenience function. - + * dbus/dbus-transport-debug.c: (do_reading): Only dispatch one message per run. @@ -3034,7 +3044,7 @@ * test/bus-test-loop.[ch]: Add these. - + 2003-02-16 Havoc Pennington * dbus/dbus-connection.c (dbus_connection_dispatch_message): fix @@ -3046,7 +3056,7 @@ Implement sent_message_with_reply. (with_reply_and block is still busted). Made dispatch_message not lose message if OOM. - + * dbus/dbus-errors.h: Add NoReply error (for reply timeouts). @@ -3059,51 +3069,51 @@ * dbus/dbus-auth.c: (client_try_next_mechanism): Plug a leak. - + * dbus/dbus-threads.c: (dbus_condvar_wait_timeout): Return TRUE if there's no thread implementation around. - + * glib/dbus-gmain.c: (free_source), (dbus_connection_hookup_with_g_main): Make sure to remove the GSource when the connection is finalized. - + 2003-02-16 Anders Carlsson * bus/dispatch.c: (bus_dispatch_message_handler): * dbus/dbus-errors.h: Return an error if someone tries to send a message to a service that doesn't exist. - + 2003-02-16 Anders Carlsson * bus/activation.c: (load_directory), (bus_activation_init), (bus_activation_activate_service): * bus/activation.h: - * bus/driver.c: + * bus/driver.c: (bus_driver_handle_activate_service), (bus_driver_handle_message): More work on the activation handling. - + * dbus/dbus-errors.h: Add some error messages - + * dbus/dbus-message.c: (dbus_message_new_error_reply): * dbus/dbus-message.h: New function that creates an error message. - + * dbus/dbus-protocol.h: Add ACTIVATE_SERVER message. - + * dbus/dbus-server-unix.c: (unix_handle_watch), (_dbus_server_new_for_domain_socket): Call _dbus_fd_set_close_on_exec. - + * dbus/dbus-sysdeps.c: (make_pipe), (do_exec), (_dbus_spawn_async), (_dbus_disable_sigpipe), (_dbus_fd_set_close_on_exec): * dbus/dbus-sysdeps.h: Add _dbus_fd_set_close_on exec function. Also add function that checks that all open fds are set to close-on-exec and warns otherwise. - + * dbus/dbus-transport-unix.c: (_dbus_transport_new_for_domain_socket): Call _dbus_fd_set_close_on_exec. @@ -3112,7 +3122,7 @@ * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe): allow people to avoid setting SIGPIPE to SIG_IGN - (_dbus_connection_new_for_transport): disable SIGPIPE unless + (_dbus_connection_new_for_transport): disable SIGPIPE unless we've been asked not to 2003-02-15 Anders Carlsson @@ -3141,24 +3151,24 @@ * dbus/dbus-errors.c: (dbus_set_error): * dbus/dbus-errors.h: Add a few errors and make dbus_set_error void. - - * dbus/dbus-sysdeps.c: + + * dbus/dbus-sysdeps.c: (_dbus_errno_to_string), (close_and_invalidate), (make_pipe), (write_err_and_exit), (read_ints), (do_exec), (_dbus_spawn_async): * dbus/dbus-sysdeps.h: Add _dbus_spawn_async. - + * test/spawn-test.c: (main): Test for _dbus_spawn_async. - + 2003-02-15 Anders Carlsson * dbus/dbus-internals.h: Fix build without tests. - + * dbus/dbus-list.c: (alloc_link): Fix a segfault when a malloc fails. - + * dbus/dbus-memory.c: (initialize_malloc_debug), (dbus_malloc), (dbus_malloc0), (dbus_realloc): Add support for malloc debugging. @@ -3169,12 +3179,12 @@ * dbus/dbus-threads.h: Add condvars. Remove static mutext from API. Implement static mutexes by initializing them from threads_init. - + * glib/dbus-gthread.c: * qt/dbus-qthread.cpp: Update with the thread api changes. - + * dbus/dbus-list.c: * dbus/dbus-list.h: Turn StaticMutex into normal mutex + init function. @@ -3182,18 +3192,18 @@ _dbus_list_append_link, _dbus_list_prepend_link - * dbus/dbus-sysdeps.c: + * dbus/dbus-sysdeps.c: * dbus/dbus-sysdeps.h: New type dbus_atomic_t, and new functions _dbus_atomic_inc, _dbus_atomic_dec. Only slow fallback implementation at the moment. - + * dbus/dbus-protocol.h: Add DBUS_MESSAGE_LOCAL_DISCONNECT define - + * dbus/dbus-message.c: Make ref/unref atomic. Fix some docs. - + * dbus/dbus-connection-internal.h: * dbus/dbus-connection.c: * dbus/dbus-connection.h: @@ -3201,23 +3211,23 @@ Change _peek to _borrow,_return & _steal_borrowed. Change disconnect callback to event. Make dbus_connection_dispatch_messages reentrant. - + * dbus/dbus-transport.c: Don't ref the connection on calls to the transport implementation. - + * dbus/dbus-message-handler.c: Make threadsafe. - + * glib/dbus-gmain.c: Don't use peek_message anymore - + * test/Makefile.am: * test/debug-thread.c: * test/debug-thread.h: Simple thread implementation that asserts() on deadlocks in single-threaded code. - + * test/bus-test.c: (main) Call debug_threads_init. @@ -3228,10 +3238,10 @@ * bus/connection.h: Don't call dbus_connection_set_disconnect_function. Instead export bus_connection_disconnect. - + * bus/dispatch.c: Call bus_connection_disconnect when we get a disconnected message. - + 2003-02-15 Havoc Pennington * dbus/dbus-message.c (dbus_message_new): fool around with the @@ -3245,12 +3255,12 @@ should * dbus/dbus-internals.c (_dbus_set_fail_alloc_counter) - (_dbus_decrement_fail_alloc_counter): debug functions to + (_dbus_decrement_fail_alloc_counter): debug functions to simulate memory allocation failures 2003-02-14 Havoc Pennington - * dbus/dbus-errors.h (struct DBusError): add a word of padding + * dbus/dbus-errors.h (struct DBusError): add a word of padding to DBusError 2003-02-13 Anders Carlsson @@ -3259,10 +3269,10 @@ * bus/driver.h: * bus/services.c: (bus_service_lookup): Reorder message sending so we get a more sane order. - + * test/bus-test.c: (message_handler): Fix tyop. - + 2003-02-13 Anders Carlsson * bus/driver.c: (bus_driver_send_service_deleted), @@ -3287,10 +3297,10 @@ * test/bus-test.c: (main): Change fields to arguments in messages, so that they won't be confused with header fields. - + * glib/test-dbus-glib.c: (main): Remove append_fields from hello message. - + 2003-02-13 Anders Carlsson * dbus/dbus-errors.c: @@ -3303,36 +3313,36 @@ * glib/dbus-gmain.c: (timeout_handler), (add_timeout), (remove_timeout): Implement support for timeouts in dbus-glib. - + 2003-02-13 Anders Carlsson * dbus/dbus-message-builder.c: (_dbus_message_data_load): * dbus/dbus-message.c: (process_test_subdir): * test/break-loader.c: (find_breaks_based_on): Plug some memory leaks. - + 2003-02-13 Richard Hult * bus/main.c: Fix build. - * dbus/dbus-errors.h: + * dbus/dbus-errors.h: * dbus/dbus-errors.c: Fix copyright for Anders. 2003-02-13 Anders Carlsson * bus/Makefile.am: Add utils.[ch] - + * bus/connection.c: (bus_connection_foreach): Fix a warning. - + * bus/desktop-file.c: (grow_lines_in_section), (grow_sections), (unescape_string), (new_section), (parse_section_start), (parse_key_value), (report_error), (bus_desktop_file_load), (bus_desktop_file_get_string): * bus/desktop-file.h: Use DBusError for error reporting. - + * bus/dispatch.c: (send_one_message), (bus_dispatch_message_handler): * bus/driver.c: (bus_driver_send_service_deleted), @@ -3345,21 +3355,21 @@ * bus/loop.c: (bus_loop_run): * bus/main.c: Use BUS_HANDLE_OOM instead of _DBUS_HANDLE_OOM. - + * bus/utils.c: (bus_wait_for_memory): * bus/utils.h: New files with general utility functions. - + * dbus/dbus-internals.h: Remove _DBUS_HANDLE_OOM. - + 2003-02-13 Anders Carlsson * dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init), (dbus_error_free), (dbus_set_error_const), (dbus_set_error): * dbus/dbus-errors.h: Add DBusError structure. - + 2003-02-13 Anders Carlsson * test/data/valid-messages/standard-acquire-service.message: @@ -3367,7 +3377,7 @@ * test/data/valid-messages/standard-list-services.message: * test/data/valid-messages/standard-service-exists.message: Add some standard messages. - + 2003-02-13 Anders Carlsson * bus/driver.c: (bus_driver_send_welcome_message), @@ -3375,7 +3385,7 @@ (bus_driver_handle_acquire_service), (bus_driver_handle_service_exists), (bus_driver_handle_message): Update for API changes in libdbus. - + * dbus/dbus-message.c: (dbus_message_new_reply): * dbus/dbus-message.h: Remove the name argument. The spec states that replies shouldn't @@ -3389,7 +3399,7 @@ (bus_desktop_file_get_string): * bus/desktop-file.h: Some fixes, and new functions for getting a key value from a section. - + 2003-02-13 Havoc Pennington * test/data/auth/fail-after-n-attempts.auth-script: new test @@ -3405,12 +3415,12 @@ * dbus/dbus-auth-script.c (_dbus_auth_script_run): support NO_CREDENTIALS and ROOT_CREDENTIALS - * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine - into here. Never process more commands after we've reached an + * dbus/dbus-auth.c (_dbus_auth_do_work): move get_state() routine + into here. Never process more commands after we've reached an end state; store further data as unused bytes. * test/data/auth/*: add more auth tests - + * dbus/dbus-auth-script.c (_dbus_auth_script_run): support EXPECT command to match exact string and EXPECT_UNUSED to match unused bytes @@ -3438,11 +3448,11 @@ 2003-02-10 Havoc Pennington - * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync + * dbus/dbus-auth-script.c, dbus/dbus-auth-script.h: sync initial cut at test framework for DBusAuth from laptop. - Doesn't quite work yet but it compiles and I need to get + Doesn't quite work yet but it compiles and I need to get it off the 266mhz laptop. ;-) - + * dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport): fix a memleak in error case @@ -3466,7 +3476,7 @@ 2003-02-06 Anders Carlsson Release 0.3 - + * NEWS: Update 2003-02-06 Anders Carlsson @@ -3479,7 +3489,7 @@ 2003-02-02 Havoc Pennington - * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files + * dbus/dbus-keyring.c, dbus/dbus-keyring.h: template files for code to manage cookies in your home directory * dbus/dbus-sysdeps.c (_dbus_generate_random_bytes): new function @@ -3496,7 +3506,7 @@ * doc/dbus-specification.sgml: Update address format section. - + 2003-02-02 Anders Carlsson * test/Makefile.am: @@ -3504,15 +3514,15 @@ (message_handler), (new_connection_callback), (loop_quit), (loop_run), (main): Add bus test. - + 2003-02-02 Anders Carlsson * bus/driver.c: (bus_driver_handle_service_exists): Simplify the code a bit. - + * dbus/dbus-bus.c: (dbus_bus_service_exists): - Fix a silly. - + Fix a silly. + 2003-02-02 Anders Carlsson * bus/Makefile.am: @@ -3527,7 +3537,7 @@ * bus/driver.c: (bus_driver_handle_service_exists): Don't unref the incoming message. - + 2003-02-02 Anders Carlsson * dbus/dbus.h: Add dbus-address.h and dbus-bus.h @@ -3537,7 +3547,7 @@ * dbus/dbus-server.c: (dbus_server_listen): * dbus/dbus-transport.c: (_dbus_transport_open): ifdef out the calls to the debug transport and server. - + 2003-02-02 Alexander Larsson * dbus/dbus-watch.c (dbus_watch_get_flags): @@ -3557,18 +3567,18 @@ (bus_driver_handle_hello): Don't take a name, just use a numeric id to identify each client. - + * dbus/Makefile.am: * dbus/dbus-bus.c: (dbus_bus_register_client), (dbus_bus_acquire_service), (dbus_bus_service_exists): * dbus/dbus-bus.h: Add new convenience functions for communicating with the bus. - + * dbus/dbus-message.h: - + * dbus/dbus-protocol.h: Fix a typo. - + 2003-02-01 Alexander Larsson * dbus/dbus-message.c (dbus_message_append_fields): @@ -3576,7 +3586,7 @@ 2003-02-01 Havoc Pennington - * dbus/dbus-break-loader.c (randomly_modify_length): change + * dbus/dbus-break-loader.c (randomly_modify_length): change a 4-byte value in the message as if it were a length * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): don't set @@ -3591,23 +3601,23 @@ * dbus/dbus-sysdeps.c (_dbus_string_save_to_file): new function * dbus/dbus-string.c (_dbus_string_set_byte): new - + 2003-01-31 Havoc Pennington - * dbus/dbus-message.c: refactor the test code to be more general, - in preparation for writing a "randomly permute test cases to + * dbus/dbus-message.c: refactor the test code to be more general, + in preparation for writing a "randomly permute test cases to try to break the loader" program. 2003-01-31 Havoc Pennington - + * doc/dbus-specification.sgml: work on the specification - * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check + * dbus/dbus-message.c (_dbus_message_loader_return_buffer): check the protocol version of the message. - * dbus/dbus-protocol.h: drop special _REPLY names, the spec + * dbus/dbus-protocol.h: drop special _REPLY names, the spec no longer specifies that. - (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not + (DBUS_SERVICE_REPLY_SERVICE_EXISTS): fix flags (1/2/4/8 not 1/2/3/4) * dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos): add missing @@ -3615,7 +3625,7 @@ 2003-01-31 Havoc Pennington - * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename + * dbus/dbus-message.c (dbus_message_set_is_error_reply): rename just set_is_error/get_is_error as this is a commonly-used function, and write docs. @@ -3623,28 +3633,28 @@ * dbus/dbus-address.c: (dbus_address_entry_free): Free key and value lists. - + * dbus/dbus-internals.c: (_dbus_type_to_string): Add the types we didn't have. - + * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg): Add NIL types. - + * dbus/dbus-message.c: (dbus_message_set_sender): Remove todo about being able to set sender to NULL. - + (dbus_message_set_is_error_reply), (dbus_message_get_is_error_reply): * dbus/dbus-message.h: New functions. - + * dbus/dbus-protocol.h: Add error reply flag. - + * test/data/valid-messages/opposite-endian.message: Add NIL type to test. - + 2003-01-31 Havoc Pennington * doc/dbus-specification.sgml: fully specify the header. Add @@ -3661,10 +3671,10 @@ 2003-01-30 Havoc Pennington - * dbus/dbus-auth.c: rework to use only REJECTED, no + * dbus/dbus-auth.c: rework to use only REJECTED, no MECHANISMS - * doc/dbus-sasl-profile.txt: drop MECHANISMS and just + * doc/dbus-sasl-profile.txt: drop MECHANISMS and just use REJECTED, suggested by Mark McLoughlin 2003-01-30 Havoc Pennington @@ -3676,55 +3686,55 @@ * dbus/dbus-address.c (dbus_address_entries_free): add @todo about leaking list nodes - (dbus_parse_address): add @todo about documenting address format, + (dbus_parse_address): add @todo about documenting address format, and allowing , and ; to be escaped 2003-01-30 Anders Carlsson * dbus/Makefile.am: Add dbus-address.[ch] - + * dbus/dbus-address.c: (dbus_address_entry_free), (dbus_address_entries_free), (create_entry), (dbus_address_entry_get_method), (dbus_address_entry_get_value), (dbus_parse_address), (_dbus_address_test): * dbus/dbus-address.h: New files for dealing with address parsing. - + * dbus/dbus-connection.c: Document timeout functions. - + * dbus/dbus-message.c: Document dbus_message_new_from_message. - + * dbus/dbus-server-debug.c: Document. - + * dbus/dbus-server.c: (dbus_server_listen): Parse address and use correct server implementation. - + * dbus/dbus-string.c: (_dbus_string_find_to), (_dbus_string_test): * dbus/dbus-string.h: New function with test. - + * dbus/dbus-test.c: (dbus_internal_symbol_do_not_use_run_tests): * dbus/dbus-test.h: Add address tests. - + * dbus/dbus-transport-debug.c: Document. - + * dbus/dbus-transport.c: (_dbus_transport_open): - Parse address and use correct transport implementation. + Parse address and use correct transport implementation. 2003-01-30 Havoc Pennington - * dbus/dbus-message.c: use message->byte_order instead of + * dbus/dbus-message.c: use message->byte_order instead of DBUS_COMPILER_BYTE_ORDER throughout. - (dbus_message_create_header): pad header to align the + (dbus_message_create_header): pad header to align the start of the body of the message to 8-byte boundary - * dbus/dbus-marshal.h: make all the demarshalers take const + * dbus/dbus-marshal.h: make all the demarshalers take const DBusString arguments. * dbus/dbus-message.c (_dbus_message_loader_return_buffer): @@ -3737,7 +3747,7 @@ implemented properly) (_dbus_string_validate_nul): new function to check all-nul - * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename + * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename get_arg_end_pos and remove all validation (_dbus_marshal_validate_arg): actually do validation here. @@ -3749,9 +3759,9 @@ 2003-01-28 Havoc Pennington * dbus/dbus-server-debug.c: Add doc section comments - + * dbus/dbus-transport-debug.c: add doc section comments - + 2003-01-28 Havoc Pennington * dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in @@ -3765,13 +3775,13 @@ * dbus/dbus-connection.c: (_dbus_connection_add_timeout), (_dbus_connection_remove_timeout): Add functions for adding and removing timeouts. - + * dbus/dbus-message.c: (dbus_message_new_from_message): Add new function that takes a message and creates an exact copy of it, but with the refcount set to 1. (check_message_handling): Fix build error. - + * dbus/dbus-server-protected.h: * dbus/dbus-server.c: (_dbus_server_init_base), (_dbus_server_finalize_base), (_dbus_server_add_timeout), @@ -3784,16 +3794,16 @@ * dbus/dbus-timeout.c: (_dbus_timeout_new): Actually set the handler, doh. - + * dbus/dbus-transport.c: (_dbus_transport_open): Add commented out call to dbus_transport_debug_client_new. - + * dbus/Makefile.am: Add dbus-transport-debug.[ch] and dbus-server-debug.[ch] - + 2003-01-28 Havoc Pennington - * dbus/dbus-message.c (check_message_handling): function to check + * dbus/dbus-message.c (check_message_handling): function to check on the loaded message, iterates over it etc. 2003-01-28 Havoc Pennington @@ -3804,14 +3814,14 @@ 2003-01-27 Havoc Pennington - * dbus/dbus-mempool.c (time_for_size): replace printf with + * dbus/dbus-mempool.c (time_for_size): replace printf with _dbus_verbose * dbus/dbus-message-builder.c (_dbus_message_data_load): allow empty lines; fix the SAVE_LENGTH stuff to be - START_LENGTH/END_LENGTH so it actually works; couple other + START_LENGTH/END_LENGTH so it actually works; couple other bugfixes - + * test/Makefile.am (dist-hook): add dist-hook for .message files * dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy @@ -3821,7 +3831,7 @@ * dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility - * dbus/dbus-test-main.c (main): take an argument which is the + * dbus/dbus-test-main.c (main): take an argument which is the directory containing test data * dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir @@ -3832,7 +3842,7 @@ * bus/dispatch.c: (bus_dispatch_message_handler): Dispatch messages sent to services. - + * bus/driver.c: (bus_driver_send_service_deleted), (bus_driver_send_service_created), (bus_driver_send_service_lost), (bus_driver_send_service_acquired): @@ -3840,56 +3850,56 @@ (bus_driver_send_welcome_message): Send HELLO_REPLY instead of WELCOME. - + (bus_driver_handle_list_services): Send LIST_SERVICES_REPLY instead of SERVICES. - + (bus_driver_handle_own_service), (bus_driver_handle_service_exists): New message handlers. - + (bus_driver_handle_message): Invoke new message handlers. - + (bus_driver_remove_connection): Don't remove any services here since that's done automatically by bus_service_remove_owner now. - + * bus/driver.h: New function signatures. - + * bus/services.c: (bus_service_add_owner): Send ServiceAcquired message if we're the only primary owner. - + (bus_service_remove_owner): Send ServiceAcquired/ServiceLost messages. - + (bus_service_set_prohibit_replacement), (bus_service_get_prohibit_replacement): Functions for setting prohibit replacement. - + (bus_service_has_owner): - New function that checks if a connection is in the owner queue of + New function that checks if a connection is in the owner queue of a certain service. - + * bus/services.h: Add new function signatures. - + * dbus/dbus-list.c: (_dbus_list_test): Add tests for _dbus_list_remove_last and traversing the list backwards. - + * dbus/dbus-list.h: Fix a typo in _dbus_list_get_prev_link, if we're at the first element we can't go any further, so return NULL then. - + * dbus/dbus-protocol.h: Add new messages, service flags and service replies. - + 2003-01-26 Havoc Pennington * dbus/dbus-message-builder.c: implement, completely untested. - * test/data/*: add data to be used in testing. + * test/data/*: add data to be used in testing. ".message" files are our simple loadable text format. ".message-raw" will be binary dumps of messages. @@ -3914,21 +3924,21 @@ The unit tests pass, but otherwise untested. If it breaks, the tests should have been better. ;-) - + * bus/driver.c (bus_driver_handle_hello): return if we disconnect the connection. - * dbus/dbus-message.c: redo everything so we maintain + * dbus/dbus-message.c: redo everything so we maintain message->header as the only copy of the various fields. This avoids the possibility of out-of-memory in some cases, for example dbus_message_lock() can't run out of memory anymore, - and avoids extra copying. Figured I may as well go ahead and do - this since it was busted for dbus_message_lock to not return + and avoids extra copying. Figured I may as well go ahead and do + this since it was busted for dbus_message_lock to not return failure on OOM, and dbus_message_write_header was totally unchecked for OOM. Also fixed some random other bugs. * dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): verify - that strings are nul-terminated. Also, end_pos can be equal + that strings are nul-terminated. Also, end_pos can be equal to string length just not greater than, I think. (_dbus_marshal_set_int32): new function (_dbus_marshal_set_uint32): new function @@ -3946,7 +3956,7 @@ * bus/driver.c: (bus_driver_handle_hello), (bus_driver_send_welcome_message): Plug leaks - + 2003-01-26 Anders Carlsson * dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref): @@ -3955,13 +3965,13 @@ * dbus/dbus-marshal.c: (_dbus_marshal_test): * dbus/dbus-message.c: (dbus_message_unref), Plug memory leaks. - - (dbus_message_get_fields): + + (dbus_message_get_fields): Remove debugging printout. (_dbus_message_loader_return_buffer): Don't store the header string. - + (_dbus_message_test): Plug leaks. @@ -3975,10 +3985,10 @@ * glib/dbus-gmain.c: (dbus_connection_prepare), (dbus_connection_check), (dbus_connection_dispatch), (add_watch), (remove_watch), (dbus_connection_hookup_with_g_main): - Rewrite the glib handling to use its own GSource instead of a + Rewrite the glib handling to use its own GSource instead of a GIOChannel so we can catch messages put in the queue while waiting for a reply. - + 2003-01-25 Anders Carlsson * bus/Makefile.am: @@ -3994,105 +4004,105 @@ (bus_driver_handle_list_services), (bus_driver_remove_connection), (bus_driver_handle_message): * bus/driver.h: - Refactor code, put the message dispatching in its own file. Use + Refactor code, put the message dispatching in its own file. Use _DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client is disconnected. - + 2003-01-25 Anders Carlsson * dbus/dbus-internals.h: Add _DBUS_HANDLE_OOM macro, it doesn't do anything currently. - + * dbus/dbus-message.c: (dbus_message_get_sender): * dbus/dbus-message.h: Implement dbus_message_get_sender. - + * dbus/dbus-protocol.h: Add message and service defines. - + 2003-01-25 Anders Carlsson * dbus/dbus-connection.c: (dbus_connection_send_message): * dbus/dbus-message-internal.h: * dbus/dbus-message.c: (_dbus_message_get_client_serial), (dbus_message_write_header): - Remove _dbus_messag_unlock and don't set the client serial on a + Remove _dbus_messag_unlock and don't set the client serial on a message if one already exists. - + 2003-01-24 Havoc Pennington * dbus/dbus-list.c (alloc_link): put a thread lock on the global list_pool - * bus/driver.c (bus_driver_handle_list_services): fix a leak + * bus/driver.c (bus_driver_handle_list_services): fix a leak on OOM 2003-01-25 Anders Carlsson * dbus/dbus-list.c: (alloc_link), (free_link): Use a memory pool for the links. - + 2003-01-25 Anders Carlsson * bus/connection.c: (bus_connection_foreach): * bus/connection.h: Add new bus_connection_foreach function. - + * bus/driver.c: (send_one_message), (bus_driver_broadcast_message): Add function that broadcasts a message to all clients. - + (bus_driver_send_service_created), (bus_driver_handle_hello), (bus_driver_send_welcome_message), (bus_driver_handle_list_services), (bus_driver_message_handler): Implement functions that take care of listing services, and notifying clients when new services are created. - + * bus/services.c: (bus_services_list): * bus/services.h: Add new function that returns an array of strings with the currently registered services. - + * glib/dbus-glib.h: * glib/dbus-gmain.c: Update copyright year. - + 2003-01-25 Anders Carlsson * dbus/dbus-connection.c: (dbus_connection_send_message): Unlock the message in case it was sent earlier. - + (dbus_connection_send_message_with_reply_and_block): Remove the reply message from the list. - + * dbus/dbus-marshal.c: (_dbus_demarshal_string_array): Set array_len and new_pos correctly. - + (_dbus_marshal_test): Remove debug output. - + * dbus/dbus-message-internal.h: * dbus/dbus-message.c: (_dbus_message_get_reply_serial): New function that returns the reply serial. - + (_dbus_message_unlock): New function that unlocks a message and resets its header. - (dbus_message_append_string_array), + (dbus_message_append_string_array), (dbus_message_get_fields_valist), (dbus_message_iter_get_field_type), - (dbus_message_iter_get_string_array), - (dbus_message_get_fields), + (dbus_message_iter_get_string_array), + (dbus_message_get_fields), (dbus_message_append_fields_valist): Handle string arrays. - + (dbus_message_set_sender): Make this function public since the bus daemon needs it. - + (decode_header_data): Set the reply serial to -1 initially. * dbus/dbus-message.h: - Add dbus_message_set_sender. + Add dbus_message_set_sender. 2003-01-24 Havoc Pennington @@ -4112,9 +4122,9 @@ 2003-01-21 Havoc Pennington (patch untested because can't compile) - + * bus/driver.c (create_unique_client_name): make this function - never recycle client names. Also, caller should initialize + never recycle client names. Also, caller should initialize the DBusString. * dbus/dbus-sysdeps.c (_dbus_get_current_time): new function @@ -4132,27 +4142,27 @@ * dbus/dbus-protocol.h: Add support for marshalling and demarshalling integer, double and string arrays. - + 2003-01-21 Anders Carlsson * bus/Makefile.am: Add driver.[ch] - + * bus/connection.c: (connection_disconnect_handler): Remove the connection from the bus driver's list. - + (connection_watch_callback): Dispatch messages. (free_connection_data): Free connection name. - + (bus_connection_setup): Add connection to the bus driver's list. - (bus_connection_remove_owned_service): + (bus_connection_remove_owned_service): (bus_connection_set_name), (bus_connection_get_name): Add functions for setting and getting the connection's name. - + * bus/connection.h: Add function headers. - + * bus/driver.c: (create_unique_client_name), (bus_driver_handle_hello_message), (bus_driver_send_welcome_message), (bus_driver_message_handler), @@ -4162,27 +4172,27 @@ * bus/services.c: (bus_service_free): * bus/services.h: New file that handles communication and registreation with the bus - itself. - + itself. + 2003-01-21 Anders Carlsson * dbus/dbus-connection.c: (dbus_connection_send_message): Add a new client_serial parameter. - + (dbus_connection_send_message_with_reply): Remove a @todo since we've implemented the blocking function. - + (dbus_connection_send_message_with_reply_and_block): New function that sends a message and waits for a reply and then returns the reply. - + * dbus/dbus-connection.h: Add new functions. - + * dbus/dbus-errors.c: (dbus_result_to_string): * dbus/dbus-errors.h: Add new DBUS_RESULT. - + * dbus/dbus-message-internal.h: * dbus/dbus-message.c: (_dbus_message_get_reply_serial), (_dbus_message_set_sender), (dbus_message_write_header), @@ -4191,37 +4201,37 @@ * dbus/dbus-message.h: Add new functions that set the reply serial and sender. Also marshal and demarshal them correctly and add test. - + * dbus/dbus-protocol.h: Add new DBUS_MESSAGE_TYPE_SENDER. - + * glib/dbus-glib.h: * glib/dbus-gmain.c: (watch_callback), (free_callback_data), (add_watch), (remove_watch), (add_timeout), (remove_timeout), (dbus_connection_hookup_with_g_main): * glib/test-dbus-glib.c: (main): Rewrite to use GIOChannel and remove the GSource crack. - + * test/echo-client.c: (main): * test/watch.c: (check_messages): Update for changed APIs - + 2003-01-19 Anders Carlsson * dbus/Makefile.am: Add dbus-timeout.[cħ] - + * dbus/dbus-connection.c: (_dbus_connection_new_for_transport): - Create a DBusTimeoutList. + Create a DBusTimeoutList. (dbus_connection_set_timeout_functions): Add new function to set timeout callbacks - + * dbus/dbus-connection.h: Add public DBusTimeout API. - + * dbus/dbus-message.c: (dbus_message_get_service): * dbus/dbus-message.h: New function. * dbus/dbus-server.c: Fix small doc typo. - + * dbus/dbus-timeout.[ch]: New files for mainloop timeouts. 2003-01-19 Anders Carlsson @@ -4251,9 +4261,9 @@ * dbus/dbus-transport-unix.c (check_write_watch): fix a mem leak in OOM case - * dbus/dbus-connection.c (dbus_connection_set_max_message_size) - (dbus_connection_get_max_message_size) - (dbus_connection_set_max_live_messages_size) + * dbus/dbus-connection.c (dbus_connection_set_max_message_size) + (dbus_connection_get_max_message_size) + (dbus_connection_set_max_live_messages_size) (dbus_connection_get_max_live_messages_size): implement some resource limitation functions @@ -4265,10 +4275,10 @@ * dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing docs - + 2003-01-18 Havoc Pennington - * dbus/dbus-connection.c (dbus_connection_unref): disconnect the + * dbus/dbus-connection.c (dbus_connection_unref): disconnect the connection if it hasn't been already. * dbus/dbus-connection.h: kill off the idea of an ErrorFunction, @@ -4278,9 +4288,9 @@ Building --disable-verbose-mode --disable-asserts --disable-tests cuts the library from 112K to 45K or so - - * configure.in: check for varargs macro support, - add --enable-verbose-mode, --enable-asserts. + + * configure.in: check for varargs macro support, + add --enable-verbose-mode, --enable-asserts. * dbus/dbus-internals.h (_dbus_assert): support DBUS_DISABLE_ASSERT @@ -4307,7 +4317,7 @@ 2003-01-15 Havoc Pennington Release 0.2 - + * NEWS: update 2003-01-15 Havoc Pennington @@ -4318,8 +4328,8 @@ 2003-01-15 Havoc Pennington Release 0.1. - - * NEWS: update + + * NEWS: update 2003-01-15 Havoc Pennington @@ -4337,7 +4347,7 @@ * bus/main.c: (main): Make sure that the DBusConnectionData struct is NULLed out to prevent a segfault. - + * dbus/dbus-errors.c: (dbus_result_to_string): * dbus/dbus-errors.h: * dbus/dbus-message.c: (dbus_message_get_fields), @@ -4345,7 +4355,7 @@ * dbus/dbus-message.h: Make dbus_message_get_fields return a result code so we can track invalid fields as well as oom. - + 2003-01-11 Havoc Pennington * configure.in: change --enable-test/--enable-ansi action-if-given @@ -4358,11 +4368,11 @@ * dbus/dbus-test-main.c: move main() for test app here * dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests): we have to export a - symbol to run tests, because dbus-test isn't in the main + symbol to run tests, because dbus-test isn't in the main library Code review nitpicks. - + * dbus/dbus-message.c (dbus_message_write_header): add newlines for people with narrow emacs ;-). Assert client_serial was filled in. Assert message->name != NULL. @@ -4399,7 +4409,7 @@ 2003-01-08 Havoc Pennington - * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write + * dbus/dbus-transport-unix.c (unix_do_iteration): add read/write to the select() as needed for authentication. (should be using _dbus_poll() not select, but for another day) @@ -4414,7 +4424,7 @@ * dbus/dbus-internals.c: (_dbus_type_to_string): New function that returns a string describing a type. - + * dbus/dbus-marshal.c: (_dbus_demarshal_byte_array): * dbus/dbus-marshal.h: * dbus/dbus-message.c: (dbus_message_get_fields_valist), @@ -4460,7 +4470,7 @@ * test/echo-client.c: (main): * test/watch.c: (check_messages): Make messages sendable and receivable for real. - + 2003-01-07 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_marshal_double), @@ -4469,7 +4479,7 @@ (dbus_message_append_uint32), (dbus_message_append_double), (dbus_message_append_string), (dbus_message_append_byte_array): Handle OOM restoration. - + 2003-01-07 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_marshal_string), @@ -4477,13 +4487,13 @@ * dbus/dbus-marshal.h: * dbus/dbus-message.c: (dbus_message_get_name), Document these functions. - + (dbus_message_append_int32), (dbus_message_append_uint32), (dbus_message_append_double), (dbus_message_append_string), (dbus_message_append_byte_array): * dbus/dbus-message.h: Add functions for adding message fields of different types. - + * dbus/dbus-protocol.h: Add the different types. @@ -4517,13 +4527,13 @@ 2003-01-04 Havoc Pennington - * test/watch.c (error_handler): make it safe if the error handler + * test/watch.c (error_handler): make it safe if the error handler is called multiple times (if we s/error handler/disconnect handler/ we should just guarantee it's called only once) * dbus/dbus-transport.c (_dbus_transport_disconnect): call the error handler on disconnect (it's quite possible we should - just change the error handler to a "disconnect handler," I'm + just change the error handler to a "disconnect handler," I'm not sure we have any other meaningful errors) * configure.in: check for getpwnam_r @@ -4548,7 +4558,7 @@ * dbus/dbus-marshal.h: Add _dbus_marshal_byte_array and rename _dbus_marshal_string to _dbus_marshal_utf8_string. Also fix some tests. - + 2002-12-28 Harri Porten * configure.in: added check for C++ compiler and a very cheesy @@ -4556,9 +4566,9 @@ * Makefile.am (SUBDIRS): compile qt subdir if support is enabled - * qt/Makefile.am: added + * qt/Makefile.am: added - * qt/.cvsignore: added + * qt/.cvsignore: added * qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to latter, added #ifdef QT_THREAD_SUPPORT guard. @@ -4571,7 +4581,7 @@ 2002-12-27 Anders Carlsson - * acinclude.m4: Add this file and put the + * acinclude.m4: Add this file and put the PKG_CHECK_MODULE macro in it. 2002-12-27 Anders Carlsson @@ -4581,9 +4591,9 @@ (_dbus_demarshal_uint32), (_dbus_demarshal_string), (_dbus_marshal_test): Make the demarshalling routines align the pos argument. - Add string marshalling tests and fix the obvious bugs + Add string marshalling tests and fix the obvious bugs discovered. - + 2002-12-26 Havoc Pennington * dbus/dbus-auth.c: fixes fixes fixes @@ -4591,8 +4601,8 @@ * dbus/dbus-transport-unix.c: wire up support for encoding/decoding data on the wire - * dbus/dbus-auth.c (_dbus_auth_encode_data) - (_dbus_auth_decode_data): append to target string + * dbus/dbus-auth.c (_dbus_auth_encode_data) + (_dbus_auth_decode_data): append to target string instead of nuking it. 2002-12-26 Havoc Pennington @@ -4602,7 +4612,7 @@ doh * dbus/dbus-marshal.c: Add macros to do int swapping in-place and - avoid swap_bytes() overhead (ignoring possible assembly stuff for + avoid swap_bytes() overhead (ignoring possible assembly stuff for now). Main point is because I wanted unpack_uint32 to implement _dbus_verbose_bytes (_dbus_verbose_bytes): new function @@ -4611,14 +4621,14 @@ * dbus/dbus-message.c (_dbus_message_loader_get_is_corrupted): add mechanism to handle a corrupt message stream - (_dbus_message_loader_new): fix preallocation to only prealloc, + (_dbus_message_loader_new): fix preallocation to only prealloc, not prelengthen - + * dbus/dbus-string.c (_dbus_string_skip_blank): fix this function (_dbus_string_test): enhance tests for copy/move and fix the functions - * dbus/dbus-transport-unix.c: Hold references in more places to + * dbus/dbus-transport-unix.c: Hold references in more places to avoid reentrancy problems * dbus/dbus-transport.c: ditto @@ -4638,7 +4648,7 @@ (_dbus_auth_get_unused_bytes): append the unused bytes to the passed in string, rather than prepend - * dbus/dbus-transport.c (_dbus_transport_init_base): create + * dbus/dbus-transport.c (_dbus_transport_init_base): create the auth conversation DBusAuth * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd) @@ -4653,14 +4663,14 @@ (unix_connection_set): unref watch if we fail to add it * dbus/dbus-connection.c (dbus_connection_unref): delete the - transport first, so that the connection owned by the + transport first, so that the connection owned by the transport will be valid as the transport finalizes. * dbus/dbus-transport-unix.c (unix_finalize): free the write_watch if necessary, and remove watches from the connection. - + * dbus/dbus-watch.c (_dbus_watch_list_free): improve a comment - + 2002-12-26 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_marshal_string), @@ -4670,15 +4680,15 @@ * dbus/dbus-marshal.h: Add string marshal functions and have the demarshal functions return the new position. - + 2002-12-25 Havoc Pennington - * doc/dbus-sasl-profile.txt: docs on the authentication protocol, + * doc/dbus-sasl-profile.txt: docs on the authentication protocol, it is a simple protocol that just maps directly to SASL. * dbus/dbus-auth.h, dbus/dbus-auth.c: authentication protocol initial implementation, not actually used yet. - + * dbus/dbus-string.c (_dbus_string_find): new function (_dbus_string_equal): new function (_dbus_string_base64_encode): new function @@ -4696,7 +4706,7 @@ * dbus/dbus-test.c: (main): * dbus/dbus-test.h: Add un-optimized marshalling/demarshalling routines. - + 2002-12-25 Harri Porten * qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions @@ -4711,17 +4721,17 @@ * glib/dbus-gthread.c: fix include - * glib/dbus-glib.h: rename DBusMessageHandler for now. - I think glib API needs to change, though, as you don't - want to use DBusMessageFunction, you want to use the - DBusMessageHandler object. Probably + * glib/dbus-glib.h: rename DBusMessageHandler for now. + I think glib API needs to change, though, as you don't + want to use DBusMessageFunction, you want to use the + DBusMessageHandler object. Probably dbus_connection_open_with_g_main_loop() and dbus_connection_setup_g_main_loop() or something like that - (but think of better names...) that just create a connection + (but think of better names...) that just create a connection that has watch/timeout functions etc. already set up. * dbus/dbus-connection.c - (dbus_connection_send_message_with_reply): new function just to + (dbus_connection_send_message_with_reply): new function just to show how the message handler helps us deal with replies. * dbus/dbus-list.c (_dbus_list_remove_last): new function @@ -4730,15 +4740,15 @@ wasn't * dbus/dbus-hash.c: use memory pools for the hash entries - (rebuild_table): be more paranoid about overflow, and + (rebuild_table): be more paranoid about overflow, and shrink table when we can (_dbus_hash_test): reduce number of sprintfs and write - valid C89. Add tests for case where we grow and then + valid C89. Add tests for case where we grow and then shrink the hash table. * dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools - * dbus/dbus-connection.c (dbus_connection_register_handler) + * dbus/dbus-connection.c (dbus_connection_register_handler) (dbus_connection_unregister_handler): new functions * dbus/dbus-message.c (dbus_message_get_name): new @@ -4753,13 +4763,13 @@ * glib/dbus-glib.h: * glib/dbus-gthread.c: (dbus_gthread_init): Don't use the gdbus prefix for public functions. - + 2002-12-16 Anders Carlsson * Makefile.am: * configure.in: Add GLib checks and fixup .pc files - + * glib/Makefile.am: * glib/dbus-glib.h: * glib/dbus-gmain.c: (gdbus_connection_prepare), @@ -4770,14 +4780,14 @@ (dbus_gmutex_lock), (dbus_gmutex_unlock), (dbus_gthread_init): * glib/test-dbus-glib.c: (message_handler), (main): Add GLib support. - + 2002-12-15 Harri Porten - * autogen.sh: check for libtoolize before attempting to use it - + * autogen.sh: check for libtoolize before attempting to use it + * dbus/dbus-transport-unix.c: include for timeval struct. - + * .cvsignore: ignore more stamp files * dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error @@ -4815,7 +4825,7 @@ * dbus/dbus-connection.c (dbus_connection_send_message): return TRUE on success - * dbus/dbus-transport.c: include dbus-watch.h + * dbus/dbus-transport.c: include dbus-watch.h * dbus/dbus-connection.c: include dbus-message-internal.h @@ -4829,17 +4839,17 @@ system/libc usage here, as in vsftpd, for ease of auditing (and should also simplify portability). Haven't actually moved all the system/libc usage into here yet. - + 2002-11-25 Havoc Pennington - * dbus/dbus-internals.c (_dbus_verbose): fix to not + * dbus/dbus-internals.c (_dbus_verbose): fix to not always print the first verbose message. 2002-11-24 Havoc Pennington - * test/echo-client.c, test/echo-server.c: cheesy test + * test/echo-client.c, test/echo-server.c: cheesy test clients. - + * configure.in (AC_CHECK_FUNCS): check for writev * dbus/dbus-message.c (_dbus_message_get_network_data): new @@ -4858,8 +4868,8 @@ public API for reporting errors * dbus/dbus-connection.h, dbus/dbus-connection.c: - public object representing a connection that - sends/receives messages. (Same object used for + public object representing a connection that + sends/receives messages. (Same object used for both client and server.) * dbus/dbus-transport.h, dbus/dbus-transport.c: @@ -4868,20 +4878,20 @@ 2002-11-23 Havoc Pennington - * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN + * dbus/dbus-internals.h (_DBUS_INT_MAX): add _DBUS_INT_MIN _DBUS_INT_MAX - * dbus/dbus-test.c (main): add list test, and include + * dbus/dbus-test.c (main): add list test, and include dbus-test.h as intended - * dbus/dbus-hash.c (_dbus_hash_table_remove_string) - (_dbus_hash_table_remove_int): return value indicates + * dbus/dbus-hash.c (_dbus_hash_table_remove_string) + (_dbus_hash_table_remove_int): return value indicates whether the entry existed to remove - * dbus/dbus-list.c: add linked list utility class, + * dbus/dbus-list.c: add linked list utility class, with docs and tests - * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket + * dbus/dbus-hash.c: add TODO item about shrinking the hash bucket array sometimes. 2002-11-23 Havoc Pennington @@ -4891,43 +4901,43 @@ * Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES - * dbus/dbus-message.c, dbus/dbus-hash.c: + * dbus/dbus-message.c, dbus/dbus-hash.c: add some missing @brief 2002-11-23 Havoc Pennington - * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS + * dbus/dbus-message.h: put semicolons after DEBUG_BEGIN_DECLS to avoid confusing Doxygen * dbus/dbus-hash.c: @} not }@ - * dbus/dbus-message.c (struct DBusMessage): split out + * dbus/dbus-message.c (struct DBusMessage): split out internals docs 2002-11-23 Havoc Pennington * configure.in: pile on more warning flags if using gcc - * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have + * Doxyfile.in (EXTRACT_STATIC): set to NO, so we don't have to document static functions - * configure.in: add summary to end of configure so it + * configure.in: add summary to end of configure so it looks nice and attractive - * dbus/dbus-hash.c: finish implementation and write unit + * dbus/dbus-hash.c: finish implementation and write unit tests and docs * configure.in: add --enable-tests to enable unit tests - * dbus/dbus-test.c: test program to run unit tests - for all files in dbus/*, initially runs a test for + * dbus/dbus-test.c: test program to run unit tests + for all files in dbus/*, initially runs a test for dbus-hash.c - + * dbus/dbus-internals.h: file to hold some internal utility stuff 2002-11-22 Havoc Pennington - * dbus/dbus-hash.c: copy in Tcl hash table, not yet + * dbus/dbus-hash.c: copy in Tcl hash table, not yet "ported" away from Tcl * dbus/dbus-types.h: header for types such as dbus_bool_t @@ -4936,7 +4946,7 @@ * dbus/dbus.h: fixups for doc warnings - * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up + * Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up macros (QUIET): make it quiet so we can see warnings @@ -4948,8 +4958,8 @@ * configure.in: generate the Doxyfile - * Doxyfile.in: move Doxyfile here, so we can use - configure to generate a Doxyfile with the right + * Doxyfile.in: move Doxyfile here, so we can use + configure to generate a Doxyfile with the right version number etc. 2002-11-22 Havoc Pennington @@ -4958,16 +4968,16 @@ * Doxyfile (OUTPUT_DIRECTORY): move output to doc/api so all docs are under doc/ - (MAN_EXTENSION): generate man pages. Use extension - ".3dbus" which matches ".3qt" on my system, + (MAN_EXTENSION): generate man pages. Use extension + ".3dbus" which matches ".3qt" on my system, I guess this is OK, I don't know really. (FILE_PATTERNS): look for .c files not .h, makes sense for plain C I think 2002-11-22 Havoc Pennington - * Makefile.am (SUBDIRS): rename subdir "server" to "bus" - because any app can be a server, and any app can be a client, + * Makefile.am (SUBDIRS): rename subdir "server" to "bus" + because any app can be a server, and any app can be a client, the bus is a special kind of server. Thu Nov 21 23:35:31 2002 Zack Rusin @@ -4975,7 +4985,7 @@ Thu Nov 21 23:35:31 2002 Zack Rusin * Doxyfile : adding. Still needs Makefile rules to be generated automatically (just run "doxygen" in the toplevel dir for now to generate docs) - + * dbus/dbus-message.h : Adding sample docs (javadoc since resembles gtk-doc a little more) @@ -4983,17 +4993,17 @@ Thu Nov 21 23:35:31 2002 Zack Rusin 2002-11-21 Havoc Pennington - * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION - so we can allow ourselves to include files directly, + * dbus/Makefile.am (INCLUDES): define DBUS_COMPILATION + so we can allow ourselves to include files directly, instead of having to use dbus.h * dbus/dbus.h: fill in * dbus/dbus-message.h: sketch out a sample header file. - Include griping if you include it directly instead of + Include griping if you include it directly instead of via dbus.h - * dbus/dbus-macros.h: new file with macros for extern "C", + * dbus/dbus-macros.h: new file with macros for extern "C", TRUE/FALSE, NULL, etc. * doc/file-boilerplate.c: put include guards in here @@ -5002,7 +5012,7 @@ Thu Nov 21 23:35:31 2002 Zack Rusin * doc/file-boilerplate.c: include both AFL and GPL boilerplate. - * COPYING: include the GPL as well, and license code + * COPYING: include the GPL as well, and license code under both AFL and GPL. 2002-11-21 Havoc Pennington @@ -5012,9 +5022,9 @@ Thu Nov 21 23:35:31 2002 Zack Rusin * autogen.sh (run_configure): add --no-configure option * configure.in: remove AC_ARG_PROGRAM to make - autoconf complain less. add AC_PREREQ. + autoconf complain less. add AC_PREREQ. add AC_DEFINE third arg. - + 2002-11-21 Anders Carlsson * doc/Makefile.am: diff --git a/dbus/Makefile.am b/dbus/Makefile.am index 3c3c14e7..8c919f31 100644 --- a/dbus/Makefile.am +++ b/dbus/Makefile.am @@ -17,6 +17,7 @@ dbusinclude_HEADERS= \ dbus-memory.h \ dbus-message.h \ dbus-message-handler.h \ + dbus-object.h \ dbus-objectid.h \ dbus-protocol.h \ dbus-server.h \ @@ -43,7 +44,10 @@ DBUS_LIB_SOURCES= \ dbus-message.c \ dbus-message-handler.c \ dbus-message-internal.h \ + dbus-object.c \ dbus-objectid.c \ + dbus-object-registry.c \ + dbus-object-registry.h \ dbus-resources.c \ dbus-resources.h \ dbus-server.c \ diff --git a/dbus/dbus-connection-internal.h b/dbus/dbus-connection-internal.h index 5ddc0e0a..eaa35955 100644 --- a/dbus/dbus-connection-internal.h +++ b/dbus/dbus-connection-internal.h @@ -81,6 +81,7 @@ void _dbus_message_handler_remove_connection (DBusMessageHandl DBusHandlerResult _dbus_message_handler_handle_message (DBusMessageHandler *handler, DBusConnection *connection, DBusMessage *message); +dbus_uint32_t _dbus_connection_get_id (DBusConnection *connection); DBUS_END_DECLS; diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 01b2a7bf..237c195b 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -920,6 +920,22 @@ _dbus_connection_handle_watch (DBusWatch *watch, return retval; } +/** + * Get the ID to be used in the high bits of an object ID for an object + * registered with this connection. + * + * @todo implement this function + * + * @param connection the connection. + * @returns the connection portion of the object ID + */ +dbus_uint32_t +_dbus_connection_get_id (DBusConnection *connection) +{ + /* FIXME */ + return 1492; +} + /** @} */ /** diff --git a/dbus/dbus-connection.h b/dbus/dbus-connection.h index 9f4dd7ae..ce57c98d 100644 --- a/dbus/dbus-connection.h +++ b/dbus/dbus-connection.h @@ -37,6 +37,7 @@ typedef struct DBusConnection DBusConnection; typedef struct DBusWatch DBusWatch; typedef struct DBusTimeout DBusTimeout; typedef struct DBusMessageHandler DBusMessageHandler; +typedef struct DBusObject DBusObject; typedef struct DBusPreallocatedSend DBusPreallocatedSend; typedef enum diff --git a/dbus/dbus-object-registry.c b/dbus/dbus-object-registry.c new file mode 100644 index 00000000..9f7ca3ff --- /dev/null +++ b/dbus/dbus-object-registry.c @@ -0,0 +1,325 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-object-registry.c DBusObjectRegistry (internals of DBusConnection) + * + * 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-object-registry.h" +#include "dbus-connection-internal.h" +#include "dbus-internals.h" +#include + +/** + * @defgroup DBusObjectRegistry Map object IDs to implementations + * @ingroup DBusInternals + * @brief DBusObjectRegistry is used by DBusConnection to track object IDs + * + * Types and functions related to DBusObjectRegistry + * + * @{ + */ + +typedef struct DBusObjectEntry DBusObjectEntry; + + /* 14 bits for object index, 32K objects */ +#define DBUS_OBJECT_INDEX_BITS (14) +#define DBUS_OBJECT_INDEX_MASK (0x7fff) +#define DBUS_MAX_OBJECTS_PER_CONNECTION DBUS_OBJECT_INDEX_MASK +struct DBusObjectEntry +{ + unsigned int id_index : 14; /**< Index of this entry in the entries array */ + unsigned int id_times_used : 18; /**< Count of times entry has been used; avoids recycling IDs too often */ + + void *object_impl; /**< Pointer to application-supplied implementation */ + const DBusObjectVTable *vtable; /**< Virtual table for this object */ +}; + +struct DBusObjectRegistry +{ + int refcount; + DBusConnection *connection; + + DBusObjectEntry *entries; + int n_entries_allocated; + int n_entries_used; +}; + +DBusObjectRegistry* +_dbus_object_registry_new (DBusConnection *connection) +{ + DBusObjectRegistry *registry; + + registry = dbus_new0 (DBusObjectRegistry, 1); + + registry->refcount = 1; + registry->connection = connection; + + return registry; +} + +void +_dbus_object_registry_ref (DBusObjectRegistry *registry) +{ + _dbus_assert (registry->refcount > 0); + + registry->refcount += 1; +} + +void +_dbus_object_registry_unref (DBusObjectRegistry *registry) +{ + _dbus_assert (registry->refcount > 0); + + registry->refcount -= 1; + + if (registry->refcount == 0) + { + _dbus_assert (registry->n_entries_used == 0); + + dbus_free (registry->entries); + dbus_free (registry); + } +} + +#define ENTRY_TO_ID(entry) \ + (((dbus_uint32_t) (entry)->id_index) | \ + (((dbus_uint32_t)(entry)->id_times_used) << DBUS_OBJECT_INDEX_BITS)) + +#define ID_TO_INDEX(id) \ + (((dbus_uint32_t) (id)) | DBUS_OBJECT_INDEX_MASK) + +#define ID_TO_TIMES_USED(id) \ + (((dbus_uint32_t) (id)) >> DBUS_OBJECT_INDEX_BITS) + +static DBusObjectEntry* +validate_id (DBusObjectRegistry *registry, + const DBusObjectID *object_id) +{ + int idx; + int times_used; + dbus_uint32_t low_bits; + + low_bits = dbus_object_id_get_low_bits (object_id); + + idx = ID_TO_INDEX (low_bits); + times_used = ID_TO_TIMES_USED (low_bits); + + if (idx >= registry->n_entries_allocated) + return NULL; + if (registry->entries[idx].vtable == NULL) + return NULL; + if (registry->entries[idx].id_times_used != times_used) + return NULL; + _dbus_assert (registry->entries[idx].id_index == idx); + _dbus_assert (registry->n_entries_used > 0); + + return ®istry->entries[idx]; +} + +static void +info_from_entry (DBusObjectRegistry *registry, + DBusObjectInfo *info, + DBusObjectEntry *entry) +{ + info->connection = registry->connection; + info->object_impl = entry->object_impl; + dbus_object_id_set_high_bits (&info->object_id, + _dbus_connection_get_id (registry->connection)); + dbus_object_id_set_low_bits (&info->object_id, + ENTRY_TO_ID (entry)); +} + +dbus_bool_t +_dbus_object_registry_add_and_unlock (DBusObjectRegistry *registry, + const char **interfaces, + const DBusObjectVTable *vtable, + void *object_impl, + DBusObjectID *object_id) +{ + int i; + DBusObjectInfo info; + + if (registry->n_entries_used == registry->n_entries_allocated) + { + DBusObjectEntry *new_entries; + int new_alloc; + + if (registry->n_entries_allocated == 0) + new_alloc = 16; + else + { + if (registry->n_entries_allocated == DBUS_MAX_OBJECTS_PER_CONNECTION) + { + _dbus_warn ("Attempting to register a new D-BUS object, but maximum object count of %d reached\n", + DBUS_MAX_OBJECTS_PER_CONNECTION); + return FALSE; + } + + new_alloc = registry->n_entries_allocated * 2; + if (new_alloc > DBUS_MAX_OBJECTS_PER_CONNECTION) + new_alloc = DBUS_MAX_OBJECTS_PER_CONNECTION; + } + + new_entries = dbus_realloc (registry->entries, + new_alloc * sizeof (DBusObjectEntry)); + + if (new_entries == NULL) + return FALSE; + + memset (&new_entries[registry->n_entries_allocated], + '\0', + sizeof (DBusObjectEntry) * (new_alloc - registry->n_entries_allocated)); + + registry->entries = new_entries; + registry->n_entries_allocated = new_alloc; + } + _dbus_assert (registry->n_entries_used < registry->n_entries_allocated); + + /* We linear search for an available entry. However, short-circuit + * the hopefully-common situation where we don't have a sparse + * array. + */ + if (registry->entries[registry->n_entries_used].vtable == NULL) + { + i = registry->n_entries_used; + } + else + { + /* If we do have a sparse array, we try to get rid of it rather + * than using empty slots on the end, so we won't hit this case + * next time. + */ + + /* If index n_entries_used is occupied, then + * there is at least one entry outside of + * the range [0, n_entries_used). Thus, there is + * at least one blank entry inside that range. + */ + i = 0; + while (i < registry->n_entries_used) + { + if (registry->entries[i].vtable == NULL) + break; + ++i; + } + + _dbus_assert (i < registry->n_entries_used); + } + + registry->entries[i].id_index = i; + /* Overflow is OK here */ + registry->entries[i].id_times_used += 1; + + registry->entries[i].vtable = vtable; + registry->entries[i].object_impl = object_impl; + + info_from_entry (registry, &info, ®istry->entries[i]); + + /* Drop lock and invoke application code */ + _dbus_connection_unlock (registry->connection); + + (* vtable->registered) (&info); + + return TRUE; +} + +void +_dbus_object_registry_remove_and_unlock (DBusObjectRegistry *registry, + const DBusObjectID *object_id) +{ + DBusObjectInfo info; + DBusObjectEntry *entry; + const DBusObjectVTable *vtable; + + entry = validate_id (registry, object_id); + if (entry == NULL) + { + _dbus_warn ("Tried to unregister a nonexistent D-BUS object ID\n"); + return; + } + + info_from_entry (registry, &info, entry); + vtable = entry->vtable; + entry->vtable = NULL; + entry->object_impl = NULL; + registry->n_entries_used -= 1; + + /* Drop lock and invoke application code */ + _dbus_connection_unlock (registry->connection); + + (* vtable->unregistered) (&info); +} + +void +_dbus_object_registry_handle_and_unlock (DBusObjectRegistry *registry, + DBusMessage *message) +{ + /* FIXME */ +} + +void +_dbus_object_registry_free_all_unlocked (DBusObjectRegistry *registry) +{ + int i; + + i = 0; + while (registry->n_entries_used > 0) + { + _dbus_assert (i < registry->n_entries_allocated); + if (registry->entries[i].vtable != NULL) + { + DBusObjectInfo info; + const DBusObjectVTable *vtable; + + info_from_entry (registry, &info, ®istry->entries[i]); + vtable = registry->entries[i].vtable; + registry->entries[i].vtable = NULL; + registry->entries[i].object_impl = NULL; + registry->n_entries_used -= 1; + _dbus_assert (registry->n_entries_used >= 0); + + (* vtable->unregistered) (&info); + } + + ++i; + } + + _dbus_assert (registry->n_entries_used == 0); +} + +/** @} */ + +#ifdef DBUS_BUILD_TESTS +#include "dbus-test.h" +#include + +/** + * @ingroup DBusObjectRegistry + * Unit test for DBusObjectRegistry + * @returns #TRUE on success. + */ +dbus_bool_t +_dbus_object_registry_test (void) +{ + + + return TRUE; +} + +#endif /* DBUS_BUILD_TESTS */ diff --git a/dbus/dbus-object-registry.h b/dbus/dbus-object-registry.h new file mode 100644 index 00000000..d33664e5 --- /dev/null +++ b/dbus/dbus-object-registry.h @@ -0,0 +1,50 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-object-registry.h DBusObjectRegistry (internals of DBusConnection) + * + * 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 + * + */ +#ifndef DBUS_OBJECT_REGISTRY_H +#define DBUS_OBJECT_REGISTRY_H + +#include + +DBUS_BEGIN_DECLS; + +typedef struct DBusObjectRegistry DBusObjectRegistry; + +DBusObjectRegistry* _dbus_object_registry_new (DBusConnection *connection); +void _dbus_object_registry_ref (DBusObjectRegistry *registry); +void _dbus_object_registry_unref (DBusObjectRegistry *registry); + +dbus_bool_t _dbus_object_registry_add_and_unlock (DBusObjectRegistry *registry, + const char **interfaces, + const DBusObjectVTable *vtable, + void *object_impl, + DBusObjectID *object_id); +void _dbus_object_registry_remove_and_unlock (DBusObjectRegistry *registry, + const DBusObjectID *object_id); +void _dbus_object_registry_handle_and_unlock (DBusObjectRegistry *registry, + DBusMessage *message); +void _dbus_object_registry_free_all_unlocked (DBusObjectRegistry *registry); + + +DBUS_END_DECLS; + +#endif /* DBUS_OBJECT_REGISTRY_H */ diff --git a/dbus/dbus-object.c b/dbus/dbus-object.c new file mode 100644 index 00000000..fdd33dd4 --- /dev/null +++ b/dbus/dbus-object.c @@ -0,0 +1,27 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-object.c DBusObject type + * + * 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 +#include "dbus-internals.h" +#include "dbus-object.h" + diff --git a/dbus/dbus-object.h b/dbus/dbus-object.h new file mode 100644 index 00000000..0c92776d --- /dev/null +++ b/dbus/dbus-object.h @@ -0,0 +1,85 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-object.h DBusObject type + * + * 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 + * + */ +#if !defined (DBUS_INSIDE_DBUS_H) && !defined (DBUS_COMPILATION) +#error "Only can be included directly, this file may disappear or change contents." +#endif + +#ifndef DBUS_OBJECT_H +#define DBUS_OBJECT_H + +#include +#include +#include +#include + +DBUS_BEGIN_DECLS; + +typedef struct DBusObjectVTable DBusObjectVTable; +typedef struct DBusObjectInfo DBusObjectInfo; +typedef struct DBusCallbackObject DBusCallbackObject; + +struct DBusObjectInfo +{ + void *object_impl; + DBusObjectID object_id; + DBusConnection *connection; +}; + +typedef void (* DBusObjectRegisteredFunction) (DBusObjectInfo *info); +typedef void (* DBusObjectUnregisteredFunction) (DBusObjectInfo *info); +typedef void (* DBusObjectMessageFunction) (DBusObjectInfo *info, + DBusMessage *message); + +struct DBusObjectVTable +{ + DBusObjectRegisteredFunction registered; + DBusObjectUnregisteredFunction unregistered; + DBusObjectMessageFunction message; +}; + +dbus_bool_t dbus_connection_register_object (DBusConnection *connection, + const char **interfaces, + const DBusObjectVTable *vtable, + void *object_impl, + DBusObjectID *object_id); +void dbus_connection_unregister_object (DBusConnection *connection, + const DBusObjectID *object_id); + +extern const DBusObjectVTable *dbus_callback_object_vtable; + +DBusCallbackObject* dbus_callback_object_new (DBusObjectMessageFunction function, + void *user_data, + DBusFreeFunction free_user_data); +void dbus_callback_object_ref (DBusCallbackObject *handler); +void dbus_callback_object_unref (DBusCallbackObject *handler); +void* dbus_callback_object_get_data (DBusCallbackObject *handler); +void dbus_callback_object_set_data (DBusCallbackObject *handler, + void *data, + DBusFreeFunction free_user_data); +void dbus_callback_object_set_function (DBusCallbackObject *handler, + DBusObjectMessageFunction function); + + +DBUS_END_DECLS; + +#endif /* DBUS_OBJECT_H */ diff --git a/dbus/dbus-objectid.h b/dbus/dbus-objectid.h index 57346910..b5e1f606 100644 --- a/dbus/dbus-objectid.h +++ b/dbus/dbus-objectid.h @@ -30,6 +30,8 @@ #include #include +DBUS_BEGIN_DECLS; + typedef struct DBusObjectID DBusObjectID; struct DBusObjectID @@ -58,4 +60,6 @@ void dbus_object_id_set_as_integer (DBusObjectID *obj_id dbus_uint64_t value); #endif +DBUS_END_DECLS; + #endif /* DBUS_OBJECTID_H */ diff --git a/dbus/dbus-test.c b/dbus/dbus-test.c index 3d5d14bb..220961c7 100644 --- a/dbus/dbus-test.c +++ b/dbus/dbus-test.c @@ -105,6 +105,12 @@ dbus_internal_do_not_use_run_tests (const char *test_data_dir) die ("object ID"); check_memleaks (); + + printf ("%s: running object registry tests\n", "dbus-test"); + if (!_dbus_object_registry_test ()) + die ("object registry"); + + check_memleaks (); printf ("%s: running marshalling tests\n", "dbus-test"); if (!_dbus_marshal_test ()) diff --git a/dbus/dbus-test.h b/dbus/dbus-test.h index 512cb9a6..c9555e2d 100644 --- a/dbus/dbus-test.h +++ b/dbus/dbus-test.h @@ -54,6 +54,7 @@ dbus_bool_t _dbus_spawn_test (const char *test_data_dir); dbus_bool_t _dbus_userdb_test (const char *test_data_dir); dbus_bool_t _dbus_memory_test (void); dbus_bool_t _dbus_object_id_test (void); +dbus_bool_t _dbus_object_registry_test (void); void dbus_internal_do_not_use_run_tests (const char *test_data_dir); diff --git a/dbus/dbus.h b/dbus/dbus.h index 38db4f5b..d83a4a50 100644 --- a/dbus/dbus.h +++ b/dbus/dbus.h @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include -- cgit v1.2.1