2003-03-27 Havoc Pennington <hp@redhat.com>
[platform/upstream/dbus.git] / ChangeLog
index d0d5814..8981335 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2003-03-27  Havoc Pennington  <hp@redhat.com>
+
+       * bus/config-loader-libxml.c (bus_config_load): add another error
+       check
+
+2003-03-26  Anders Carlsson  <andersca@codefactory.se>
+
+       * 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  <andersca@codefactory.se>
+
+       * Doxyfile.in:
+       * dbus/dbus-address.c:
+       * dbus/dbus-dict.c:
+       * dbus/dbus-marshal.c:
+       * dbus/dbus-server-debug-pipe.c:
+       * dbus/dbus-transport-unix.c:
+       Fix documentation warnings.
+       
+2003-03-26  Havoc Pennington  <hp@pobox.com>
+
+       * bus/test-main.c, dbus/dbus-test.c (main): check memleaks
+       after every test so it's quick and easy to see which leaked, and
+       so we test multiple dbus_shutdown() calls
+
+       * configure.in: change configure.in XML stuff to also support
+       expat
+
+       * config-loader-libxml.c: some hacking
+
+       * config-loader-expat.c: some hacking
+
+       * config-parser.c: some hacking, plus tests
+
+2003-03-25  Havoc Pennington  <hp@redhat.com>
+
+        * 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 
+       nonworking code between home and work, still just stubs
+
+2003-03-24  Havoc Pennington  <hp@redhat.com>
+
+       * 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, 
+       fill in a generic message in this case.
+
+       * dbus/dbus-errors.h (DBusResultCode): Kill DBusResultCode in
+       favor of DBusError
+
+       * bus/test.c (bus_test_flush_bus): add
+
+       * bus/policy.c (bus_policy_test): test code stub
+
+2003-03-24  Havoc Pennington  <hp@pobox.com>
+
+       * 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  <hp@pobox.com>
+
+       * 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, 
+       to simplify fitting it into the global slots framework.
+
+       * dbus/dbus-threads.c (init_static_locks): rework how we're
+       handling global locks so they are easily shut down.
+
+       * bus/policy.c (bus_policy_append_rule): fix
+
+       * bus/test-main.c (main): check for memleaks
+
+       * 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 
+       number of outstanding blocks
+
+2003-03-23  Havoc Pennington  <hp@pobox.com>
+
+       * 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
+       (_dbus_get_group_id): new function
+
+2003-03-20  Havoc Pennington  <hp@redhat.com>
+
+       * dbus/dbus-connection.c (dbus_connection_set_unix_user_function):
+       new function
+       (dbus_connection_get_unix_user): new function
+
+2003-03-20  Havoc Pennington  <hp@pobox.com>
+
+       * bus/connection.c (bus_connection_send_oom_error): assert that
+       message has a sender
+       (connection_execute_transaction): ditto
+       (bus_connection_preallocate_oom_error): fix to set the sender, and
+       set recipient to the destination service, not the bus driver
+
+       * bus/policy.c: hacking
+
+       * dbus/dbus-message.c (dbus_message_service_is): new function
+       (dbus_message_sender_is): new
+
+2003-03-19  Havoc Pennington  <hp@redhat.com>
+
+       * bus/policy.c: start sketching code for policy restrictions on 
+       what connections can do.
+
+2003-03-18  Havoc Pennington  <hp@redhat.com>
+
+       * doc/TODO: some notes on high-level todo items. Little nitpick
+       stuff is all in @todo, so no need to add it here.
+
+       * doc/config-file.txt: some notes on how config file might look
+
+2003-03-18  Anders Carlsson  <andersca@codefactory.se>
+
+       * configure.in: 0.6
+
+       * NEWS: Update.
+       
+2003-03-17  Havoc Pennington  <hp@redhat.com>
+
+       * 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 
+       format bug
+
+       * dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
+       printf format bug
+
+2003-03-17  Havoc Pennington  <hp@redhat.com>
+
+       * 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 
+       from CVS, now obsolete
+
+2003-03-17  Anders Carlsson  <andersca@codefactory.se>
+
+       * 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  <hp@pobox.com>
+
+       All tests pass, no memleaks, no valgrind complaints.
+       
+       * bus/test.c: refcount handler_slot
+
+       * bus/connection.c (bus_connections_new): refcount
+       connection_data_slot
+
+       * dbus/dbus-auth-script.c (_dbus_auth_script_run): delete unused
+       bytes so that auth scripts pass.
+
+       * bus/dispatch.c: init message_handler_slot so it gets allocated
+       properly
+
+       * bus/dispatch.c (message_handler_slot_ref): fix memleak
+
+       * dbus/dbus-server-debug-pipe.c (_dbus_server_debug_pipe_new):
+       dealloc server_pipe_hash when no longer used for benefit of
+       leak checking
+
+       * dbus/dbus-auth.c (process_command): memleak fix
+
+       * bus/dispatch.c (check_hello_message): memleak fix
+
+2003-03-16  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-bus.c (ensure_bus_data): fix double-unref of the data slot
+
+2003-03-17  Anders Carlsson  <andersca@codefactory.se>
+
+       * bus/activation.c (bus_activation_activate_service): Append
+       the pending activation entry to the list of pending activations.
+
+2003-03-16  Havoc Pennington  <hp@pobox.com>
+
+       * bus/dispatch.c (bus_dispatch_test): remove double-unrefs of
+       connections
+
+       * dbus/dbus-address.c (create_entry): fix OOM handling when
+       failing to alloc entry->method
+
+2003-03-16  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
+       the watch
+
+       * 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 
+       alloc the DBusMessageHandler
+
+       * dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
+       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, 
+       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 
+       watch handling
+       
+       * dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
+       reference to unused bytes instead of a copy
+
+       * dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
+       out of memory
+
+       * dbus/dbus-connection.c (dbus_connection_handle_watch): return
+       FALSE on OOM
+
+       * dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
+       of memory
+
+2003-03-16  Anders Carlsson  <andersca@codefactory.se>
+
+       * doc/dbus-specification.sgml:
+       Document reply message for ActivateService.
+       
+2003-03-16  Anders Carlsson  <andersca@codefactory.se>
+
+       * bus/activation.c: (bus_pending_activation_entry_free),
+       (bus_pending_activation_free), (bus_activation_new),
+       (bus_activation_unref), (bus_activation_service_created),
+       (bus_activation_activate_service):
+       * bus/activation.h:
+       * bus/bus.c: (bus_context_new):
+       * bus/desktop-file.c: (new_section):
+       * bus/driver.c: (bus_driver_send_service_deleted),
+       (bus_driver_handle_activate_service):
+       * bus/services.c: (bus_registry_new), (bus_registry_ensure):
+       * bus/services.h:
+       * dbus/dbus-connection.c:
+       (dbus_connection_send_with_reply_and_block):
+       * dbus/dbus-message.c: (dbus_message_append_args_valist):
+       * 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  <hp@pobox.com>
+
+       * dbus/dbus-bus.c (ensure_bus_data): handle failure to set
+       connection data
+
+       * dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
+       DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
+
+2003-03-16  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
+       this. always run the test suite before commit...
+
+       * bus/*: adapt to DBusConnection API changes
+
+       * 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
+       function
+
+       * dbus/dbus-message.c (_dbus_message_loader_queue_messages):
+       separate from _dbus_message_loader_return_buffer()
+
+       * dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
+       this, because it's now always broken to use; the number of
+       messages in queue vs. the number still buffered by the message
+       loader is undefined/meaningless. Should use
+       dbus_connection_get_dispatch_state().
+       (dbus_connection_dispatch): rename from
+       dbus_connection_dispatch_message
+
+2003-03-16  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
+       implementation
+
+2003-03-16  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/dbus-connection.c:
+       (dbus_connection_send_with_reply_and_block):
+       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),
+       (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
+       (dbus_dict_set_byte_array), (dbus_dict_set_string_array),
+       (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),
+       (_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
+       (_dbus_demarshal_dict), (demarshal_and_validate_len),
+       (_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),
+       (dbus_message_iter_get_boolean_array),
+       (dbus_message_iter_get_int32_array),
+       (dbus_message_iter_get_uint32_array),
+       (dbus_message_iter_get_double_array),
+       (dbus_message_iter_get_byte_array),
+       (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  <hp@pobox.com>
+
+       * dbus/dbus-connection.c
+       (_dbus_connection_queue_received_message_link): new function that
+       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 
+       containing it.
+
+       * dbus/dbus-transport-unix.c (queue_messages): use new link-based
+       message queuing functions to avoid needing to alloc memory
+
+2003-03-16  Havoc Pennington  <hp@pobox.com>
+
+       Oops - test code was only testing failure of around 30 of the
+       mallocs in the test path, but it turns out there are 500+
+       mallocs. I believe this was due to misguided linking setup such
+       that there was one copy of dbus_malloc etc. in the daemon and one
+       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 
+       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 
+       were two copies of global static variables.
+
+       * 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
+       empty.
+
+       * dbus/dbus-memory.c (_dbus_disable_mem_pools): new function
+
+       * dbus/dbus-address.c (dbus_parse_address): free list nodes
+       on failure.
+
+       * bus/dispatch.c (bus_dispatch_add_connection): free
+       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_connections_setup_connection fails.
+
+       * 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
+       effects.
+
+       * dbus/dbus-string.c (undo_alignment): unbreak this
+
+       * dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
+       leaking
+       (_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 
+       allocation failure
+
+       * dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
+       get the base service name
+       (dbus_bus_register_client): don't return base service name,
+       instead store it on the DBusConnection and have an accessor
+       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 
+       just the one sending hello
+
+2003-03-15  Havoc Pennington  <hp@pobox.com>
+
+       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 
+       a connection's owned services if we fail to put the service
+       in the hash table.
+
+       * bus/connection.c (bus_connection_preallocate_oom_error): set
+       error flag on the OOM error.
+
+       * dbus/dbus-connection.c (_dbus_connection_new_for_transport):
+       handle _dbus_transport_set_connection failure
+
+       * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
+       to create watches up front and simply enable/disable them as
+       needed.
+       (unix_connection_set): this can now fail on OOM
+
+       * 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
+       watches/timeouts
+
+       * glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
+
+2003-03-15  Havoc Pennington  <hp@pobox.com>
+
+       * bus/dispatch.c (bus_dispatch_test): OK, now finally actually
+       write useful test code, after all that futzing around ;-)
+
+       Test does not yet pass because we can't handle OOM in
+       _dbus_transport_messages_pending (basically,
+       dbus_connection_preallocate_send() does not prealloc the write
+       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 
+       distinct from stuff in connection.c. Handle client disconnection.
+
+2003-03-14  Havoc Pennington  <hp@pobox.com>
+
+       * 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 
+       "clients" on the main loop
+
+       * dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe 
+       support
+
+       * 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  <hp@redhat.com>
+
+       * 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 
+       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 
+       after running it
+
+       * 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, 
+       not quite passing yet
+
+2003-03-14  Havoc Pennington  <hp@pobox.com>
+
+       * bus/loop.c (bus_loop_iterate): add this so we can "run loop
+       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 
+       after adding it (right?)
+
+       * dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
+       
+2003-03-13  Havoc Pennington  <hp@redhat.com>
+
+       * dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
+       out of memory
+
+       * dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
+       of memory
+
+       * dbus/dbus-connection.h: Make AddWatchFunction and
+       AddTimeoutFunction return a bool so they can fail on out-of-memory
+
+       * bus/bus.c (bus_context_new): set up timeout handlers
+
+       * bus/connection.c (bus_connections_setup_connection): set up
+       timeout handlers
+
+       * glib/dbus-gmain.c: adapt to the fact that set_functions stuff
+       can fail
+
+       * bus/bus.c (bus_context_new): adapt to changes
+
+       * bus/connection.c: adapt to changes
+
+       * test/watch.c: adapt to DBusWatch changes
+
+       * bus/dispatch.c (bus_dispatch_test): started adding this but
+       didn't finish
+       
+2003-03-14  Anders Carlsson  <andersca@codefactory.se>
+
+       * bus/dispatch.c (send_service_nonexistent_error): Fix typo.
+
+2003-03-13  Havoc Pennington  <hp@pobox.com>
+
+       * 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  <hp@pobox.com>
+
+       Throughout: purge global variables, introduce BusActivation, 
+       BusConnections, BusRegistry, etc. objects instead.
+       
+       * bus/bus.h, bus/bus.c: introduce BusContext as a global 
+       message bus object
+
+       * test/Makefile.am (TEST_BINARIES): disable bus-test for now, 
+       going to redo this a bit differently I think
+       
+2003-03-12  Havoc Pennington  <hp@redhat.com>
+
+        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
+       (dbus_connection_send_with_reply_and_block): use DBusError
+
+       * dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
+       DBusResultCode
+
+       * dbus/dbus-connection.c (dbus_connection_send): drop the result
+       code here, as the only failure possible is OOM.
+
+       * bus/connection.c (bus_connection_disconnect):
+       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; 
+       don't disconnect client for bad args, just return an error.
+       (bus_driver_handle_service_exists): ditto
+
+       * bus/services.c (bus_services_list): NULL-terminate returned array
+
+       * bus/driver.c (bus_driver_send_service_lost)
+       (bus_driver_send_service_acquired): send messages from driver to a
+       specific client to the client's unique name, not to the broadcast
+       service.
+
+       * dbus/dbus-message.c (decode_header_data): reject messages that
+       contain no name field
+       (_dbus_message_get_client_serial): rename to
+       dbus_message_get_serial and make public
+       (_dbus_message_set_serial): rename from set_client_serial
+       (_dbus_message_set_reply_serial): make public
+       (_dbus_message_get_reply_serial): make public
+
+       * 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_connection_preallocate_send): new API for sending a message
+       without possibility of malloc failure.
+       (dbus_connection_send_message): rename to just
+       dbus_connection_send (and same for whole function family)
+
+       * dbus/dbus-errors.c (dbus_error_free): make this reinit the error
+
+       * dbus/dbus-sysdeps.c (_dbus_exit): new function
+
+       * bus/activation.c: handle/return errors
+
+       * dbus/dbus-errors.h: add more DBUS_ERROR #define
+
+       * dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
+       (_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
+       (_dbus_result_from_errno): move to this file
+
+2003-03-10  Anders Carlsson  <andersca@codefactory.se>
+
+       * 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:  
+       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),
+       (check_message_handling), (check_have_valid_message):
+       * dbus/dbus-message.h:
+       Add functions for setting and getting dicts.
+
+       * 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:
+       * test/data/valid-messages/dict.message:
+       Add sample messages containing dicts.
+
+2003-03-08  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/dbus-dict.h: Add DBUS_END_DECLS.
+
+2003-03-07  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/Makefile.am:
+       * dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
+       (dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
+       (dbus_dict_set_int32), (dbus_dict_set_uint32),
+       (dbus_dict_set_double), (dbus_dict_set_string),
+       (dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
+       (dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
+       (dbus_dict_set_string_array), (_dbus_dict_test):
+       * dbus/dbus-dict.h:
+       Fix according to comments from Havoc.
+       
+2003-03-06  Michael Meeks  <michael@server.home>
+
+       * configure.in: if we don't have kde-config, disable have_qt.
+
+2003-03-07  Anders Carlsson  <andersca@codefactory.se>
+
+       * 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),
+       (dbus_dict_get_keys), (dbus_dict_put_boolean),
+       (dbus_dict_put_int32), (dbus_dict_put_uint32),
+       (dbus_dict_put_double), (dbus_dict_put_string),
+       (dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
+       (dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
+       (dbus_dict_put_string_array), (dbus_dict_get_boolean),
+       (dbus_dict_get_int32), (dbus_dict_get_uint32),
+       (dbus_dict_get_double), (dbus_dict_get_string),
+       (dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
+       (dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
+       (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  <hp@pobox.com>
+
+       * test/data/auth/*: adapt to changes
+
+       * dbus/dbus-auth-script.c (_dbus_auth_script_run): add
+       USERID_BASE64 and change USERNAME_BASE64 to put in username not
+       userid
+
+       * dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
+       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 
+       with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1
+       
+       * dbus/dbus-connection.c (dbus_connection_flush): also read
+       messages during a flush operation
+
+       * dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
+
+2003-03-05  Anders Carlsson  <andersca@codefactory.se>
+
+       * configure.in: Check for gethostbyname on Solaris.
+
+       * dbus/dbus-transport.c: (_dbus_transport_open):
+       Remove duplicate "tcp" entry.
+       
+       * doc/dbus-specification.sgml:
+       Clarify some things.
+       
+2003-03-05  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
+       * dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
+       (_dbus_keyring_test):
+       * dbus/dbus-md5.c: (_dbus_md5_compute):
+       * dbus/dbus-sha.c: (_dbus_sha_compute):
+       Plug memory leaks.
+
+2003-03-05  Anders Carlsson  <andersca@codefactory.se>
+
+       * README: Add some things.
+
+2003-03-04  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
+       after case DBUS_TYPE_BOOELAN.
+
+2003-03-02  Havoc Pennington  <hp@pobox.com>
+
+       * test/break-loader.c (randomly_set_extreme_ints): add test that
+       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 
+       string has room for boolean value in single-bool case.
+
+       * dbus/dbus-message-builder.c (_dbus_message_data_load): add
+       optional value to "ALIGN" command which is what to fill the
+       alignment with.
+
+       * test/data/valid-messages/no-padding.message: add regression
+       test for the message padding problem
+
+2003-03-02  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-message.c (decode_header_data): fix to always init
+       message_padding, from Benjamin Dauvergne
+
+2003-03-02  Havoc Pennington  <hp@pobox.com>
+
+       * configure.in: 0.5
+
+       * NEWS: Update.
+
+2003-03-01  Joe Shaw  <joe@assbarn.com>
+
+       * configure.in: Check for "struct cmsgcred" and try to access its
+       members for BSD-like unices.
+
+       * dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
+       _dbus_read_credentials_unix_socket().
+       (_dbus_read_credentials_unix_socket): Use recvmsg() instead of
+       read() for reading the credential byte off the unix socket.  Use
+       struct cmsgcred on systems that support it.
+
+2003-02-27  Alexander Larsson  <alexl@redhat.com>
+
+       * glib/Makefile.am: 
+       * configure.in:
+       Make gthreads-2.0 dependency optional. Don't build thread test if
+       its not found.
+
+2003-02-27  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-connection.c
+       (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  <hp@pobox.com>
+
+       * dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
+       more inlined, using dbus-string-private.h, speeds things up 
+       substantially
+
+       * dbus/dbus-string.c (_dbus_string_free): apply align offset
+       when freeing the string
+       (_dbus_string_steal_data): fix for align offset
+       (undo_alignment): new function
+
+2003-02-26  Havoc Pennington  <hp@redhat.com>
+
+        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 
+       leave room for align_offset and nul byte
+       (fixup_alignment): function to track an align_offset and 
+       ensure real->str is aligned
+       (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, 
+       assign allocated to be ALLOCATION_PADDING larger than len
+       (set_length): fixup the overflow handling
+       (_dbus_string_get_data_len): fix overflow in assertion
+       (open_gap): detect overflow in size of gap to be opened
+       (_dbus_string_lengthen): add overflow check
+       (_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
+       (_dbus_string_append): add overflow check
+       (_dbus_string_append_unichar): overflow
+       (_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_to
+       (_dbus_string_find_to): assorted fixage
+       (_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  <hp@redhat.com>
+
+       * dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
+
+2003-02-26  Alexander Larsson  <alexl@redhat.com>
+
+       * 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.h:
+       Initial cut at some thread test code. Not really done yet.
+
+2003-02-26  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-connection.c
+       (dbus_connection_send_message_with_reply_and_block): fix crash
+       where we ref'd the outgoing message instead of the returned reply
+
+       * dbus/dbus-transport-unix.c (do_authentication): check read watch
+       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 
+       a NULL sender for peer-to-peer case
+
+       * dbus/dbus-transport-unix.c (check_read_watch): handle
+       !authenticated case correctly
+
+       * glib/dbus-gmain.c: add support for DBusServer
+
+       * dbus/dbus-server.c: add data slot support
+
+       * glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
+       return values and handle errors
+
+       * dbus/dbus-dataslot.c: factor out the data slot stuff from
+       DBusConnection
+
+       * Doxyfile.in (INPUT): add glib subdir
+
+       * 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  <andersca@codefactory.se>
+
+       * dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
+       * dbus/dbus-message-builder.c: (_dbus_message_data_load):
+       * dbus/dbus-message.c: (dbus_message_append_boolean),
+       (dbus_message_append_boolean_array),
+       (dbus_message_get_args_valist), (_dbus_message_test):
+       * 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  <andersca@codefactory.se>
+
+       * dbus/dbus-internals.c: (_dbus_type_to_string):
+       * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
+       (_dbus_marshal_validate_arg):
+       * dbus/dbus-message-builder.c: (_dbus_message_data_load):
+       * dbus/dbus-message.c: (dbus_message_append_args_valist),
+       (dbus_message_append_boolean), (dbus_message_append_boolean_array),
+       (dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
+       (dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
+       (dbus_message_iter_get_double),
+       (dbus_message_iter_get_boolean_array), (message_iter_test):
+       * dbus/dbus-message.h:
+       * dbus/dbus-protocol.h:
+       * 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  <hp@pobox.com>
+
+       * 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
+       these barf if the error isn't cleared to NULL
+
+       * dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
+       (_dbus_create_directory): new function
+
+       * dbus/dbus-errors.c (dbus_set_error): fix warning
+
+       * dbus/dbus-string.c (_dbus_string_hex_encode): new function
+       (_dbus_string_hex_decode): new function
+       (test_hex_roundtrip): test code
+
+       * dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode
+
+       * dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode
+
+       * 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
+
+2003-02-22  Havoc Pennington  <hp@pobox.com>
+
+       * test/Makefile.am (dist-hook): fix dist for test/data/sha-1
+
+2003-02-22  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-message.c (dbus_message_iter_get_string_array):
+       (dbus_message_iter_get_byte_array): Fix up doxygen warnings
+
+       * dbus/dbus-sha.c: add implementation of SHA-1 algorithm
+
+       * dbus/test/data/sha-1: add US government test suite for SHA-1
+
+2003-02-21  Anders Carlsson  <andersca@codefactory.se>
+
+       * 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  <andersca@codefactory.se>
+
+       * dbus/dbus-message.c: (dbus_message_append_nil),
+       (dbus_message_append_int32), (dbus_message_append_uint32),
+       (dbus_message_append_double), (dbus_message_append_string),
+       (dbus_message_append_int32_array),
+       (dbus_message_append_uint32_array),
+       (dbus_message_append_double_array),
+       (dbus_message_append_byte_array),
+       (dbus_message_append_string_array):
+       Fix all out-of-memory handling in these functions.
+
+2003-02-21  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/dbus-message.c: (dbus_message_append_nil):
+       Fix a silly.
+       
+2003-02-21  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/dbus-message.c: (dbus_message_append_args_valist),
+       (dbus_message_append_nil), (dbus_message_append_int32_array),
+       (dbus_message_append_uint32_array),
+       (dbus_message_append_double_array),
+       (dbus_message_append_byte_array),
+       (dbus_message_append_string_array), (dbus_message_get_args_valist),
+       (dbus_message_iter_get_int32_array),
+       (dbus_message_iter_get_uint32_array),
+       (dbus_message_iter_get_double_array),
+       (dbus_message_iter_get_byte_array),
+       (dbus_message_iter_get_string_array):
+
+       * dbus/dbus-message.h:
+       Add functions for appending and getting arrays.
+       
+2003-02-21  Anders Carlsson  <andersca@codefactory.se>
+
+       * dbus/dbus-mempool.c (_dbus_mem_pool_new): Make the
+       element size at least 8 bytes, fixes mempool tests on
+       64-bit machines.
+
+2003-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * dbus/dbus-transport-unix.c (unix_do_iteration):
+       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.c:
+       Add _dbus_connection_lock and _dbus_connection_unlock.
+
+2003-02-19  Havoc Pennington  <hp@pobox.com>
+
+       * Doxyfile.in (PREDEFINED): put DOXYGEN_SHOULD_SKIP_THIS in
+       Doxyfile.in, not Doxyfile
+
+       * dbus/dbus-keyring.c: do some hacking on this
+
+       * dbus/dbus-sysdeps.c (_dbus_delete_file): new
+
+       * 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 
+       system headers in this file
+
+       * dbus/dbus-sysdeps.c (_dbus_create_file_exclusively): new
+
+       * 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 
+       or user ID
+       (_dbus_homedir_from_username): new function
+
+2003-02-19  Anders Carlsson  <andersca@codefactory.se>
+
+       * 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  <micke@codefactory.se>
+
+       * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
+
+       * 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
+       to a tcp socket at given host and port.
+       (_dbus_listen_tcp_socket): added to listen on tcp socket for given
+       hostname and port.
+
+       * dbus/dbus-server.c (dbus_server_listen): Support tcp: addresses.
+
+       * 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  <hp@pobox.com>
+
+       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.
+
+       * dbus/dbus-threads.c: move global mutex initializers to
+       dbus-internals.h, multiple prototypes was confusing doxygen
+       besides being kind of ugly
+
+       * Doxyfile (PREDEFINED): have Doxygen define
+       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 
+       documenting...)
+
+2003-02-18  Havoc Pennington  <hp@pobox.com>
+
+       * dbus/dbus-string.c (_dbus_string_zero): new function
+
+       * dbus/dbus-md5.c: include MD5 implementation by L. Peter Deutsch,
+       wrap it in some dbus-friendly API
+
+       * dbus/dbus-types.h: add 16-bit types
+
+2003-02-18  Joe Shaw  <joe@assbarn.com>
+
+       * dbus/dbus-auth.c (handle_server_data_stupid_test_mech): Just get
+       credentials from our currently running process.
+       (get_word): Fix a buglet where we were copying the entire length
+       instead of relative to our position.
+
+       * dbus/dbus-hash.c (_dbus_hash_test): Don't try to allocate the
+       keys on the stack... it's 640k of data.
+
+       * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): Always
+       read the credentials byte off the socket, even if we don't have
+       SO_PEERCRED.
+       (_dbus_poll): Implement poll() using select() for systems which
+       don't have it.
+
+       * glib/test-dbus-glib.c (main): Print out an error if no
+       parameters are given.
+
+       * test/data/auth/fallback.auth-script: Added.  Tests that a client
+       can fallback to a secondary auth mechanism if the first fails.
+
+2003-02-18  Havoc Pennington  <hp@pobox.com>
+
+       * AUTHORS: add Alex
+
+2003-02-17  Havoc Pennington  <hp@pobox.com>
+
+       * doc/dbus-specification.sgml: lots of cosmetic
+       cleanups/rearrangement, add assorted FIXME, change DBUS_ADDRESS
+       env variable to DBUS_BUS_ADDRESS, s/client/application/,
+       s/server/bus/ (except in authentication section). Add a section
+       "Message Bus Message Routing"
+
+2003-02-17  Anders Carlsson  <andersca@codefactory.se.>
+
+       Release 0.4
+       
+       * NEWS: Update
+
+2003-02-17  Anders Carlsson  <andersca@codefactory.se>
+
+       * doc/dbus-specification.sgml:
+       Specification updates.
+       
+2003-02-17  Anders Carlsson  <andersca@codefactory.se>
+
+       * bus/activation.c: (bus_activation_init), (child_setup),
+       (bus_activation_activate_service):
+       * 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  <alexl@redhat.com>
+
+       * dbus/dbus-connection.c (_dbus_connection_handler_destroyed_locked):
+       Added todo.
+
 2003-02-17  Anders Carlsson  <andersca@codefactory.se>
 
        * doc/.cvsignore: