2006-11-09  John (J5) Palmieri  <johnp@redhat.com>

	* Released 1.0.0

2006-11-09  John (J5) Palmieri  <johnp@redhat.com>

	* AUTHORS: added Peter and Tor of windows porting fame

2006-11-08  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: add a note about protocol stability

	* doc/TODO: Remove "important for 1.0" section, replace with
	"important for 1.2" section
	
2006-11-08  John (J5) Palmieri  <johnp@redhat.com>

	* README: remove some of the out of date flags

	* doc/TODO: Remove todo items which are done

2006-11-08  John (J5) Palmieri  <johnp@redhat.com>

	* tools/dbus-monitor.c: Handle sigint so we flush stdout
	(Patch from Olli Salli <olli dot salli at collabora dot co dot uk>)

2006-11-08  John (J5) Palmieri  <johnp@redhat.com>

	* tools/dbus-monitor.1: update the manpage for dbus-monitor
	(Patch from Olli Salli <olli dot salli at collabora dot co dot uk>)

2006-11-08  John (J5) Palmieri  <johnp@redhat.com>

	* AUTHORS: Update with all people listed in the ChangeLog

2006-11-08  John (J5) Palmieri  <johnp@redhat.com>

	* tools/dbus-monitor.c: add profiling tools to dbus-monitor
	(Patch from Olli Salli <olli dot salli at collabora dot co dot uk>)

2006-11-07  Havoc Pennington  <hp@redhat.com>

	* HACKING: Update release instructions to include stuff about
	stable releases, branching, etc. May not be totally correct,
	please fix if needed, but keep instructions up-to-date so we do
	each stable release consistently in the future.

2006-11-07  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml, doc/dbus-faq.xml, README: various
	documentation updates. Bump faq/spec versions (not to 1.0; I don't
	think the spec will be "finished"/1.0 when we ship the 1.0 library).

2006-11-06  John (J5) Palmieri  <johnp@redhat.com>

	* bus/bus.c: Missed patch - pass in the context to the directory watch

2006-11-02  John (J5) Palmieri  <johnp@redhat.com>

	* Released D-Bus 1.0 RC 3(0.95)

2006-11-02  John (J5) Palmieri  <johnp@redhat.com>

	* bus/activation.c (bus_activation_new): don't fail if we can not read
	the directory as it may not exist

2006-11-02  John (J5) Palmieri  <johnp@redhat.com>

	* bus/config-parser.c (service_dirs_find_dir): use 
	_dbus_list_get_next_link so we don't get stuck in an infinite loop
	(start_busconfig_child): move processing of standard_session_servicedirs
	tags here because they have no content
	(bus_config_parser_content): check we don't have content in 
	standard_session_servicedirs tag

2006-11-02  John (J5) Palmieri  <johnp@redhat.com>

	* tools/Makefile.am: Make sure the /var/lib/dbus directory is created
	Packagers need to own this directory

2006-11-02  John (J5) Palmieri  <johnp@redhat.com>

	* tools/run-with-tmp-session-bus.sh: fixed script to replace the 
	<standard_session_servicedirs> tag with a <sevicedir> tag that
	points to the test service directory

2006-11-02  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Add a check for DIR *dirp->dd_fd

	* dbus/dbus-sysdeps-util-unix: if HAVE_DDFD is defined use 
	DIR *dirp->dd_fd else use DIR *dirp->__dd_fd.  This takes care
	of both Solaris and Irix

2006-11-01  Havoc Pennington  <hp@redhat.com>

	* bus/dbus-daemon.1.in: document standard_session_servicedirs

2006-11-01  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: expose DBUS_DATADIR
	
	* bus/config-parser.c: add the standard_session_servicedirs element
	to the parser
	(bus_config_parser_content): process the standard_session_servicedirs
	element by getting the standard directories from sysdeps and merging
	them into the service directory list
	(test_default_session_servicedirs): make sure we get what we expect

	* bus/session.conf.in: replace the servicedir tag with the 
	standard_session_servicedirs tag

	* dbus/dbus-list.h: remove the typedef of DBusList and place it in
	dbus-sysdeps.h to avoid circular header dependencies

	* dbus/dbus-sysdeps.h: add the typedef of DBusList

	* dbus/dbus-sysdeps-unix.c (split_paths_and_append): utility function
	which takes a string of directories delimited by colons, parses them 
	out, appends a suffix and puts them in a list ignoring empty elements
	(_dbus_get_standard_session_servicedirs): returns the standard 
	directories for a session bus to look for service activation files
	on Unix which includes the XDG_DATA_HOME, XDG_DATA_DIRS and 
	DBUS_DATADIR directories

	* test/data/valid-config-files/many-rules.conf: add the 
	standard_session_servicedirs tag to the valid config file tests

2006-10-30  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-launch.1, doc/TODO: capture intent to change the
	command line options of dbus-launch a bit post 1.0

2006-10-27  Havoc Pennington  <hp@redhat.com>
	
	* dbus/dbus-connection.c (dbus_connection_open_private): document
	how to choose shared vs. private connections

2006-10-27  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-test.c: enclose more of the file in the
	DBUS_BUILD_TESTS check.

	* dbus/dbus-sysdeps-pthread.c (PTHREAD_CHECK): fix for
	DBUS_DISABLE_ASSERT case.

	* dbus/dbus-connection.c (dbus_connection_get_unix_user): document
	that it only works on the server side

	* dbus/dbus-bus.c: add a global lock covering the BusData we
	attach to each connection
	(internal_bus_get): lock our access to the BusData
	(dbus_bus_register): lock the entire registration process
	with _DBUS_LOCK(bus_datas). If we get the lock and 
	registration is already complete, silently return (vs. previous
	behavior of aborting).
	(dbus_bus_set_unique_name): lock the BusData
	(dbus_bus_get_unique_name): lock the BusData

2006-10-27  John (J5) Palmieri  <johnp@redhat.com>

	* bus/config-parser.c (service_dirs_find_dir, 
	service_dirs_append_unique_or_free, 
	service_dirs_append_link_unique_or_free): New static methods
	for only appending unique service directory names into
	the service directory list
	(merge_included, bus_config_parser_content): Only add unique
	service directory names into the list

2006-10-27  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps-pthread.c: make the "count" and "holder"
	variables volatile, suggested by Thiago. Document struct fields.
	(PTHREAD_CHECK): remove pthread error checking if assertions are
	disabled, should reduce the no-assertions case to the bare
	minimum code.

2006-10-26  Havoc Pennington  <hp@redhat.com>
	
	* dbus/dbus-sysdeps-pthread.c (_dbus_pthread_mutex_lock): change
	to be recursive
	(_dbus_pthread_mutex_unlock): make it recursive
	(_dbus_pthread_condvar_wait): save/restore the recursion count
	(_dbus_pthread_condvar_wait_timeout): save/restore the recursion count

2006-10-26  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: clarify the UUID text slightly

	* dbus/dbus-sysdeps-pthread.c: check for and mostly abort on
	pthread errors. Add DBusMutexPThread and DBusCondVarPThread 
	in preparation for being able to extend them for e.g. recursive
	mutexes.

2006-10-26  Havoc Pennington  <hp@redhat.com>

        * dbus/dbus-threads.[hc]: Documentation improvements. Clarify how 
	condition variables relate to recursive mutexes.
	
        * dbus/dbus-sysdeps-pthread.c, dbus/dbus-sysdeps-win-thread.c, 
	dbus/dbus-threads.c: Split the platforms-specific thread 
	implementations into their own files.
	
	* dbus/dbus-sysdeps-pthread.c
	(_dbus_pthread_condvar_wait_timeout): invert the return value, it
	was backward. Not that anything uses it.

2006-10-26  John (J5) Palmieri  <johnp@redhat.com>

	* dbus-sysdeps-unix.c (_dbus_set_local_creds): Clean up the
	LOCAL_CREDS vs CMSGCRED stuff a bit.  Prefer CMSGCRED.  This
	needs to be cleaned up more.

	* doc/TODO: Add a todo that *BSD hackers should look at cleaning
	up the CREDS issue.

2006-10-26  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in, dbus-1.pc.in: Check to see if thread methods 
	are in glibc or libpthread and add -lpthread to the link stage 
	if it is the latter

2006-10-26  Thiago Macieira  <thiago@kde.org>

	* dbus/dbus-connection.c (_dbus_connection_open_internal): Fix
        bug 8780: the connection lock is only required while recording
        the shared connection, so protect only that code
        section. Don't require connection_lookup_shared to return a
        locked connection.

2006-10-26  Thiago Macieira  <thiago@kde.org>

	* tools/dbus-launch-x11.c (get_session_file, init_x_atoms):
        check if get_machine_uuid() returns NULL before proceeding any
        further: we can't init the X atoms or create a session file
        name if there is no machine ID.
	This solves a crash reported by some users if
        --exit-with-session was used without --autolaunch=<machine-id>

2006-10-26  John (J5) Palmieri  <johnp@redhat.com>

	* tools/dbus-launch.c (main): run the dbus-daemon in the builddir
	if tests are enabled and the DBUS_USE_TEST_BINARY env variable is set

	* tools/run-with-tmp-session-bus.sh: set DBUS_USE_TEST_BINARY
	before we run dbus-launch

	* configure.in: define TEST_BUS_BINARY to be the full path to 
	dbus-daemon in the build root 

2006-10-25  Sjoerd Simons  <sjoerd@luon.net>

	* dbus/Makefile.am:
	* tools/Makefile.am:
	* toos/dbus-uuidgen.1:
		Move the machine-id file to /var/lib/dbus 

2006-10-24  David Zeuthen  <davidz@redhat.com>

	* dbus/dbus-threads.c (init_uninitialized_locks): Fix typo so it's
	_dbus_assert (thread_init_generation != _dbus_current_generation)
	not _dbus_assert (thread_init_generation == _dbus_current_generation)

2006-10-24  Thiago Macieira  <thiago@kde.org>

	* dbus/dbus-sysdeps.h:
	* dbus/dbus-sysdeps-unix.c: Add function
	_dbus_make_file_world_readable that chmods a file to 0644.

	* dbus/dbus-sysdeps-unix.c (_dbus_get_autolaunch_address):
        Avoid writing to the static "argv" array, thereby avoiding a
        COW on the child process.

	* dbus/dbus-internals.c (_dbus_create_uuid_file_exclusively):
        call _dbus_make_file_world_readable on the created file.

2006-10-23  David Zeuthen  <davidz@redhat.com>

	* dbus/dbus-memory.c: Use atomic variable to protect
	n_blocks_outstanding otherwise OOM will be reported using SMP on
	some arches
	
	* bus/dispatch.c: Add missing end of line characters

	* bus/desktop-file.c (parse_section_start, parse_key_value) 
	(bus_desktop_file_load): Propertly handle OOM

	* dbus/dbus-threads.c (init_uninitialized_locks): Check that
	thread_init_generation equals _dbus_current_generation, not 0

2006-10-22  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection-internal.h: move prototype of
	_dbus_bus_notify_shared_connection_disconnected_unlocked() here so
	it isn't in a public header and doesn't end up in the DBusBus
	group in Doxygen

2006-10-21  Havoc Pennington  <hp@redhat.com>

	* Makefile.am (EXTRA_DIST): dist cleanup-man-pages.sh so it's in
	the tarball if packagers want to run it

	* cleanup-man-pages.sh: Add a script which munges all the internal
	API man pages out of the Doxygen output. This reduces the size of
	the installed man pages from 7 to 2 megs, and avoids
	namespace-polluting pages. Right now (like Doxygen) this script
	isn't in the build, it's something packagers can do manually.

2006-10-21  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.h: don't include the watch/timeout
	functions in connection section

2006-10-21  Havoc Pennington  <hp@redhat.com>

	* Documentation! Whee! Doxygen now 100% silent. If you make it
	angry again, you will be punished.
	
2006-10-21  Havoc Pennington  <hp@redhat.com>

	* More documentation - all public API now documented according to
	Doxygen

2006-10-21  Havoc Pennington  <hp@redhat.com>

	* Document a bunch of undocumented stuff
	
2006-10-21  Havoc Pennington  <hp@redhat.com>

	* Clean up Doxygen group markers for public API so Doxygen finds
	everything (not comprehensively fixed for private API).
	Means all remaining Doxygen warnings are just about missing docs
	and thus pretty simple to resolve.
	
2006-10-21  Havoc Pennington  <hp@redhat.com>
	
	* dbus/dbus-macros.h: add DBUS_GNUC_DEPRECATED macro

	* dbus/dbus-message.h: mark dbus_message_iter_get_array_len() 
	as DBUS_GNUC_DEPRECATED

2006-10-21  Havoc Pennington  <hp@redhat.com>

        * Move all private API into the private Doxygen group sections of
	the files, so they don't show up in the public API docs
	
2006-10-21  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.h: put #ifndef DBUS_DISABLE_DEPRECATED around 
	dbus_message_iter_get_array_len().

	* throughout: documentation improvements.

2006-10-20  Havoc Pennington  <hp@redhat.com>

	* doc/TODO: remove the int64 thing from 1.0 since it doesn't
	matter, and the message-loader-breaker thing since nobody is going
	to do it.  Add an item to 1.0 about supporting recursive locks
	in dbus_threads_init_default() though, since it should be easy.

	* dbus/dbus-connection.c (_dbus_connection_read_write_dispatch):
	Fix this in the !dispatch case to avoid busy-looping after
	disconnection

        * More misc docs improvements

2006-10-19  Havoc Pennington  <hp@redhat.com>

	* more Doxygen-related fixes (lots of moving things from the
	public to internal section in dbus-connection.c)

2006-10-19  Havoc Pennington  <hp@redhat.com>

	* Fix a pile of Doxygen warnings and missing docs

2006-10-19  John (J5) Palmieri  <johnp@redhat.com>

	* bus/dir-watch-default.c, bus/dir-watch-dnotify.c, 
	bus/dir-watch-kqueue.c (bus_watch_directory): Pass in a BusContext 
	instead of a void *.  kqueue uses this to get the context's loop
	while the other modules ignore the parameter.  This allows us to
	avoid platform conditionals

	* bus/bus.c (process_config_postinit): Pass in the context to the 
	watch

2006-10-19  John (J5) Palmieri  <johnp@redhat.com>

	* bus/messagebus.in, bus/rc.messagebus.in: run dbus-uuidgen --ensure
	when starting the system bus

2006-10-18  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: More fixups for cross compile (Patch from 
	Marco Pracucci <development at pracucci dot com>)

2006-10-17  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-send.c (main): don't close shared connection, fix
	from Timo Hoenig

2006-10-17  Havoc Pennington  <hp@redhat.com>

	* configure.in (CPPFLAGS): don't do -DDBUS_API_SUBJECT_TO_CHANGE here

	* dbus/dbus.h: drop the DBUS_API_SUBJECT_TO_CHANGE requirement,
	since realistically it doesn't look like we'll be changing it
	anymore.

2006-10-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.c (_dbus_warn_check_failed): new function to
	be used for return_if_fail type warnings; prefixes the pid, and
	fatal by default.

2006-10-14  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Released 1.0 RC 2(0.94)
	Add check for -fPIC and enable it if available

2006-10-14  John (J5) Palmieri  <johnp@redhat.com>

	* doc/TODO: Remove the check TODO item

2006-10-13  John (J5) Palmieri  <johnp@redhat.com>

	* dbus-transport-socket.c (exchange_credentials):
	Print out more detailed errors if reading or sending
	credentials fail (Patch from Julio M. Merino Vidal 
	<jmmv at NetBSD dot org>)

2006-10-13  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: when checking for posix getpwnam_r assume true
	for cross compiles

2006-10-13  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Check for gethostbyname first before we check for it
	in libnsl.  On gnu systems it is implemeneted 

2006-10-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c
	(dbus_connection_send_with_reply_and_block): fix to handle closed
	connections, from Tambet Ingo bug #8631

2006-10-11  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: use AC_TRY_COMPILE for dirfd instead of AC_TRY_RUN

2006-10-11  John (J5) Palmieri  <johnp@redhat.com>

	* test/name-test/Makefile.am: don't link against both libdbus and
	libdbus-convenience

2006-10-11  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: check for dirfd even if it is a macro
	(Patch from Timothy Redaelli <drizzt at gufi dot org>)

2006-10-08  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: define _POSIX_PTHREAD_SEMANTICS on solaris
	avoid using dirfd on systems that don't have dirfd 
	(Patch by Brian Cameron <brian dot cameron at sun dot com>) 

2006-10-02  John (J5) Palmieir  <johnp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_abort): Remove from 
	#ifndef DBUS_DISABLE_ASSERTS macro to fix distcheck

	* dbus/dbus-sysdeps-unix.c (_dbus_print_backtrace): Remove from
	#if !defined (DBUS_DISABLE_ASSERT) || defined(DBUS_BUILD_TESTS)
	macro because _dbus_abort calls it

	* tools/Makefile.am: Add dbus-launch.h to the source list so distcheck
	works

2006-10-02  John (J5) Palmieir  <johnp@redhat.com>

	* dbus/dbus-sysdeps-util-unix.c (dirent_buf_size): Add check for
	MAXNAMELEN for Mac OSX.  (Patch from Jonas B <sanoix at gmail dot com>)

2006-10-02  Thiago Macieira  <thiago@kde.org>

	* tools/dbus-launch.c (main): make it complain and abort
	execution in case an unknown option is given. Also, process
	the '--' argument as the end of arguments.

2006-10-01  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-launch.c (print_variables): if no syntax is given,
	don't print something that's sort-of-half-sh-syntax, just print
	a plain key-value pairs thing.

	* tools/dbus-launch-x11.c: use machine ID rather than hostname for
	the local machine representation (but still have the hostname in
	the display). Remove the hostname from the display if it is
	localhost. Change session files to be named
	~/.dbus/session-bus/machine-display. Change X atoms to be
	underscore-prefixed so nobody whines about ICCCM compliance.
	Otherwise name them the same as the env variables.
	Change session file format to include key-value pairs and an
	explanatory comment. Keys are the same as the env variables.
	(set_address_in_x11): X property format can't depend on
	sizeof(pid_t) on a particular machine, fix to always be 32 bits

	* tools/dbus-launch.c: make --autolaunch take a machine id
	argument. If --autolaunch is used with a program to run, complain
	for now (but add a FIXME). Also, don't look for existing bus if 
	there's a program to run (but add a FIXME).

	* dbus/dbus-sysdeps-unix.c (_dbus_get_autolaunch_address): pass
	machine uuid to dbus-launch (avoids linking dbus-launch to libdbus
	just to get this, and avoids duplicating uuid-reading code).

	* tools/dbus-launch.1: clarify various things
	
2006-10-01  Havoc Pennington  <hp@redhat.com>

	* test/test-service.c (path_message_func): remove broken extra
	unref that was hidden by the bugs in dbus-connection.c/dbus-bus.c

	* test/test-shell-service.c (path_message_func): same fix
	
	* dbus/dbus-connection.c
	(_dbus_connection_get_dispatch_status_unlocked): break up the
	function a little for clarity and fix the notification of
	dbus-bus.c to not require dispatch to be complete

	* dbus/dbus-connection.c (dbus_connection_unref): improve the
	warning when you try to finalize an open connection.
	
2006-10-01  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-bus.c
	(internal_bus_get): only weak ref the connection; this means 
	_dbus_bus_notify_shared_connection_disconnected_unlocked can be
	called safely in any context
	(_dbus_bus_notify_shared_connection_disconnected_unlocked): don't
	unref

	* dbus/dbus-connection.c
	(_dbus_connection_get_dispatch_status_unlocked): move
	_dbus_bus_notify_shared_connection_disconnected_unlocked here
	when queuing Disconnected instead of when the Disconnected message
	arrives, so dbus_bus_get() won't return closed connections.
	
2006-10-01  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (_dbus_connection_close_if_only_one_ref): 
	Add a hack to make DBusNewConnectionFunction work right.

	* dbus/dbus-server-socket.c (handle_new_client_fd_and_unlock): use
	the hack here. Also, fix the todo about refcount leak.
	
	* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
	and use the hack here
	
        * dbus/dbus-connection.c: Kill the "shared" flag vs. the
	"shareable" flag; this was completely broken, since it meant 
	dbus_connection_open() returned a connection of unknown
	shared-ness. Now, we always hold a ref on anything opened 
	as shareable.

	Move the call to notify dbus-bus.c into
	connection_forget_shared_unlocked, so libdbus consistently forgets
	all its knowledge of a connection at once. This exposed numerous
	places where things were totally broken if we dropped a ref inside
	get_dispatch_status_unlocked where
	connection_forget_shared_unlocked was previously, so move
	connection_forget_shared_unlocked into
	_dbus_connection_update_dispatch_status_and_unlock. Also move the
	exit_on_disconnect here.

	(shared_connections_shutdown): this assumed weak refs to the
	shared connections; since we have strong refs now, the assertion 
	was failing and stuff was left in the hash. Fix it to close
	still-open shared connections.
	
	* bus/dispatch.c: fixup to use dbus_connection_open_private on the 
	debug pipe connections
	
	* dbus/dbus-connection.c (dbus_connection_dispatch): only notify
	dbus-bus.c if the closed connection is in fact shared
	(_dbus_connection_close_possibly_shared): rename from 
	_dbus_connection_close_internal
	(dbus_connection_close, dbus_connection_open,
	dbus_connection_open_private): Improve docs to explain the deal
	with when you should close or unref or both

	* dbus/dbus-bus.c
	(_dbus_bus_notify_shared_connection_disconnected_unlocked): rename
	from _dbus_bus_check_connection_and_unref_unlocked and modify to
	loop over all connections

	* test/test-utils.c (test_connection_shutdown): don't try to close
	shared connections.

	* test/name-test/test-threads-init.c (main): fix warnings in here

	* dbus/dbus-sysdeps.c (_dbus_abort): support DBUS_BLOCK_ON_ABORT
	env variable to cause blocking waiting for gdb; drop
	DBUS_PRINT_BACKTRACE and just call _dbus_print_backtrace() 
	unconditionally.

	* configure.in: add -export-dynamic to libtool flags if assertions enabled
	so _dbus_print_backtrace works.

	* dbus/dbus-sysdeps-unix.c (_dbus_print_backtrace): use fprintf
	instead of _dbus_verbose to print the backtrace, and diagnose lack 
	of -rdynamic/-export-dynamic
	
2006-09-30  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-bus.c (dbus_bus_get_private, dbus_bus_get) 
	(internal_bus_get): fix screwy code formatting. whoever committed
	that was not paying attention!

2006-09-30  Havoc Pennington  <hp@redhat.com>

	* configure.in (LT_CURRENT, LT_AGE): increment current and age to
	reflect addition of interfaces.

	* doc/dbus-specification.xml: describe a new
	org.freedesktop.DBus.Peer.GetMachineId method

	* dbus/dbus-string.c (_dbus_string_skip_white_reverse): new function
	(_dbus_string_skip_white, _dbus_string_skip_blank): use new
	DBUS_IS_ASCII_BLANK, DBUS_IS_ASCII_WHITE macros and fix assertion
	at end of skip_white
	(_dbus_string_chop_white): new function

	* bus/connection.c (bus_connections_setup_connection): call
	dbus_connection_set_route_peer_messages.

	* dbus/dbus-connection.c
	(_dbus_connection_peer_filter_unlocked_no_update): modify to
	support a GetMachineId method.

	Also, support a new flag to let the bus pass peer methods through
	to apps on the bus, which can be set with
	dbus_connection_set_route_peer_messages.

	Finally, handle and return an error for anything unknown on the
	Peer interface, which will allow us to extend the Peer interface
	in the future without fear that we're now intercepting something
	apps were wanting to see.
	
	* tools/dbus-uuidgen.c: a thin wrapper around the functions in 
	dbus/dbus-uuidgen.c

	* dbus/dbus-uuidgen.c: implement the bulk of the dbus-uuidgen
	binary here, since most of the code is already in libdbus

	* dbus/dbus-sysdeps.c (_dbus_read_local_machine_uuid): read the
	uuid from the system config file

	* dbus/dbus-internals.c (_dbus_generate_uuid, _dbus_uuid_encode) 
	(_dbus_read_uuid_file_without_creating) 
	(_dbus_create_uuid_file_exclusively, _dbus_read_uuid_file): new
	uuid-related functions, partly factored out from dbus-server.c

	* dbus/dbus-sysdeps.c (_dbus_error_from_errno): convert EEXIST to
	DBUS_ERROR_FILE_EXISTS instead of EEXIST

	* dbus/dbus-protocol.h (DBUS_ERROR_FILE_EXISTS): add file exists error

	* tools/dbus-cleanup-sockets.1: explain what the point of this
	thing is a bit more

	* autogen.sh (run_configure): add --config-cache to default
	configure args

	* dbus/dbus-internals.h (_DBUS_ASSERT_ERROR_IS_SET): disable the
	error set/clear assertions when DBUS_DISABLE_CHECKS is defined

	* tools/dbus-launch.c (main): if xdisplay hasn't been opened,
	don't try to save address, fixes crash in make check
	
2006-09-30  Thiago Macieira  <thiago@kde.org>

	* configure.in: add DBUS_BINDIR as a #define to C source code.

	* tools/dbus-launch.c
	* tools/dbus-launch.h
	* tools/dbus-launch-x11.c:
	* tools/dbus-launch.1: Add the --autolaunch option to
	dbus-launch, which makes it scan for an existing session
	started with --autolaunch. With that option, it also creates
	an X11 window and saves the bus address and PID to it.

	* dbus/dbus-sysdeps.h:
	* dbus/dbus-sysdeps-unix.c (_dbus_get_autolaunch_address): Add
	a function that runs "dbus-launch --autolaunch" to retrieve
	the running D-Bus session address (or start one if none was running)

	* dbus/dbus-transport.c: Add the handler for the "autolaunch:"
        address protocol, which tries to get the running session from
        dbus-launch.

	* dbus/dbus-bus.c:
	* dbus/dbus-internals.h: Make "autolaunch:" be the default
	D-Bus session bus address.

	* dbus/dbus-connection.c: Fix horrible typo in error message.

2006-09-18  John (J5) Palmieri  <johnp@redhat.com>

	* tools/Makefile.am: use @EXPANDED_DATADIR@ instead of @DATADIRNAME@  

2006-09-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
	fix so that if unix_user_function is set on windows, we still
	do the default check that the auth identity matches the bus identity

2006-09-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-transport.c (_dbus_transport_open): modify to delegate
	to _dbus_transport_open_platform_specific,
	_dbus_transport_open_socket,
	and _dbus_transport_open_debug_pipe

	* dbus/dbus-transport-protected.h: add _dbus_transport_open_platform_specific

2006-09-16  Havoc Pennington  <hp@redhat.com>

        Attempt auditing public API to remove all cases where a Unix
	function returns weird emulated goo to Windows. This probably 
	breaks the bus daemon on Windows, to fix it again we may 
	need to stop processing unix-specific config options on Windows,
	and may need to add Windows-specific public API or config options.
	
	* configure.in (LT_CURRENT, LT_AGE): increment current and age,
	to reflect added interfaces; should not break soname.
	
	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated): do
	not invoke unix user function on Windows. Kind of a hacky fix, but 
	we don't want a "unix uid" leaking out on Windows.

	* dbus/dbus-connection.c (dbus_connection_get_socket): add new API
	to get the socket fd on Windows or UNIX
	(dbus_connection_get_unix_fd): make this always fail on Windows

2006-09-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-server.c (dbus_server_listen): change how this works
	to be able to delegate to a set of handlers that can succeed,
	fail, or choose not to handle. Allows us to have 
	dbus_server_listen_platform_specific.

	* dbus/dbus-server-socket.c (_dbus_server_new_for_tcp_socket):
	factor out the tcp socket stuff to be used on windows, leaving
	unix domain socket only in dbus-socket-unix.c

	* dbus/dbus-transport-socket.c
	(_dbus_transport_new_for_tcp_socket): factor out the tcp socket
	stuff to be used on windows, leaving unix domain socket only 
	in dbus-transport-unix.c

	* dbus/dbus-connection.c (dbus_connection_get_unix_user): insert
	temporary hack to be sure this fails on windows
	(dbus_connection_get_unix_process_id): ditto

2006-09-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps-unix.c (_dbus_open_tcp_socket) 
	(_dbus_open_unix_socket, _dbus_open_socket): change API for 
	_dbus_open_socket so the domain/type/protocol from system headers
	are not required. This is kind of pointless though unless we move
	part of _dbus_connect_tcp_socket into sysdeps.c instead of
	sysdeps-unix.c, which would mean adding a wrapper around
	bind/listen/etc.
	Also, add DBusError to the socket-opening functions so they 
	don't require use of errno.

2006-09-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps-unix.h: small change to Peter's patch to make
	dbus-sysdeps-unix-util.c build, add unix-specific sysdeps header.

	* dbus/dbus-sysdeps.h, dbus-sysdeps-unix.c: patch from Peter 
	Kümmel bug #8249 to make the sysdeps.h read/write/open/close
	functions specifically for sockets only, and move generic 
	read/write/open/close into unix-specific code.

2006-09-14  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-transport-unix.c (unix_do_iteration): fix a valgrind
	complaint about accessing revents when poll returns 0, from Julian Seward.

2006-09-14  John (J5) Palmieri  <johnp@redhat.com>

	* Released 1.0 RC 1 (0.93) 

2006-09-14  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-sysdeps-util-unix.c (_dbus_write_pid_file):
	use _dbus_close instead of close

2006-09-14  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-sysdeps.c: Add support for LOCAL_CREDS socket
	credentials.  Fixes "external" authentication under e.g. NetBSD
	which does not support any other socket credentials mechanism.
	(Patch from Julio M. Merino Vidal  <jmmv at NetBSD dot org>)

2006-09-14  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-threads.c: Allow recursive mutex's to be passed into
	dbus_threads_init and be used by the dbus mutex functions to
	avoid deadlocks.

	* doc/TODO: Remove recursive mutex dbus_connection_dispatch TODO item

2006-09-13  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-sysdeps-util-unix.c (_dbus_directory_get_next_file):
	use threadsafe readdir_r instead of readdir

2006-09-13  John (J5) Palmieri  <johnp@redhat.com>

	* dbus-threads.c (dbus_threads_init_default): New method for
	initializing the internal thread implementation (Patch from
	Alexander Larsson <alexl at redhat dot com>)

2006-09-11  John (J5) Palmieri  <johnp@redhat.com>

	* remove a bunch of todo items from the 1.0 list

2006-09-11  John (J5) Palmieri  <johnp@redhat.com>

	* bus/activation.c, bus/desktop-file.c: Distinguish between OOM and
	key not found

2006-09-11  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-internal.c: Add dbus_is_verbose so we can have more
	complex debugging code

	* dbus/dbus-marshal-basic.c (_dbus_marshal_read_fixed_multi): Move
	between the test suite ifdefs
	(_dbus_verbose_bytes): return if verbosity is not enabled 

2006-09-11  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-marshal-recursive-util.c, dbus/dbus-marshal-recursive.c:
	remove DBusMark

2006-09-10  Havoc Pennington  <hp@redhat.com>

       patch mostly by Peter Kümmel, bug #8211
	
	* dbus/dbus-sysdeps-unix.c: new file, which splits out
	unix-specific stuff in dbus-sysdeps.c

	* dbus/dbus-sysdeps.c: don't include any UNIX-only headers, 
	and move unix-specific stuff to dbus-sysdeps-unix.c

	* configure.in: check HAVE_ERRNO_H
	
2006-09-08  John (J5) Palmieri  <johnp@redhat.com>

	* bus/test-main.c (main): Initialize threading during tests

	* dbus/dbus-connection.c (_dbus_connection_new_for_transport):
	Unlock connection on error
	(generate_local_error_message): static method for generating
	an error message when we don't have a message to reply to
	(_dbus_connection_block_pending_call): Send a disconnect error
	instead of just a timeout (NULL) when the bus gets disconnected
	while blocking for a reply.
	
2006-09-08  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_dispatch): Properly remove
	filters (Patch from Kimmo Hämäläinen 
	<kimmo dot hamalainen at nokia dot com>)

2006-09-07  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection-internal.h: Add prototype for 
	_dbus_connection_test_get_locks to remove warning

2006-09-07  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): Make sure we
	close child_err_report_pipe[WRITE_END] on exec (Patch from 
	Kimmo Hämäläinen <kimmo dot hamalainen at nokia dot com>)

2006-09-07  John (J5) Palmieri  <johnp@redhat.com>

	* Clean up close calls to use _dbus_close (Patch from 
	Kimmo Hämäläinen <kimmo dot hamalainen at nokia dot com>)

2006-09-06  John (J5) Palmieri  <johnp@redhat.com>

	* doc/TODO:
	- Remove pending call locking todo item
	- dbus_connection_open now holds hard ref.  Remove todo item
	- do proper locking on _dbus_bus_check_connection_and_unref
	  and handle DBUS_BUS_STARTER. Remove todo item
	- Warn on closing of a shared connection.  Remove todo item

	* bus/bus.c, bus/connection.c, bus/dispatch.c, dbus/dbus-bus.c,
	dbus/dbus-connection.c: Use the dbus_connection_close_internal
	so we don't get the warning when closing shared connections

	* test/test-service.c, test/test-shell-service.c: Applications
	don't close shared connections themselves so we unref instead of
	close

	* test/test-utils.c (test_connection_shutdown): Close the connection

	* dbus/dbus-bus.c (_dbus_bus_check_connection_and_unref): Changed to
	_dbus_bus_check_connection_and_unref_unlocked since we only call this
	method on a locked connection.  
	Make sure we call _dbus_connection_unref_unlocked instead of 
	dbus_connection_unref also.
	Handle DBUS_BUS_STARTER correctly

	* dbus/dbus-connection.c (connection_record_shared_unlocked):
	Mark as shared and hard ref the connection
	(connection_forget_shared_unlocked): Remove the hard ref from the 
	connection
	(_dbus_connection_close_internal_and_unlock):  New internal function
	which takes a locked connection and unlocks it after closing it
	(_dbus_connection_close_internal): New internal function which acts
	like the origonal dbus_connection_close method by grabbing a connection
	lock and calling _dbus_connection_close_internal_and_unlock
	(dbus_connection_close): Public close method, warns when the app
	trys to close a shared connection

2006-09-06  John (J5) Palmieri  <johnp@redhat.com>

	* bus/driver.c:
	(bus_driver_generate_introspect_string): New method for populating
	a DBusString with the introspect data
	(bus_driver_handle_introspect): Move introspect generation code to 
	bus_driver_generate_introspect_string

	* bus/main.c:
	(introspect): New function which prints out the intropect data and
	exits
	(main): Add a --introspect switch

2006-09-06  John (J5) Palmieri  <johnp@redhat.com>

	* doc/TODO: Removed dtd publishing item.  
	It seems the dtd has already been added at
	http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd

2006-09-05  John (J5) Palmieri  <johnp@redhat.com>

	* doc/TODO, various source files: Audited todo's and FIXME's and
	prepended the ones we should be looking at with 1.0.  Those
	prepended with 1.0? need clerification or might not be needed
	for 1.0

2006-09-05  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-pending-call.c: Add some checks so we don't crash on
	NULL in the public API (Patch from Kimmo Hämäläinen 
	<kimmo dot hamalainen at nokia dot com>)

2006-09-05  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Fix for OS-X compile time endian issues (patch from
	Benjamin Reed <ranger at befunk dot com>)

2006-09-05  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Check for no-common compiler flag (OS-X fix from
	Benjamin Reed <ranger at befunk dot com>)

2006-09-01  John (J5) Palmieri  <johnp@redhat.com>

	* tools/dbus-launch.c: Add a sigterm handler (patch from Frederic Crozat
	<fcrozat at mandriva dot com>)

2006-08-29  Havoc Pennington  <hp@redhat.com>

	* test/test-service.c (path_message_func): fix lack of return value

	* dbus/dbus-sysdeps.c (_dbus_printf_string_upper_bound): fix
	formatting, remove #ifdef, and fix docs. #ifdef doesn't make
	any more sense than on anything else in this file.
	(_dbus_get_tmpdir): add const to return value, and keep the
	results of the various getenv around in a static variable.

2006-08-29  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps-util.c, dbus/dbus-sysdeps-util-unix.c: change
	from Ralf Habacker to move UNIX-specific sysdeps into a separate file.

2006-08-25  John (J5) Palmieri  <johnp@redhat.com>

	* test/Makefile.am: change find to use syntax that works with non
	gnu versions of find

2006-08-25  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-transport.c: fix invalid deref when checking if
	a vtable method exists (Patch from Christian Ehrlicher 
	<ch dot ehrlicher at gmx dot de>)

2006-08-25  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in, dbus/Makefile.am, test/name-test/run-test.sh, 
	test/name-test/Makefile.am: Fixed some issues with getting get dbus 
	to build with builddir != srcdir (Taken from a patch by Bernard Leak
	<bernard at brenda-arkle dot demon dot co dot uk>)

2006-08-25  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Fix DBUS_DAEMONDIR to use EXPANDED_BINDIR for the
	default case

2006-08-25  John (J5) Palmieri  <johnp@redhat.com>

	* configure.ac, bus/Makefile.am: Generalize kqueue support so that
	it works on any system providing this interface, not only FreeBSD.
	For example, NetBSD. (Patch by Julio M. Merino Vidal  <jmmv at NetBSD dot org>)

2006-08-20  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-faq.xml, doc/dbus-tutorial.xml: some improvements to
	the docs

2006-08-18  John (J5) Palmieri  <johnp@redhat.com>

	* Released 0.92 

2006-08-18  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-threads.c (dbus_threads_init): change the documentation
	to reflect the init late change

	* bus/bus.c (bus_context_new): Check user before we fork so we can
	print out an error message a user will be able to see

2006-08-18  John (J5) Palmieri  <johnp@redhat.com>

	Patch provided by Ralf Habacker (ralf dot habacker at freenet dot de) 

	* dbus/dbus-sysdeps.c, dbus/dbus-threads.c, dbus/dbus-internals.h:
	Add two more global locks for use on windows platforms.  These are
	unused on non-windows platforms but are not ifdefed out to avoid
	potential bugs (i.e. the few bytes lost does not warrent the extra
	maintanence and complexity that having seperate sets of locks would
	cause)

2006-08-18  John (J5) Palmieri  <johnp@redhat.com>

	* bus/services.c (bus_registry_acquire_service): Return an error
	when an application tries to register the org.freedesktop.DBus Bus Name

	* bus/services.c (bus_registry_release_service): Return an error
	when an application tries to release the org.freedesktop.DBus Bus Name

2006-08-17  Alp Toker  <alp@atoker.com>

	* doc/dbus-specification.xml: Fix some minor typos.

2006-08-17  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: use $with_init_scripts instead of $operating_system
	to determine where to store the pid since the init scripts manipulate 
	the pid file (patch from Marcelo Ricardo Leitner 
	<marcelo dot leitner at terra dot com dot br>.  

2006-08-16  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-threads.c: Add static DBusList *uninitialized_mutex_list and
	static DBusList *uninitialized_condvar_list to support new late 
	initialization threading model.  In this model threads can be initialized
	even after the D-Bus API has been used but still needs to be initialized 
	before the second thread has been started.  Mutexes and condvar addresses
	are stored in the two static lists and are replaced with actuall locks
	when threads are initalized.
	(_dbus_mutex_new_at_location): New method for creating a mutex and placing
	the location into the static list
	(_dbus_mutex_free_at_location): New method for removing a mutex location 
	from the static list and freeing the mutex
	(_dbus_condvar_new_at_location): New method for creating a conditional 
	variable and placing the location into the static list
	(_dbus_condvar_free_at_location): New method for removing a conditional
	variable location from the static list and freeing the conditional variable 
	(init_uninitialized_locks): Atomic method which goes through the static 
	lists of mutex and condvar location and updates them with actuall locks
	(init_global_locks): changed to init_locks
	
	* dbus/dbus-connection.c:
	(_dbus_connection_test_get_locks): New method for tests to check connections
	(_dbus_connection_new_for_transport): Use the new at_location mutex and
	condvar API
	(dbus_connection_allocate_data_slot): Pass in the global lock address
	to _dbus_data_slot_allocator_alloc

	* dbus/dbus-dataslot.c:
	(_dbus_data_slot_allocator_alloc): Use the address of the mutex
	instead of the mutex itself

	* dbus/dbus-message.c:
	(dbus_message_allocate_data_slot): Pass in the global lock address
	to _dbus_data_slot_allocator_alloc

	* dbus/dbus-pending-call.c:
	(dbus_pending_call_allocate_data_slot): Pass in the global lock address
	to _dbus_data_slot_allocator_alloc

	* dbus/dbus-server.c:
	(_dbus_server_init_base): Use the new at_location mutex API
	(dbus_server_allocate_data_slot): Pass in the global lock address
	to _dbus_data_slot_allocator_alloc

	* test/name-test/test-threads-init.c: New test case for late thread
	initialization

2006-08-14  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-dataslot.c (_dbus_data_slot_allocator_alloc):
	Change _dbus_abort to _dbus_assert_not_reached because _dbus_abort
	causes compile problems when asserts are turned off
	Keeping _dbus_warn for printing out the message so even if
	asserts are turned off the user gets the messages that something is 
	wrong 

2006-08-14  John (J5) Palmieri  <johnp@redhat.com>

	Patches by Kjartan Maraas <kmaraas at gnome dot org>

	* bus/services.c (bus_service_list_queued_owners):
	Add a pointer cast to fix compiler warning

	* dbus/dbus-dataslot.c (_dbus_data_slot_list_get):
	return a NULL instead of FALSE since the return type
	is not expecting a boolean

	* dbus/dbus-marshal-basic.c (_dbus_marshal_test):
	Remove unused variable

	* dbus/dbus-marshal-recursive-util.c (node_new):
	return a NULL instead of FALSE since the return type
	is not expecting a boolean

	* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
	Send a NULL into _dbus_transport_new_for_fd instead of a FALSE
	because we are expecting a pointer not a boolean

	* dbus/dbus-sysdeps-util.c (_dbus_get_tmpdir): 
	add void as the parameter so some compilers
	don't complain

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket,
	  _dbus_transport_new_for_tcp_socket):
	Send a NULL into _dbus_transport_new_for_fd instead of a FALSE
	because we are expecting a pointer not a boolean

	* test/shell-test.c (test_command_line):
	cast the second argument to _dbus_list_append to avoid compiler
	warnings

	* test/test-names.c (main): remove unused variable

	* test/test-service.c (check_hello_from_self_reply):
	Initialize echo_message and echo_reply to NULL
	
	* test/test-shell-service.c (handle_echo):
	Remove unused variable and cast the third parameter passed to
	dbus_connection_get_object_path_data to avoid compiler warrnings

	* test/name-test/test-names.c (clear_message_queue):
	Remove unused function

	* test/name-test/test-pending-call-dispatch.c:
	Fix format string in printf


2006-08-14  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-bus.c:
	* test/name-test/test-names.c:
	Remove test method dbus_bus_connection_get_unique_name because 
	we already have public method dbus_bus_get_unique_name that 
	does the exact same thing

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-signature.c:
	fix typos in Julio's previous patch which cause make check to fail

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-address.c (_dbus_address_test): Revert leaking strcmp.  
	In any case it was wrong since this is a test checking to see if
	address parsing is correct.  There was no need to get the true
	tmp directory.  

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-macros.h: Revert the addition of stddef.h
	as we should not be adding it to library headers 

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-signature.c:
	Fix the unit tests so that they work if assertions are not enabled.
	(patch from Julio M. Merino Vidal  <jmmv at NetBSD dot org>)

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* tools/run-with-tmp-session-bus.sh:
	* test/name-test/run-test.sh:
	Remove bashisms (patch from Julio M. Merino Vidal
	<jmmv at NetBSD dot org>)

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: add a version (>= 2.6.0) check for libxml2

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: make sure the compiler supports -Wfloat-equal
	
	* bus/dir-watch-dnotify.c: move functional code after 
	variable declerations (C99 fix)  (patches from Jens Granseuer
	<jensgr at gmx dot net>

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-macros.h:
	add #include <stddef.h> so that Sun compilers don't complain about
	the defining NULL

2006-08-10  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-sysdeps.c:
	* dbus/dbus-address.c:
	* bus/activation.c:
	* test/shell-test.c:
	don't hardcode tmp directory (patch from Dave Meikle 
	<dmk at davemeikle dot co dot uk>)

2006-08-09  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-dataslot.c (_dbus_data_slot_allocator_alloc):
	Change an assert to a detailed warning and abort.  
	When allocator->lock != mutex it indicates that the user has failed
	to initalize threads before using the D-Bus library.  This warning
	helps the user identify the issue and fix their app.

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	These are all patches from Kjartan Maraas <kmaraas at gnome dot org>
	with cleanups of bugs found from Coverity reports:

	* dbus/dbus-sysdeps-util.c (_dbus_write_pid_file):
	close the file on error to avoid a leak

	* bus/expirelist.c (bus_expire_list_test):
	Check for NULL on dbus_new0

	* bus/activation.c (update_directory):
	remove dead code

	* bus/config-parser.c (merge_service_context_hash, start_selinux_child):
	Fix some leaks

	* bus/bus.c (process_config_every_time):
	Fixed a leak

	* bus/desktop-file.c (parse_key_value):
	Fixed leak

	* bus/selinux.c (bus_selinux_id_table_insert):
	Fixed leak

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-object-tree.c (_dbus_object_subtree_new):
	remove dead code

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* tools/run-with-tmp-session-bus.sh: use #!/bin/sh instead of
	#!/bin/bash

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* Doxyfile.in: fix the INPUT line so we can generate docs 
	when sourcedir != builddir (patch from Cygwin Ports maintainer
	<yselkowitz at users dot sourceforge dot net>

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-sysdeps.h:
	* dbus/dbus-sysdeps.c: 
	* dbus/dbus-string.c: 
	s/_dbus_printf_length/_dbus_printf_string_upper_bound to comform with
	GLib's function which does the same thing

	* configure.in:
	* bus/Makefile.am:
	* bus/dir-watch-default.c:
	* bus/dir-watch-dnotify.c:
	* bus/dir-watch-kqueue.c:
	Add kqueue directory watching for freebsd and split the directory
	watching code into seperate files per method/arch
	(patches from Timothy Redaelli <drizzt at gufi dotorg>)

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in:
	* tools/Makefile.am:
	* tools/dbus-launch.c:
	* bus/Makefile.am:
	allow --with-dbus-daemondir switch to be used to make the
	daemon install to a seperate bindir like /usr/libexec
	(patch from Brian Cameron <brian dot cameron at sun dot com)

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* bus/Makefile.am (install-data-hook): removed the slash after 
	$(DESTDIR) so we don't get the double slash which does not work
	in windows (patch from Andras Porjesz 
	<andras dot porjesz at siemens dot com>)

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-sysdeps.h:
	* dbus/dbus-sysdeps.c: 
	  add _dbus_printf_length (patch from Peter Kümmel 
	  <syntheticpp at gmx dot net>)

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-internals.c: unistd.h is not used 
	(_dbus_verbose_real): only enable verbose printing 
	if DBUS_VERBOSE environment var is set to '1'
	(patch from Peter Kümmel <syntheticpp at gmx dot net>)

2006-08-08  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: add a GCC flag check for -Wdeclaration-after-statement
	so we still compile on older gcc (patch from Frederic Peters 
	<fpeters at 0d dot be>

2006-08-04  Havoc Pennington  <hp@redhat.com>

	* configure.in: add -Wdeclaration-after-statement

	* dbus/dbus-connection.c: change all the pending call stuff to
	reflect the fact that pending call operations use the connection
	lock

	* dbus/dbus-pending-call.c: add locking here

	* dbus/dbus-errors.c (struct DBusRealError): don't make the name
	field const consistent with how message field is done

2006-08-03  John (J5) Palmieri  <johnp@redhat.com>

	* s/D-BUS/D-Bus/g

2006-08-03  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-object-tree.c: Patch by Benjamin Otte 
	<in7y118 at public.uni-hamburg dot de> - fix invalid
	read/write reported by valgrind

2006-07-24  John (J5) Palmieri  <johnp@redhat.com>

	* Released 0.91

2006-07-22  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.c:
	(_dbus_connection_attach_pending_call_unlocked):
	(connection_timeout_and_complete_all_pending_calls_unlocked):
	Make sure we set timeout_added on pending calls to FALSE when
	we remove the timeout from the connection

2006-07-21  John (J5) Palmieri  <johnp@redhat.com>

	* Removed some extra bindings stuff lingering around (thanks timo)
	* dbus-pendingcall.c (_dbus_pending_call_new): 
	s/dbus_connection_ref/_dbus_connection_ref_unlocked fixes assertion
	when we tried to take a lock on an already locked connection

2006-07-17  John (J5) Palmieri  <johnp@redhat.com>

	* Released 0.90

2006-07-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-marshal-basic.c (_dbus_type_to_string): support 64-bit
	ints, reported by Owen Taylor

2006-07-17  John (J5) Palmieri  <johnp@redhat.com>

	* doc/TODO:
	* dbus/dbus-bus.c:
	* dbus-errors.c:
	* dbus/dbus-marshal-validate.c:
	  Removed TODO items which were fixed or are no longer relevent

2006-07-17  John (J5) Palmieri  <johnp@redhat.com>

	* dbus-qt4-1.pc.in, dbus-sharp.pc.in:
	Remove stray files from the stripped bindings

2006-07-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-pending-call.c (_dbus_pending_call_set_timeout_error):
	Improve the error message on reply timeout

2006-07-14  John (J5) Palmieri  <johnp@redhat.com>

	* Remove all bindings

2006-07-13  John (J5) Palmieri  <johnp@redhat.com>

	* dbus-connection.c (dbus_connection_send_with_reply): return TRUE
	and set pending_reply out arg to NULL is connection is disconnected
	(connection_timeout_and_complete_all_pending_calls_unlocked): New
	static method for cleaning up pending calls on disconnect
	(_dbus_connection_get_dispatch_status_unlocked): If we have pending 
	calls queued timeouts on disconnect 

	 * dbus/dbus-pending-call.c (_dbus_pending_call_set_connection):
	Remove 

2006-07-13  Carlos Garcia Campos  <carlosgc@gnome.org>

	* bus/activation.[ch] (bus_activation_list_services): new function to 
	get the list of services that can be activated

	* bus/dispatch.c: test coverage for the new bus method
	ListActivatableNames

	* bus/driver.c: new bus method ListActivatableNames to get the list of
	services that can be activated

	* doc/dbus-specification.xml: ListActivatableNames method documentation

2006-07-12  John (J5) Palmieri  <johnp@redhat.com>
	* dbus/Makefile.am: add dbus-pending-call-internal.h to the list of
	source files

2006-07-12  John (J5) Palmieri  <johnp@redhat.com>
	* dbus/dbus-message-factory.c:
	Fix index into an array (patch by Peter Kümmel <syntheticpp at gmx.net>)

2006-07-12  John (J5) Palmieri  <johnp@redhat.com>
	* dbus/dbus-connection-internal.h:
	* dbus/dbus-connection.c:
	* file dbus/dbus-pending-call.c:
	* dbus/dbus-pending-call.h:
	Make DBusPendingCall an opaque type even to D-Bus internals

2006-07-07  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.h: remove connection_disconnect and replace with
	connection_close

	* dbus/dbus-connection.c: include dbus-bus.h
	(_dbus_connection_read_write_dispatch): make static

2006-07-07  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_close): removed deprecated
	function
	(dbus_connection_dispatch): On disconnect unref any shared connections

	* dbus/dbus-bus.c (_dbus_bus_check_connection_and_unref): new function
	for cleaning up shared connections on disconnect
	(internal_bus_get): get a hard refrence to shared connections when
	they are created
	
	* doc/TODO: Remove items which are no longer relevent or have been fixed
	Split 1.0 todo items with a 0.90 freeze todo list
 
2006-06-14  Ross Burton  <ross@openedhand.com>

	* glib/dbus-gobject.c:
	Free a leaking GArray (surely not!) in dbus_g_method_return.

2006-06-14  Ross Burton  <ross@openedhand.com>

	* tools/Makefile.am:
	* tools/dbus-monitor.c:
	Don't use the GLib bindings in dbus-monitor (patch from Ralf
	Habacker).
	
2006-06-14  Ross Burton  <ross@openedhand.com>

	* tools/dbus-print-message.c:
	Also print the object path when outputting signals or method calls.

2006-06-13  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/src/Makefile.am: install the qdbus.h header.
	This allows people to actually use the installed code.

2006-06-12  Ross Burton  <ross@openedhand.com>

	* glib/dbus-gproxy.c:
	Don't leak a GArray when firing signals (thank Rob Taylor for review).

2006-06-12  Thiago Macieira <thiago.macieira@trolltech.com>

	* Released 0.62

2006-06-12  Thiago Macieira <thiago.macieira@trolltech.com>

	* dbus/dbus-arch-deps.h.in: Remove spurious semi-colons that
        break pedantic builds. Closes bug 6043 (patch approved by
        Havoc back in February).

2006-06-12  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/src/qdbusintegrator.cpp: Fix bug in parsing async methods
        that took a QDBusMessage parameter.
	* qt/src/qdbusbus.h: Add a default flag for RequestName.
	* qt/tools/dbus.cpp: Don't use automatic call because we might
        be calling an async method: request a reply.

2006-06-11  Thiago Macieira <thiago.macieira@trolltech.com>

	* test/qt/*: Update the testcases, including testing the new
        functionality of sending null QByteArray and QString over the
        bus. Add new headertest test and restore the old
        qdbusxmlparser test.

2006-06-11  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/tools/dbuscpp2xml.cpp: Compile on Windows.
	* qt/tools/dbusidl2cpp.cpp: Add missing newline.

	* qt/examples/Makefile.am:
	* qt/examples/chat.h: Use UI-generated files with the ui_*.h
	form.

	* qt/src/qdbusmarshall.cpp: Allow sending of QString() and
	QByteArray() (nulls) over the bus.
	* qt/src/qdbusabstractinterface.cpp: Use the correct variable,
	the one that has the signature suffix stripped.
	* qt/src/qdbusreply.h: Make some methods const.

2006-06-09  Thiago Macieira <thiago.macieira@trolltech.com>

	Patch from Timo Hoenig <thoenig@suse.de>.

	* qt/dbus/Makefile.am: New file.  Fix "make dist", add all headers
	required during build to EXTRA_DIST.
	* qt/src/Makefile.am: Fix "make dist", add 'qdbus.h' to EXTRA_DIST.
	* qt/Makefile.am: Fix "make dist", add 'dbus' to DIST_SUBDIRS.
	* configure.in: Fix "make dist", take care that the Makefile for
	qt/dbus is being generated.

2006-06-07  John (J5) Palmieri  <johnp@redhat.com>

	* bus/bus.c: Fix eavesdropping on method calls

2006-06-07  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in:
	* dbus/dbus-userdb-util.c:
	Add Solaris console owner patch from Artem Kachitchkine

2006-06-07  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/Makfile.am:
	* qt/src/Makefile.am: Fix the EXTRA_DIST after the
	reorganisation. Thanks to Timo Hoenig for pointing this out.

2006-06-06  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gtype-specialized.c: Fix obvious leak of GArray in every
	  call to dbus_g_type_get_struct.

2006-06-06  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gvalue-utils.c: Fix the failing test where static string
	  pointers were put into a GPtrArray-based specialised collection, and
	  then freed along with the array. GValues which you add into
	  collections or maps which have the NOCOPY flag set are assumed to not
	  belong to the caller, so rather than the existing pointer-stealing
	  semantics, they are copied instead. Given that the main consumers of
	  this abstraction are the bindings themselves, I don't think this is
	  too bad, but others should watch their choice of take vs set_static.

2006-06-06  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gvalue-utils.c: Spotted a warning about the return value
	  of g_slist_prepend not being used. Fixed copying of slist-based
	  specialised collections, then wrote a test case and found that it was
	  all broken. Went on to fix iterating and appending too. Good thing
	  nobody uses this code yet.

2006-06-06  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gvalue-utils.c: Remove duplicated code by having all of
	  the iterators use gvalue_take_ptrarray_value (the GValues themselves
	  are discarded without unsetting, so it makes no difference whether
	  we take or set_static). Remove cases for G_TYPE_POINTER because
	  there really is nothing useful we can do with them in our
	  specialised types - we *need* boxed copy/free functions at the very
	  least.

2006-06-05  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/dbus: Add directory. I had forgotten to add this
	yesterday after the move...

	* qt/examples/Makefile.am:
	* qt/examples/dbus.cpp: Moved to qt/tools/dbus.cpp.

	* qt/tools/Makefile.am:
	* qt/tools/dbus.cpp: Moved from qt/examples/dbus.cpp.
	Added feature to get and set properties.
	Added validation of service, object path and interface names.

	* qt/tools/dbusidl2cpp.cpp: Two new features:
	1) Allow specifying both the header and the source file names,
	by separating them with a colon.
	2) Don't write an interface output if the -p switch wasn't
	given, but the -a was.

	* qt/src/*: Fix usage of Iterators and ConstIterators.
	Fix shadowing of variables by other variables (-Wshadow).
	Fix keyword-cleanliness in headers.
	Fix ASCII-cast (QLatin1String, QLatin1Char).
	Fix validation of member names.
	Add extra checking of introspection data during XML parsing.
	Various bug fixes.

2006-06-04  Thiago Macieira <thiago.macieira@trolltech.com>

	* dbus/Makefile.am:
	* dbus/qdbus.h: Remove unnecessary file. This is mirrored into
        qt/dbus/qdbus.h now.

2006-06-04  Thiago Macieira <thiago.macieira@trolltech.com>

	* configure.in: Make --disable-qt actually do
          something. Patch inspired by Zack Rusin.

2006-06-04  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/: Update to Subversion r548032.
	This includes a big reorganisation of the files inside the
	subdir.

2006-05-30  Sjoerd Simons  <sjoerd@luon.net>

	* dbus/dbus-sysdeps.c: Make tcp socket connection error somewhat more
	clear:  
	"Failed to connect to socket <host>:<port> <error>" instead of
	"Failed to connect to socket <host>: <error>:<port>"

	* dbus/dbus-transport-unix.c: Fix crash when no host option is given
	for a tcp transport. 

2006-05-29  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/*: Update the QtDBus bindings up to revision 546310 in
        Subversion.
	This adds the dbuscpp2xml tool, that parses a C++ header and
        outputs a D-BUS Introspection XML.

2006-05-21  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c: Put in a pile of assertions that the proxy name
	is not NULL when it shouldn't be. Also a couple of possible fixes
	for #4637 though I don't understand why the bug happens, to be
	honest... also the object constructor has an assert name != NULL
	and the name is only currently NULL for peer-to-peer proxies that 
	I don't think anyone uses? So it should be asserting.
	Anyway, for now at least see if we get an earlier assertion failure.

	* glib/dbus-gvalue-utils.c: Put in a couple of assertions for
	apparently broken code to be sure the tests fail and someone 
	will fix them...

2006-05-07  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusmarshall.cpp: Fix a problem of demarshalling lists
        and arrays when they had a single element: has_next returns
        false, even before you read the element. So, instead, check
        the array length.

2006-05-06  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusmessage.cpp:
	* qt/qdbustypehelper_p.h:
	* qt/qdbusintegrator.cpp: gcc 3.4 doesn't like Q_FOREACH when
	the list is a const-reference

2006-05-03  John (J5) Palmieri  <johnp@redhat.com>

	* Adding old doc patch that never got applied
	
	* dbus/bus.c (dbus_bus_add_match): Add documentation

	* doc/dbus-specification.xml: Add documentation for the match rules
	  and the AddMatch and RemoveMatch methods

2006-05-02  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/dbusidl2cpp.cpp: There's no callAsync. Use the correct
        call (r535506)

	* qt/dbusidl2cpp.cpp:
	* qt/qdbusabstractadaptor.cpp:
	* qt/qdbusabstractadaptor.h: Make QDBusAdaptorConnector be a
        sibling of the QDBusAbstractAdaptor objects instead of the
        parent. (r535848)

	* qt/dbusidl2cpp.cpp:
	* qt/qdbusabstractinterface.cpp:
	* qt/qdbusabstractinterface.h:
	* qt/qdbusabstractinterface_p.h:
	* qt/qdbusinterface.cpp: Make properties in interfaces
        actually work. The code that was generated would not compile,
        due to moc calls to functions that did not exist. They now
        shall. (r536571)

2006-04-30  Thiago Macieira  <thiago.macieira@trolltech.com>

	* Makefile.am:
	* configure.in:
	* dbus-qt4-1.pc.in: Add a pkg-config file for libdbus-qt4-1.
	Thanks to Brad Hards for providing the patch

2006-04-29  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/dbusidl2cpp.cpp: There's no callAsync. Use the correct
        call. (r535506)

2006-04-29  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/examples/dbus.cpp: Enhance error messages and use
        QDBusInterfacePtr.

2006-04-29  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusinterface.h: Rename QDBusRef to QDBusInterfacePtr
        and disable the copy operators. (r533772, r534746)

	* qt/qdbuserror.h: Remove the automatic cast to bool. (r533929)

	* qt/qdbusabstractinterface.cpp:
	* qt/qdbusabstractinterface.h: Change the default call mode to
        not use the event loop. Add convenience call() methods that
        take a CallMode parameter. (r534042)

	* qt/qdbusconnection.h: Change the default call mode to not
        use the event loop. (r534042)

	* qt/qdbusinterface.cpp:
	* qt/qdbusinterface.h: Add a method to tell us if the
	interface is valid (since we don't return a null pointer
	anymore) (r534099)

	* qt/qdbusinterface_p.h: Don't crash if metaObject is 0
        (r534101)

	* qt/qdbusinternalfilters.cpp: Decouple the introspection
        function in two so taht we get the chance to introspect
        without having a QDBusMessage (r534102)

	* qt/qdbusbus.h:
	* qt/qdbusconnection.cpp:
	* qt/qdbusconnection_p.h:
	* qt/qdbusintegrator.cpp: Keep a list of our own names to
        avoid a round-trip to the server when attempting to introspect
        one of our own objects. Also make sure the filter functions
        match the empty interface as well. (r534108)
	Don't keep the connection names. Instead, trust the unique
        connection name (r534111)
	Remove event loop usage (r534112)

2006-04-29  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusintegrator.cpp: Fix assertion failure spotted by
	Brad Hards.

2006-04-28  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gproxy.c: Fix properties so that they can be given in
	any order, making it easier for people who inherit from this
	object.

2006-04-28  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gvalue-utils.c: Patch from Jakub Stachowski to fix leaking
	of memory from within pointer arrays and lists. Fixes bug #6300.

2006-04-28  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gvalue.c: Patch from Jakub Stachowski to fix a leak in
	generating struct signatures. Fixes bug #6083.

2006-04-28  Robert McQueen  <robot101@debian.org>

	* qt/Makefile.am: Tweak CLEANFILES from qdbusconnection.moc
	to qdbusconnection_p.moc.

2006-04-24 John (J5) Palmieri <johnp@redhat.com>

	* README, INSTALL: Doc fixes
	Patch from Brad Hards <bradh at frogmouth.net>

2006-04-23  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/examples/dbus.cpp: Use the new merged-interface mode for
	the dynamic meta object. No need to guess which interface to
	call.

2006-04-23  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusconnection_p.h:
	* qt/qdbusmetaobject.cpp:
	* qt/qdbusmetaobject_p.h:
	* qt/qdbusintegrator.cpp: Use the new merged-interface mode
	for the dynamic meta object. No need to guess which
	interface to call.
	* qt/qdbusabstractinterface_p.h:
	* qt/qdbusconnection.cpp:
	* qt/qdbusintegrator.cpp:
	* qt/qdbusinterface.cpp:
	* qt/qdbusinterface.h: Make findInterface always return a non-null pointer.
	Add a QDBusRef that looks and behaves like DCOPRef.

2006-04-23  Thiago Macieira  <thiago.macieira@trolltech.com>

	* dbus/dbus-connection.c: Interfaces are optional in method
        calls, so don't give up if the interface parameter is NULL.
	Patch reviewed by Havoc Pennington.

2006-04-23  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusreply.h: Add default constructor and operator=
          (r532625)
	* qt/qdbustypehelper_p.h: Use a clean namespace: no foreach()
          in public headers (r532952)
	* qt/qdbusabstractinterface.cpp:
	* qt/qdbusabstractinterface_p.h: Add the AutoDetect mode and
          make it the default (r532951)

2006-04-19  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.c: Fix asserts
	Patch from Tim Moloney <t.moloney at verizon.net>

2006-04-19  John (J5) Palmieri  <johnp@redhat.com>

	* mono/Connection.cs, mono/Message.cs: Check Target type
	Patch from Aaron Bockover (abockover at novell.com)

2006-04-13  Thiago Macieira  <thiago.macieira@trolltech.com>

	* INSTALL: fine-tune the requirements for the Qt4 binding.

2006-04-16  Daniel P. Berrange  <dan@berrange.com>

	* tools/dbus-print-message.c: Added support for printing of all 
	  remaining data types. Fixed logic for indentation of compound
	  data types.
	
2006-04-15  Daniel P. Berrange  <dan@berrange.com>

	* INSTALL: fill out content of file providing DBus specific
	  build installations, followed by generic Auto* INSTALL file
	  content
	
2006-04-13  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusintegrator.cpp: Work around g++ 3.3 bug.
	  Patch by Stefan Eilers. (r529537)

2006-04-13  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/qdbusinternalfilters.cpp: Don't show the parent's
  	  contents (r528208)

2006-04-10  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/Makefile.am: fix the dependency for
          qdbusconnection_p.moc. It's included in qdbusintegrator.cpp,
	  not in qdbusconnection.cpp.
	  Thanks to Jakub Stachowski <stachowski@hypair.net> for
          spotting this.

2006-04-10  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/examples/listnames.cpp:
	* qt/examples/Makefile.am: Three ways to list the names on the
	  bus.

2006-04-10  Thiago Macieira  <thiago.macieira@trolltech.com>

	* test/qt/tst_hal.cpp: Remove the waiting, since it's not
          needed anymore. Requires Qt 4.1.3 to work properly. (r528148)

2006-04-10  Thiago Macieira  <thiago.macieira@trolltech.com>

	Merge from Subversion:
	* qt/qt-dbus.qdocconf: Update Trolltech's webpage link to
	  something that exists (r526315)
	* qt/qdbusinternalfilters.cpp: Correctly detect non-scriptable
	  slots/signals (r526316)
	* qt/qdbusinternalfilters.cpp: Fix the setProperty call and
	  also return an unknown-method error if the parameters don't
	  match for org.freedesktop.DBus.Properties. (r526842)
	* qt/examples/dbus.cpp: Allow passing of QVariants (r526843)
	* qt/qdbusintegrator.cpp: Restore the proper order of
	  delivery: don't make method returns be delivered on priority
	  (r528150)

2006-03-28  Thiago Macieira  <thiago.macieira@trolltech.com>

	* configure.in qt/Makefile.am: add qt/examples
	* qt/examples: Add QtDBus example programs:
	  - hello: Hello, World
	  - ping: Simple method-calling program
	  - pong: Simple object-exporting program (not using adaptors)
	  - complexping: Interactive method-calling program 
		(also gets and sets properties).
	  - complexpong: Sample program exporting methods, signals and
		properties, using adaptors.
	  - dbus: Simple implementation of a generic method-calling
		program, similar to 'dbus-send', but with semantics
		similar to 'dcop'.
	  - chat: Simplistic chat program, implemented using signals
		and the system bus. Looks like IRC.

2006-03-28  Thiago Macieira  <thiago.macieira@trolltech.com>

	* configure.in: Detect QtGui (necessary for one of the
          example programs). Note: this increases the minimum required
          version of Qt to 4.1.3.

2006-03-28  Thiago Macieira  <thiago.macieira@trolltech.com>

	* test/qt/*: Sync with KDE Subversion revision 523647.
        Update the testcases to the new API. Remove testcases for
        classes that are no longer public or have been removed.

2006-03-28  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/*: 
	* dbus/qdbus.h: Sync with KDE Subversion revision
	523647. Hopefully, this will be the last of the
	source-incompatible changes. Documentation has been improved;
	support for QList<basic-types> has been added; QDBusObject is
	gone; QDBus(Abstract)Interface is now a QObject with
	auto-generated meta-object; QDBusIntrospection is marked
	private, since QMetaObject can be used now; lots of bugfixes.

2006-03-16  John (J5) Palmieri  <johnp@redhat.com>

	Patch from Milosz Derezynski <internalerror at gmail.com>
	
	* configure.in:
	Output the service directory in the configure summary

	* dbus-1.pc.in:
	Add session_bus_services_dir

2006-03-10  Ross Burton  <ross@openedhand.com>

	* tools/dbus-print-message.c:
	Add support for object paths and signatures.

2006-03-06  Sjoerd Simons <sjoerd@luon.net>

	* bus/bus.c: (bus_context_reload_config): Flush the user database cache on
	config reload.
	* bus/dbus-daemon.1.in: Also note that SIGHUP flushes the user/group
	information caches
	* dbus/dbus-hash.c: (_dbus_hash_table_remove_all): 
	* dbus/dbus-hash.h: Add function to remove all entries from a hash table
	* dbus/dbus-userdb.c: (_dbus_user_database_flush):
	* dbus/dbus-userdb.h: Add function to flush all user/group information
	caches.

2006-03-06  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/dbusidl2cpp.cpp:
	* qt/Makefile.am: add the dbusidl2cpp tool, the replacement
	for dcopidl2cpp, found in the KDE installations (or the more
	modern kalyptus): generate Qt4 C++ code for the input XML
	introspection. Currently no IDL parsing.

2006-03-06  Thiago Macieira  <thiago.macieira@trolltech.com>

	* test/qt/*: Update the self-tests.

2006-03-06  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/*: 
	* dbus/qdbus.h: Sync with KDE Subversion revision 516237. This
	represents the first feature-complete version of the Qt4
	bindings since I took ove maintainership.

2006-03-06  Thiago Macieira  <thiago.macieira@trolltech.com>

	* qt/Doxyfile: Adding a Doxyfile for the Qt4 bindings
        dir. This is C++, so we can't use the DBus ones.

2006-03-02  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx: Remove refrence to sys/cdefs.h
	(Patch from Artem Kachitchkine <Artem.Kachitchkin at Sun.COM>)

2006-03-02  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.c: 
	(_dbus_connection_block_pending_call):
	Check to see if our data has already been read off the connection
	by another blocking pending call before we block in poll.
	(check_for_reply_and_update_dispatch_unlocked):
	Code taken from _dbus_connection_block_pending_call - checks for
	an already read reply and updates the dispatch if there is one.

	* test/name-test/test-pending-call-dispatch.c:
	New test for making sure we don't get stuck polling a 
	dbus connection which has no data on the socket when
	blocking out of order on two or more pending calls.

2006-02-28  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/Makefile.am: Patch by Sjoerd Simons. More .moc issues:
        make/automake don't detect that we're talking about the same
        .lo file if I specify the full path to the source files.

2006-02-26  Havoc Pennington  <hp@redhat.com>

	* bus/dbus-daemon.1.in: improve the language in a couple spots I noticed

	* dbus/dbus-bus.c (internal_bus_get): in the error message if the
	session bus variable is unset, suggest "man dbus-launch" and "man
	dbus-daemon" to figure out how to fix the problem

2006-02-25  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-glib-tool.c (usage): fix up the usage message, someone
	should make this thing use the new glib options parser

2006-02-25  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/Makefile.am: Patch by Sjoerd Simons. Fix the path to the
        .lo files taking moc sources.

2006-02-25  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus.h, dbus/Makefile.am: add dbus-signature.h to dbus.h
	and install it as a public header

2006-02-24  John (J5) Palmieri  <johnp@redhat.com>

	* Released 0.61

2006-02-24  John (J5) Palmieri  <johnp@redhat.com>
	
	* proxies.py: Fix the callchain

2006-02-24  John (J5) Palmieri <johnp@redhat.com>
	
	* patch from Sjoerd Simons <sjoerd at debian.org>:	

	* dbus/dbus-sysdeps-util.c (_dbus_group_info_free): Moved to 
	dbus/dbus-sysdeps.c

	* dbus/dbus-userdb.c (_dbus_group_info_free_allocated): Don't
	call _dbus_group_info_free_allocated which causes infinite loop,
	correctly call _dbus_group_info_free

2006-02-20  Thiago Macieira <thiago.macieira@trolltech.com>

	* qt/qdbusinterface_p.h:
	* qt/qdbusinterface.cpp: Use the standard
	org.freedesktop.DBus.Method.NoReply annotation for the "async"
	calls instead of creating one for us.

	* qt/qdbusconnection_p.h:
	* qt/qdbusintegrator.cpp: Remove debugging code.

	* qt/qdbusintegrator.cpp:
	* qt/qdbusmessage.cpp:
	* qt/qdbusmessage_p.h:
	* qt/qdbusmessage.h: Change the behaviour of automatic
	reply-sending: now a reply is always sent, unless the caller
	didn't request one or if the user slot has already sent one.

2006-02-16  Robert McQueen  <robot101@debian.org>

	* configure.in: Patch from Debian packages by Sjoerd Simons
	<sjoerd@debian.org> to add --with-qt-moc and --with-qt3-moc
	arguments so it's possible to build both bindings in the
	same tree.

	* qt/Makefile.am: Fix truncated value so that make dist works.

2006-02-16  Robert McQueen  <robot101@debian.org>

	* acinclude.m4, configure.in: Patch from Brad Hards
	<bradh@frogmouth.net> to avoid warnings from autoconf 1.9 by
	improving quoting, re-ordering a few checks, and a few other
	aesthetic tidy-ups.

2006-02-16  Robert McQueen  <robot101@debian.org>

	* dbus/dbus-message.c (dbus_message_iter_get_fixed_array):
	Patch from Rob Taylor <rob.taylor@collabora.co.uk> to correct a bogus
	assertion that the next element to read from the iter is fixed in
	size. This is not the case when you are at the end of the iter,
	because the next element type is INVALID.

	* dbus/dbus-string.c (_dbus_string_init_const_len): Correct a
	a bogus assert which means that you may not initialise a 0-length
	string unless you provide a non-NULL pointer. This prevented
	you from marshalling messages containing zero-length arrays in
	some cases.

	* glib/dbus-gvalue.c (demarshal_collection_array): Another patch
	from Rob to correct bogus asserts when trying to demarshal an
	array and get_fixed_array got you 0 elements. Append nothing to
	the GArray in this case.

	* test/glib/test-dbus-glib.c: Add a test case for round-tripping
	an empty array via the glib bindings. Without all of the above
	patches, this new test fails.

2006-02-16  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gmain.c: Make the previous commit compile.

	* python/_dbus.py, python/matchrules.py: Patch from Ole Andre
	Ravnaas <ole.andre.ravnaas@collabora.co.uk> to allow you to
	specify sender_keyword="foo", path_keyword="bar" when adding
	a signal listener, so that you can bind to signals generically
	but still do something useful in your callback.

	* python/dbus_bindings.pyx: Demarshal the byte type as unsigned
	chars so that they're not cast to chars and made negative. Thanks
	to Jakub Stachowski for reporting this and testing the fix.

2006-02-15  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-glib.h:
	* glib/dbus-gmain.h:
	(dbus_g_connection_open): new method for openning
	a connection to an arbitrary address in the glib bindings

	* ChangeLog: checkin last entry which doesn't seem to be commited

2006-02-13  John (J5) Palmieri  <johnp@redhat.com>

	* tools/dbus-launch.c: Fixed sh syntax output

2006-02-13  Robert McQueen  <robot101@debian.org>

	* glib/dbus-binding-tool-glib.c, glib/dbus-gmain.c,
	glib/dbus-gsignature.c, glib/dbus-gtype-specialized.c,
	glib/dbus-gtype-specialized.h, glib/dbus-gvalue-utils.c,
	glib/dbus-gvalue-utils.h, glib/dbus-gvalue.c:
	Patch from Rob Taylor <rob.taylor@collabora.co.uk> to add a big
	missing piece of the glib bindings jigsaw puzzle. This modifies
	the existing specialised types to have N type parameters (rather
	than the current 1 or 2 for arrays and dictionaries respectively).
	You can then use this to get a glib type to represent any arbitrary
	D-Bus struct type using dbus_g_type_get_struct. The only
	implementation of these types is with GValueArrays as before,
	but it's now possible to store these in arrays, emit them in
	signals, etc.

2006-02-10  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-signature.c (dbus_signature_iter_recurse): Correctly
	deal with nested arrays (Bug #5823) Patch by Thiago Macieira 
	<thiago.macieira at trolltech.com>

2006-02-10  John (J5) Palmieri  <johnp@redhat.com>

	* mono/doc/Makefile.am: Fix parallel make problem with mono-doc
	(Bug #4213) Patch from Doug Goldstein <cardoe at gentoo.org>

2006-02-10  John (J5) Palmieri  <johnp@redhat.com>

	* bus/connection.c (bus_connections_expect_reply): Make
	pending reply limit not common to all connections (Bug #5416)
	Patch from Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>

2006-02-10  John (J5) Palmieri  <johnp@redhat.com>

	* tools/dbus-launch.c: Fixed csh syntax output (Bug #5720)

2006-02-10  John (J5) Palmieri  <johnp@redhat.com>

	* gcj/Makefile.am: point to correct jar command (Bug #4529)
	patch from Doug Goldstein <cardoe at gentoo.org>

2006-02-09  Joe Shaw  <joeshaw@novell.com>

	* mono/Arguments.cs: Fix a magic number in the mono bindings
	that doesn't work on 64 bit arches.  Patch from Peter Johanson.

2006-01-27  Robert McQueen  <robot101@debian.org>

	* glib/dbus-binding-tool-glib.[ch]: Patch based on Ricardo Kekki's
	patch to use an annotation org.freedesktop.DBus.GLib.ClientCSymbol
	when generating the client-side methods, instead of overloading
	CSymbol which broke everything horribly. My apologies.

2006-01-27  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gtype-specialized.[ch], glib/dbus-gvalue-utils.c: Patch
	by me and Rob Taylor to add a simple_free function to D-Bus map
	and collection types, which allows those types which can be freed
	with a GDestroyNotify (such as GHashTables and GArrays, but not
	GPtrArrays) to be stored as the values in hashtables.

	* test/glib/test-dbus-glib.c, test/glib/test-service-glib.{c,xml}:
	Patch by Rob Taylor to add nested dicts to the glib tests to check
	the above code works, and appears not to leak when called repeatedly.

2006-01-27  Robert McQueen  <robot101@debian.org>

	* glib/dbus-gvalue.c (demarshal_valuearray): Patch from Rob Taylor
	to free a D-Bus allocated string with dbus_free () instead of
	g_free ().

2006-01-27  Iain Holmes  <iain@openedhand.com>

	* glib/dbus-gproxy.c (dbus_g_proxy_dispose): Protect the dispose
	method from being called multiple times.

2006-01-19  Robert McQueen  <robot101@debian.org>

	* glib/dbus-binding-tool-glib.c: Patch from Rob Taylor
	<rob.taylor@collabora.co.uk> to add support for generating bindings
	to arrays that are represented as GPtrArrays rather than GArrays (ie
	size-variable things, such as strings, objects, structs, etc).

2006-01-05  Robert McQueen  <robot101@debian.org>

	* dbus/dbus-glib.h, glib/dbus-gproxy.c: Patch from Ricardo Kekki
	<ricardo.kekki@movial.fi> to make it possible to inherit from
	DBusGProxy, by splitting the DBusGProxy struct into a public part and
	a private part, and moving the setting of the DBusGProxyManager into a
	connection property, allowing proper GObject construction.

2006-01-05  Robert McQueen  <robot101@debian.org>

	* glib/dbus-binding-tool-glib.c: Patch from Ricardo Kekki
	<ricardo.kekki@movial.fi> to make dbus-binding-tool heed C symbol name
	annotations when generating glib client bindings.

2005-12-19 John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-shared.h: Call it shared constants instead of shared macros

	* dbus/dbus-protocol.h: add DOxygen markup to quiet warnings

2005-12-19 John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-shared.h: add DOxygen markup to quiet warnings

2005-12-19 John (J5) Palmieri  <johnp@redhat.com> 

	* dbus/dbus-macros.h: correct DOxygen end of section (s/}@/@})

2005-12-19  Ross Burton  <ross@openedhand.com>

	* doc/dbus-tutorial.xml:
	Document the Glib client-side bindings, and list all possible annotations.

2005-12-19  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/bus.c (dbus_bus_release_name): Add documentation

2005-12-06  Robert McQueen  <robot101@debian.org>

	* python/service.py: s/sucessful/successful/ so we're allocating to
	and reading from the same variable. Oops.

2005-11-30  John (J5) Palmieri  <johnp@redhat.com>

	* Released 0.60

2005-11-30  John (J5) Palmieri  <johnp@redhat.com>

	* test/qt/Makefile.am: build from srcdir

	* qt/qtconnection.cpp (requestName): Changed PROHIBIT_REPLACE to ALLOW_REPLACE
	Note - this code is wrong and needs to be fixed by the Qt binding
	developers.  The flags should be treated as bitfields and not enums.

	* qt/qtconnection.h: Change ProhibitReplace to AllowReplace

2005-11-30  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-list.c (_dbus_list_insert_after_link, _dbus_list_insert_after, 
	  link_after): remove #ifdef DBUS_BUILD_TESTS since we use these methods 
	  in production code

2005-11-30  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_read_write): Add new
	method for getting messages off the bus in the absence of a
	mainloop.  This method is much like 
	dbus_connection_read_write_dispatch except it does not dispatch
	the messages to a registered filter function.  Instead it
	allows a developer to process messages by directly popping
	them off the bus.

2005-11-30  John (J5) Palmieri  <johnp@redhat.com>

	* bus/desktop-file.c (parse_key_value): Ignore locales allowing 
	the parser to continue instead of returning error
	(bus_desktop_file_load): Do not free parser data when
	parse_section_start or parse_key_value fails because it was 
	already freed by parser_free (patch from Carlos Garcia Campos  
	<carlosgc at gnome.org>)

2005-11-30  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-auth.c, dbus/dbus-connection.c, dbus/dbus-keyring.c,
	dbus/dbus-server-debug-pipe.c, glib/dbus-binding-tool-glib.c
	glib/dbus-glib-tool.c, glib/dbus-gparser.c, glib/dbus-gproxy.c
	test/test-segfault.c, test/test-utils.c,
	test/glib/test-dbus-glib.c, tools/dbus-cleanup-sockets.c
	tools/dbus-launch.c, tools/dbus-tree-view.c, tools/dbus-viewer.c:
	Various cleanup of dead code and compiler warnings (patch from
	Kjartan Maraas <kmaraas at gnome.org>) 

2005-11-30  John (J5) Palmieri  <johnp@redhat.com>

	* glib/dbus-gmain.c (connection_setup_add_watch): plugged a leak
	(patch from Carlos Garnacho Parro <carlosg at gnome.org>

2005-11-27  Robert McQueen  <robot101@debian.org>

	* python/dbus_bindings.pyx: Repair my previous commit which reverted
	part of the preceding one. Oops. Merge patch by Johan Hedberg
	<johan.hedberg@nokia.com> to fix marshalling of 16-bit integer values
	on big-endian platforms.

	* test/python/test-client.py: Add some 16-bit integers to the test
	values.

2005-11-27  Carlos Garcia Campos  <carlosgc@gnome.org>

	* glib/dbus-gobject.c: Append a GValue instead of a basic type in
	method return message for property getters

2005-11-27  Robert McQueen  <robot101@debian.org>

	* python/dbus_bindings.pyx: Fix a bug where doing a strict append
	with type v of an instance of dbus.Variant(foo, type='x') caused
	it to be boxed twice before sending over the bus.

	* python/dbus_bindings.pyx, python/service.py,
	test/python/test-client.py: Update the constants for the new
	request_name flags, and update comments/test cases now that queueing
	is the default action.

2005-11-22  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in:
	- Change version to 0.60 for impending release
	- upped the sonames because of ABI and API breakage

2005-11-22  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Add test/name-test/Makefile to the generated
	Makefile list

	* dbus/dbus-shared.h (#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT):
	New flag which replaces DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT
	(#define DBUS_NAME_FLAG_DO_NOT_QUEUE): New flag for specifying
	not to queue an ower if it can't be the primary owner

	* bus/bus.h: Add new internal BusOwner struct

	* bus/driver.c (bus_driver_handle_hello): Send flags (0 for default)
	to bus_registry_ensure and don't set the prohibit_replacement flag
	since they are now set per BusOwner and not per name.
	(bus_driver_handle_list_queued_owners): bus method (ListQueuedOwners) 
	that returns the list of connections in a name's connection queue
	
	* bus/services.c (struct BusService): remove prohibit_replacement field
	(struct BusOwner): new struct for keeping track of queued connections
	and their associated flags for the queue
	(struct BusRegistry): add a BusOwner memory pool
	(bus_registry_new): initialize the BusOwner memory pool
	(bus_registry_unref): free the BusOwner memory pool
	(_bus_service_find_owner_link): new internal method for
	searching the queue for a specific connection
	(bus_owner_set_flags): new method for adding setting the flags on a
	bus owner
	(bus_owner_new): new method that creates a BusOwner object from the
	pool and sets its flags
	(bus_owner_ref, bus_owner_unref): ref counting for BusOwner objects
	(bus_registry_ensure): Add the flags parameter
	(bus_registry_acquire_service): Switch from using raw connections to
	using the BusOwner struct
	Add new state machine for dealing with the new set of flags
	(bus_registry_set_service_context_table, struct OwnershipCancelData, 
	cancel_ownership, free_ownership_cancel_data, 
	add_cancel_ownership_to_transaction, struct OwnershipRestoreData, 
	restore_ownership, free_ownership_restore_data, 
	add_restore_ownership_to_transaction): Switch to using BusOwner 
	instead of raw connections
	(bus_service_add_owner): Add flags parameter
	Switch to using BusOwner instead of raw connections
	Add state machine for dealing with the new set of flags
	(bus_service_swap_owner): Swaps the first and second owners in the
	queue.  Used to make sure proper signals are sent when a service looses 
	or gains primary ownership.  We never insert an owner at the top of the
	queue.  Instead we insert it in the second position and then swap.
	(bus_service_remove_owner): Remove the owner from the queue sending
	out the NameLost and NameOwnerChanged signals if the we were the 
	primary owner
	(bus_service_get_primary_owners_connection): New method that extracts
	the connection from the primary owner
	(bus_service_get_primary_owner): Returns the BusOwner instead of the 
	connection
	(bus_service_get_allow_replacement): Changed from the old 
	bus_service_get_prohibit_replacement method.  Checks the flags of the 
	primary owner and returns if it can be replaced or not
	(bus_service_set_prohibit_replacement): removed
	(bus_service_has_owner): returns TRUE if and owner with
	the specified connection exists in the queue
	
	* dbus/dbus-bus.c (dbus_bus_connection_get_unique_name): New helper
	method that only compiles if tests are enabled.  Allows us to get the 
	unique name of a connection so we can check it against the queue when
	doing regression tests

	* bus/activation.c (bus_activation_send_pending_auto_activate),
	bus/dispatch.c (bus_dispatch),  
	bus/driver.c (bus_driver_handle_get_service_owner, 
	bus_driver_handle_get_connection_unix_user, 
	bus_driver_handle_get_connection_unix_process_id,
	bus_driver_handle_get_connection_selinux_security_context),
	bus/signals.c (connection_is_primary_owner): 
	use bus_service_get_primary_owners_connection instead of
	bus_service_get_primary_owner

	* dbus/dbus-sysdeps.c (_dbus_connect_unix_socket, 
	_dbus_listen_unix_socket): Calculate the length of the socket
	path and use that instead of using a fixed length which was
	causing socket names to contain many trailing Nul bytes.

	* dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c
	(dbus_g_method_get_sender): New method for extracting the sender 
	from a DBusGMethodInvocation
	(dbus_g_method_return_get_reply): changed name to 
	dbus_g_method_get_reply
	(dbus_g_method_return_send_reply): changed name to
	dbus_g_method_send reply

	* doc/dbus-specification.xml: New docs that describe how the new
	queueing system works and talks about the changes to the how
	we specify socket names

	* glib/examples/example-service.c, 
	glib/examples/example-signal-emitter.c,
	glib/examples/statemachine/statemachine-server.c:
	Changed the RequestName flags to the new system

	* test/name-test/ (test-names.c, run-test.sh, Makefile.am): New
	regression test suite for testing various states of the new
	queueing system
	
2005-11-15  Robert McQueen  <robot101@debian.org>

	* dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c: Patch from Rob
	Taylor to add two methods, dbus_g_method_return_get_reply and
	dbus_g_method_return_send_reply, to allow you to get the reply
	message from a DBusGMethodInvocation, append arbitrary stuff to it,
	and send it. The GLib bindings can't marshal a return value of
	something like a(s) if the array is empty - ultimately they should be
	made to heed the signature of the out arguments as the Python bindings
	now can, but this is a workable interim solution which might have
	other applications.

2005-11-15  Robert McQueen  <robot101@debian.org>

	* bus/driver.c, bus/services.c, bus/services.h: Add a ReleaseName
	method to org.freedesktop.DBus to release a bus name or give up
	waiting in the queue for it.

	* dbus/dbus-bus.c, dbus/dbus-bus.h, dbus/dbus-shared.h: Add a
	dbus_bus_release_name method to send the ReleaseName method calls.
	Add constants for the return values to dbus/dbus-shared.h.

	* doc/dbus-specification.xml: Document the new ReleaseName method
	in the specification.

	* python/dbus_bindings.pyx: Add a low-level python binding for the
	release name method.

	* python/exceptions.py, python/service.py: Make freeing BusName
	objects release the name. Add a NameExistsException, and fix a
	bug with creating UnknownMethodException.

	* test/python/test-client.py: Add tests for freeing BusName
	objects causing names to be released.

2005-11-14  Robert McQueen  <robot101@debian.org>

	* python/service.py: Include the traceback in the error reply when we
	send an exception over the bus. _BEST_ _PATCH_ _EVER_

2005-11-14  David Zeuthen  <davidz@redhat.com>

	Patch from Timo Hoenig <thoenig@suse.de>.

	* bus/bus.c: I've recently investigated why the automatic reload
	of configuration files does not work as expected.

	Currently, reloading configuration files does only work when
	running dbus-daemon with --nodaemon.  If we are running as daemon
	we're hitting a dnotify bug once we fork the process.

	We're initializing the dnotify fds before calling fork().  Once
	the child process forked it does still have the fds (and they
	still show up in /proc/`pidof dbus-daemon`/fd/) but we're not
	getting SIGIO as changes are made to the configuration files.

	The attached patch moves the initialization of the dnotify fds to
	process_config_postinit().  This is safe for all current code
	paths and solves the dnotify disfunction.  If we're running
	dbus-daemon as daemon the fds for dnotify are now being
	initialized after fork() for the child process.

	* configure.in: The current configure.in check for dnotify probes
	'x$target_os' for being 'xlinux-gnu'.  I've changed the check to
	match for 'xlinux', too. Additionally I have adapted the configure
	option's style to match with the others.

2005-11-14  Robert McQueen  <robot101@debian.org>

	* python/decorators.py, python/service.py: Add a new argument to the
	dbus.service.method decorator called sender_keyword, which if set,
	specifies the name of an argument which will be provided the bus
	name of the method caller.

	* test/python/test-client.py, test/python/test-service.py: Add a
	method and test to check the sender_keyword functionality.

2005-11-07  John (J5) Palmieri  <johnp@redhat.com>

	* bus/driver.c (bus_driver_handle_reload_config): Make sure we send an 
	empty reply so blocking calls don't block forever (Patch from Sjoerd 
	Simons <sjoerd at luon.net>)

	* AUTHORS: Add Robert McQueen for his work on the Python
	Bindings and other parts of D-Bus

2005-11-07  Robert McQueen  <robot101@debian.org>

	* python/decorators.py: Change emit_signal function to use the
	signature annotation of the signal when marhsalling the arguments from
	the service. Fix a bug where the code checking signature length
	against argument length referenced the wrong variable.

	* python/introspect_parser.py: Avoid adding the type signature of
	signal arguments to any methods which occur after them in the
	introspection data (!) by making the parser a little more careful
	about its current state.

	* python/service.py: Remove debug prints from last commit (again :D).

	* test/python/test-client.py, test/python/test-service.py: Add test
	signals with signature decorators to test the strict marshalling code
	gives errors at the right time. Could do with checking the signals
	actually get emitted too, given that the test does nothing with
	signals at the moment...

2005-11-07  Robert McQueen  <robot101@debian.org>

	* python/_dbus.py: Add WeakReferenceDictionary cache of dbus.Bus
	instances to stop madness of creating new instances representing
	the same bus connection all the time, rendering any tracking of
	match rules and bus names quite meaningless. Caught a bug where
	the private argument to SessionBus() and friends was being passed
	in as use_default_mainloop by mistake. Still some problems with
	multiple dbus_binding.Connection instances representing the same
	low-level connection (eg when you use both SessionBus() and
	StarterBus() in same process), but it's a lot better now than it
	was.

	* python/dbus_bindings.pyx: Add constants with the return values
	for bus_request_name().

	* python/service.py: Store bus name instances in a per-dbus.Bus cache
	and retrieve the same instances for the same name, so deletion can be
	done with refcounting. Also now throws some kind of error if you
	don't actually get the name you requested, unlike previously...

	* test/python/test-client.py: Add tests for instance caching of buses
	and bus name objects.

2005-11-04  Robert McQueen  <robot101@debian.org>

	* python/dbus_bindings.pyx, test/python/test-client.py: Fix
	marshalling of boolean values. Add some booleans to the values in
	the test client.

	* python/decorators.py, python/service.py: Add an 'async_callbacks'
	argument to the dbus.service.method decorator, which allows you to
	name arguments to take two callback functions for replying with
	return values or an exception.

	* test/python/test-client.py, test/python/test-service.py: Add test
	case using asynchronous method reply functions, both return values and
	errors, and from within both the function itself and from a mainloop
	callback.

	* python/decorators.py, python/service.py: Perform checking that the
	number of method/signal arguments matches the number of types in the
	signature at class loading time, not when you first introspect the
	class.

	* python/service.py: Remove debug print left by the last commit.

2005-11-03  Robert McQueen  <robot101@debian.org>

	* python/service.py: Heavy refactoring of method invocation, with
	hopefully no effect on functionality. Nuked _dispatch_dbus_method_call
	in favour of a new _message_cb that uses seperate functions for
	looking up the method to call, marshalling the return values, and
	sending exceptions as errors, and is easier to follow as a
	consequence.  Fixes some corner cases about returning things that
	don't match your declared out_signature, allows exceptions to define
	_dbus_error_name and have it be sent over the bus as the error name,
	and paves the way for cool stuff like heeding the message no reply
	flag, asynchronous method implementations, informing the method of the
	sender, and including backtraces in the error messages.

	* test/python/test-client.py: Catch and print exceptions thrown in the
	async callback tests, rather than passing them to the low-level
	bindings to be ignored in a noisy and frustrating manner.

2005-11-03  Robert McQueen  <robot101@debian.org>

	* python/_dbus.py, python/proxies.py, python/service.py: Add __repr__
	functions to dbus.Bus, dbus.service.BusName and dbus.service.Object,
	tweak others to be consistent.

	* test/python/test-client.py: Tweak output of testInheritance.

2005-10-29  Robert McQueen  <robot101@debian.org>

	* python/service.py: Major changes to allow multiple inheritance
	from classes that define D-Bus interfaces:
	
	 1. Create a new Interface class which is the parent class of
	    Object, and make the ObjectType metaclass into InterfaceType.
	
	 2. Patch written with Rob Taylor to replace use of method_vtable
	    with code that walks the class's __MRO__ (method resolution order)
	    to behave like Python does when invoking methods and allow
	    overriding as you'd expect. Code is quite tricky because
	    we have to find two methods, the one to invoke which has the
	    right name and isn't decorated with the /wrong/ interface,
	    and the one to pick up the signatures from which is decorated
	    with the right interface.
	
	    The same caveats apply as to normal multiple inheritance -
	    this has undefined behaviour if you try and inherit from two
	    classes that define a method with the same name but are
	    decorated with different interfaces. You should decorate
	    your overriding method with the interface you want.
	
	 3. Replace grungy introspection XML generation code in the metaclass
	    with dictionaries that cope correctly with multiple inheritance
	    and the overriding of methods. This also uses the signature
	    decorations to provide correct introspection data, including
	    the debut appearance of the types of your return values. :D

	* test/python/test-client.py, test/python/test-service.py: Add a test
	case to try invoking an method that overrides one inherited from a
	D-Bus interface class.

2005-10-29  Robert McQueen  <robot101@debian.org>

	* python/dbus_bindings.pyx: Tweak 'raise AssertionError' to assert().
	Add checking for the end of struct character when marshalling a
	struct in MessageIter.append_strict.

	* python/examples/example-service.py,
	python/examples/gconf-proxy-service.py,
	python/examples/gconf-proxy-service2.py: Update to use gobject
	mainloop directly rather than appearing to depend on gtk.

	* python/test/test-client.py, python/test/test-server.py: Remove
	obsolete and broken test scripts for old bindings. We have up to date
	and working tests in test/python/.

2005-10-29  Robert McQueen  <robot101@debian.org>

	* python/decorators.py: Add optional arguments to the method and
	signal decorators to allow you to specify the signature of arguments
	and return values. Preserve the doc strings of signal functions in the
	decorated version, for pydoc and friends.

	* python/dbus_bindings.pyx, python/proxies.py: Replace the
	parse_signature_block function with an iterable dbus.Signature()
	type. Fix a bug in MessageIter.append_strict where you could append
	anything by claiming it was a string.

	* python/service.py: Use the out_signature decoration on methods to
	marshal return values, meaning you no longer require dbus.Array()
	or dbus.Dictionary() to indicate the type when returning empty
	arrays or dictionaries. Fix a bug where exceptions which are defined
	in __main__ are not turned into error replies.

	* test/python/test-client.py, test/python/test-service.py: Add test
	for correct marshalling of return values according to out_signature.
	Fix a bug in the async call test where the error_handler is missing a
	self argument.

2005-10-29  Robert McQueen  <robot101@debian.org>

	* glib/Makefile.am, glib/examples/Makefile.am,
	glib/examples/statemachine/Makefile.am: Merge patch from Ubuntu by
	Daniel Stone to replace explicit calls to libtool with $(LIBTOOL).

	* test/python/.cvsignore: Add run-with-tmp-session-bus.conf.

	* tools/dbus-monitor.1, tools/dbus-monitor.c: Merge dbus-monitor patch
	from Ubuntu by Daniel Silverstone to allow specifying match rules on
	the command line.

2005-10-27  Ross Burton  <ross@openedhand.com>

	* dbus/dbus-marshal-header.c:
	Remove dead code.

	* glib/dbus-gobject.c:
	Stop compiler warning.

2005-10-25  Ross Burton  <ross@openedhand.com>

	* dbus/dbus-auth.c:
	* dbus/dbus-server-unix.c:
	* dbus/dbus-transport-unix.c:
	* glib/dbus-gmain.c:
	* glib/dbus-gobject.c:
	Add some const keywords.

2005-10-25  Ross Burton  <ross@openedhand.com>

	* doc/dbus-specification.xml:
	Document the NoReply annotation.

	* glib/dbus-binding-tool-glib.h:
	* glib/dbus-binding-tool-glib.c:
	Respect the NoReply annotation.

2005-10-24  Robert McQueen <robot101@debian.org>

	* python/dbus_bindings.pyx (String, MessageIter): make D-Bus strings
	derive from unicode instead of str, and encode/decode UTF-8 when
	marshalling/unmarshalling bus messages

	* python/introspect_parser.py: encode introspection data as UTF-8
	before passing the buffer into libxml2

	* test/python/test-client.py: add unicode test strings

	* test/data/valid-service-files/.cvsignore, test/python/.cvsignore:
	ignore generated python test files

2005-10-17  John (J5) Palmieri  <johnp@redhat.com>

	* glib/dbus-gvalue-utils.c (hash_free_from_gtype): handle gdouble
	and G_TYPE_VALUE_ARRAY (DBUS_TYPE_STRUCT)
	(gvalue_from_hash_value, hash_value_from_gvalue): handle gdouble

	* glib/dbus-gvalue.c (dbus_gvalue_to_signature): add missing
	DBUS_STRUCT_BEGIN_CHAR and DBUS_STRUCT_END_CHAR charaters
	when constructing struct signatures

	* python/_dbus.py (Bus): handle private connections using the
	private keyword in the constructor. defaults to private=False
	(Bus::close): new method to close a connection to the bus

	* python/dbus_bindings.pyx (Connection::close): renamed method
	was previously called disconnect
	(bus_get): now supports getting a private connection

	* python/proxies.py (ProxyMethod::__call__): check if ignore_reply
	keyword is set to True.  if it is, execute the method without waiting
	for a reply
	(ProxyObject::_introspect_execute_queue): new method for executing
	all the pending methods that were waiting for the introspect to
	finish.  this is called when introspect either succeeds or fails
	(ProxyObject::_introspect_error_handler): call queued methods

2005-10-14  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx (MessageIter::append_strict): check for
	STRUCT_BEGIN not TYPE_STRUCT in indicate we are marshalling a struct

	* python/service.py (Object::_message_cb): handle exceptions correctly
	by sending them over the wire to the calling app.  This makes sure
	the client returns immediately instead of waiting the 15 seconds to
	timeout.

	* test/python/test-client.py (TestDBusBindings::testBenchmarkIntrospect): 
	Add a test to benchmark how long it takes to introspect a service and 
	call a method which returns a large element (pretty fast)

	* test/python/test-service.py (TestObject::GetComplexArray): new test 
	method which pushes a lot of data

2005-10-13  John (J5) Palmieri  <johnp@redhat.com>

	* python/service.py(ObjectType::_reflect_on_signal, _reflect_on_method): 	
	reclaim memory outside of the loop and use del istead of just setting
	the key to None

2005-10-13  John (J5) Palmieri  <johnp@redhat.com>

	* python/service.py (ObjectType::_reflect_on_signal): Always close
	signal tag even when there are no arguments

2005-10-13  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: Set mono, mono-docs and Qt3 to default
	to no instead of auto when building.  These bindings do not
	have full time maintainers and will not be supported for the
	1.0 release.

2005-10-12  John (J5) Palmieri  <johnp@redhat.com>

	patches from Michael Krivoruchko <misha at sun.com>: 
	
	* dbus/dbus-connection.c (_dbus_connection_queue_received_message_link,
	_dbus_connection_message_sent, 
	_dbus_connection_send_preallocated_unlocked_no_update, 
	_dbus_connection_pop_message_link_unlocked): handle the case when path 
	is NULL when calling _dbus_verbose

	* configure.in: check for functions getpeerucred and getpeereid

	* dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): provides 
	support of auth EXTERNAL on Solaris 10+ (getpeerucred), FreeBSD 4.6+, 
	OpenBSD 3.0+ and FreeBSD 5.0+ as well as MacOSX 10.2+ (getpeereid). 
	Patch was only tested on Solaris 10 x86 so it might be issues
	with other platforms (i.e. BSDs and MacOSX)
	

2005-10-05  John (J5) Palmieri  <johnp@redhat.com>

	* glib/dbus-gvalue.c (marshal_variant): call _dbus_gvalue_marshal 
	instead of marshal basic so we can handle recursive types in a variant

	* test/glib/test-dbus-glib.c: Add test for marshaling recurive types
	in variants

	* test/glib/test-service-glib.c, test-service-glib.xml
	(my_object_echo_variant [EchoVariant], 
	my_object_process_variant_of_array_of_ints123
	[ProcessVariantOfArrayOfInts123]): 
	Add two test methods

	* python/introspect_parser.py: New module for parsing introspect
	data.

	* python/dbus_bindings.pyx:
	(various places): when throwing errors fix to use errormsg instead 
	of message local variable because Pyrex can get confused with other 
	message variables (initial patch by Robert McQueen 
	<robert.mcqueen at collabora.co.uk>)
	(MessageIter::parse_signature_block): new method for getting the next
	block in a signiture.
	(MessageIter::append_strict): new method for appending values strictly
	using the passed in signature instead of guessing at the type
	(MessageItter:: append_dict, append_struct, append_array): use 
	signatures to marshal children if the signature is available
	
	* python/exceptions.py (IntrospectionParserException): new exception

	* python/proxies.py (ProxyMethod::__call__): Marshal args with 
	introspected signatures if available, else we fall back to the
	old way of doing things.
	(ProxyObject::_introspect_reply_handler ): parse introspection data
	
	* python/service.py (ObjectType::_reflect_on_method): Properly
	terminate <method> if there are no args in the reflection data

	* test/python/test-client.py: add tests for talking with the GLib
	test server.  This gives us better coverage for introspection since
	python to python will always generate arguments as variants.  It also
	allows us to test the robustness of the GLib bindings and interlanguage
	communications.

	
2005-10-03  John (J5) Palmieri  <johnp@redhat.com>

	* bus/driver.c (bus_driver_handle_introspect): Add signals
	to the introspect data. (patch from Daniel P. Berrange 
	<dan at berrange.com>)

	* bus/dispatch.c (check_existent_ping): Add testcase for Ping
	
	* dbus/dbus-connection.c (_dbus_connection_peer_filter,
	_dbus_connection_run_builtin_filters): Changed these to
	be unlock_no_update functions and call 
	_dbus_connection_send_unlocked_no_update instead of
	dbus_connection_send to avoid locking errors.
	
	* doc/TODO: Removed the make Ping test TODO
	
2005-09-26  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/Python.pyx: Fixed memory leaks when throwing errors.
	We now copy the message from a DBusError and then free 
	the error object befor throwing the error

	* glib/dbus-glib-tool.c: removed extra comma at the end of the
	DBusBindingOutputMode enum which was causing a warning.
	#include <time.h> so using time_t is explicitly defined

2005-09-26  John (J5) Palmieri  <johnp@redhat.com>

	* Integrate patches from Lennart Poettering <mzsqb at 0pointer.de>:
	- dbus/dbus-bus.c
	(internal_bus_get): new method that take over the heavy lifting
	of dbus_bus_get and adds the ability to get a private connection
	to the bus
	(dbus_bus_get): wrapper to internal_bus_get that provides the same
	interface as in previous versions
	(dbus_bus_get_private): new method that is a wrapper to 
	internal_bus_get to get a private connection to the bus

	- dbus/dbus-bus.h
	(dbus_bus_get_private): add as a public libdbus interface

	- dbus-1.pc.in: output system_bus_default_address and 
	sysconfdir variables so apps can use them when compiling

2005-09-23  Harald Fernengel  <harry@kdevelop.org>
	* dbus/qt: New Qt bindings

2005-09-12  Waldo Bastian  <bastian@kde.org>

	* dbus/dbus-marshal-validate.c,
	doc/dbus-specification.xml, test/Makefile.am,
	test/test-names.c: allow hyphens in bus names.

2005-09-11  Mark McLoughlin  <mark@skynet.ie>

	* test/data/auth/fallback.auth-script: we don't
	retry the EXTERNAL method when we know its going
	to fail anymore.

2005-09-11  Mark McLoughlin  <mark@skynet.ie>

	* dbus/dbus-connection-internal.h: rename
	(add|remove|toggle)_(watch|timeout) to unlocked()
	
	* dbus/dbus-connection.c: ditto.
	
	* dbus/dbus-timeout.c, dbus/dbus-transport-unix.c:
	Update some callers for the renaming.

2005-09-10  Mark McLoughlin  <mark@skynet.ie>

	* dbus/dbus-auth.c: (record_mechanisms): don't
	retry the first auth mechanism because we know
	we're just going to get rejected again.
	
	* dbus/dbus-keyring.c: (_dbus_keyring_reload):
	Fix thinko ... and what a nasty little bugger to
	track down you were ...

	* dbus/dbus-connection.c:
	(_dbus_connection_add_watch),
	(_dbus_connection_remove_watch): add note about
	these needing the connection to be locked.
	(_dbus_connection_get_dispatch_status_unlocked):
	set status to DATA_REMAINS when we queue the
	disconnected message.
	
	* bus/dispatch.c:
	(bus_dispatch): fix warning.
	(check_existent_service_no_auto_start):
	Expect ChildSignaled error too.
	(check_existent_hello_from_self): fix another
	couple of warnings.
	
2005-09-08  Joe Shaw  <joeshaw@novell.com>

	Patches from James Willcox <snorp@snorp.net>

	* mono/Makefile.am: Add Int16.cs and UInt16.cs

	* mono/DBusType/Array.cs: Handle multidimensional arrays, and
	support array "out" parameters.

	* mono/DBusType/Int16.cs, mono/DBusType/UInt16.cs: New files,
	for 16-bit int support.

2005-09-06  John (J5) Palmieri  <johnp@redhat.com>

	* Released 0.50

	* Patch from Steve Grubb:
	- bus/activation.c (bus_activation_service_reload_test): clean up
	some indentation
	- dbus/dbus-keyring.c (_dbus_keyring_reload): fix conditional 
	- dbus/dbus-message-factory.c (generate_special): fix a couple of
	buffer overflows in the test suite.  This is non critical because
	it can not be exploited and this code is only run when doing a 
	make check.

	* Patch from Yaakov Selkowitz: Build fixes for Cygwin
	- configure.in: Don't check and link against kdecore, only qt headers
	- dbus/Makefile.am: Add -no-undefined to libdbus_1_la_LDFLAGS
	- gcj/org/freedesktop/dbus/Makefile.am:
	add libdbus_gcj_1_la_LDFLAGS = -no-undefined
	- glib/Makefile.am: Add -no-undefined to libdbus_glib_1_la_LDFLAGS
	and $(DBUS_GLIB_LIBS) to dbus_binding_tool_LDADD
	- qt/Makefile.am: Add -no-undefined to libdbus_qt_1_la_LDFLAGS
	- tools/Makefile.am: Add platform extentions to binaries 
	(i.e. .exe on windows)

	* configure.in: 
	- Make it so if no suitable version of python is found we only 
	disable building python instead of exiting the configure script
	- Require version 2.4 of glib for glib bindings
	- Up version to 0.50

	* python/__init__.py: Sync version with libdbus to (0,50,0)
	
2005-09-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-object-tree.c (find_subtree_recurse):
	a couple of optimizations (bug #710):
	- do a binary search in the tree
	- insert a new child at the right place directly, no need for
	  qsort anymore
	- do the "double alloc" thing when allocating children

2005-08-31  John (J5) Palmieri  <johnp@redhat.com>

	* python/Makefile.am: Break on pyrexc errors instead of ignoring them

	* python/dbus_bindings.pyx: Memory management foo
	(global): remove hacky _user_data_references global list
	(GIL_safe_cunregister_function_handler): userdata now stuffed into
	tuples. Unref user_data
	(GIL_safe_cmessage_function_handler): userdata now stuffed into tuples
	(Connection::__del__): Remove and replace with __dealloc__ method
	(Connection::add_filter): Stuff user_data into a tuple.  Use Py_INCREF
	to keep tuple from being deallocated instead of the global var hack
	(Connection::register_object_path): Stuff user_data into a tuple.
	Use Py_INCREF to keep tuple from being deallocated instead of the 
	global var hack
	(Connection::register_fallback): Stuff user_data into a tuple.
	Use Py_INCREF to keep tuple from being deallocated instead of the 
	global var hack
	(GIL_safe_pending_call_notification): Don't unref the message
	because it gets unreffed when going out of scope.  Py_XDECREF
	the user_data
	(PendingCall::__del__): Remove and replace with __dealloc__ method
	(PendingCall::set_notify): ref the pending call because we will
	need it to stick around for when the notify callback gets called
	(Message::__del__): Remove and replace with __dealloc__ method

	* python/dbus_glib_bindings.pyx (init_gthreads): Changed to 
	gthreads_init to match up with the dbus call

	* python/glib.py (init_threads): Changed to threads_init to match
	up with gobject.threads_init().  init_threads is kept for backwards
	compat but will most likely be deprecated in the future

	* test/python/test-client.py: 
	- revamp to use Python's unittest functionality
	- add async call tests
	- setup threads in glib and dbus so we make sure locks are working
	
2005-08-30  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx 
	(_pending_call_notification, cunregister_function_handler, 
	cmessage_function_handler): All callback functions have been rearranged 
	to workaround a bug in Pyrex when working with the GIL which is Python's 
	global lock when dealing with threads.  They have been split into
	a wrapper function (which assumes the name of the old function) and
	a _GIL_safe_<function name> function which contains the functionality
	of the old function.  This ensures that Pyrex does not write code
	the lock is released.
	

2005-08-30  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx (_pending_call_notification): Obtain the
	GIL global lock when calling back into Python

2005-08-29  John (J5) Palmieri  <johnp@redhat.com>

	* Release 0.36.2

	* Add Havoc's patch that never got applied to HEAD (Bug #2436):

	* bus/policy.c (bus_policy_allow_user): change default "user is
	allowed" to be "user has same uid as the bus itself"; any
	allow/deny rules will override.

	* bus/session.conf.in: don't allow all users, since now by default
	the user that ran the bus can connect.

2005-08-26  Colin Walters  <walters@verbum.org>

	* tools/dbus-print-message.c (print_message): Flush stdout
	after printing a message, so that redirecting to a file, then
	hitting Ctrl-C works.

2005-08-25  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx: Tracked down a major memleak and fixed it
	(EmptyMessage): new class that subclasses Message.  This is a workaround
	to a Pyrex bug that fails to call __del__ when the Message object goes out
	of scope.  For some reason subclassing Message fixes this bug
	(Bus::send_with_reply_and_block): use EmptyMessage instead of Message
	- s/Message(_create=0)/EmptyMessage everywhere else
	
	* test/python/test-{server|client}.py: add the python/.libs directory
	to the lookup path so dbus_bindings and dbus_glib_bindings don't
	get picked up from the system

2005-08-25  Colin Walters  <walters@verbum.org>

	* glib/dbus-gproxy.c (dbus_g_proxy_call): Doc update, thanks
	to Ryan Lortie for the suggestion.

2005-08-24  John (J5) Palmieri  <johnp@redhat.com>

	* test/python: Add python regression test

	* configure.in: Add test/python/Makefile

	* test/Makefile.am: Add the python directory to SUBDIRS

2005-08-24  John (J5) Palmieri  <johnp@redhat.com>

	* Release 0.36.1

	* python/_dbus.py: 
	(Interface::connect_to_signal): propigate keywords for match on args
	(Bus::add_signal_receiver): Fix typo s/dbus_inteface/dbus_interface

	* python/proxies.py (ProxyObject::connect_to_signal):
	propigate keywords for match on args

	* Makefile.am: point everything to pyexecdir since python borks
	on multilib

2005-08-23  John (J5) Palmieri  <johnp@redhat.com>

	* Release 0.36

2005-08-23  Colin Walters  <walters@verbum.org>

	* test/glib/Makefile.am: Don't multiply-define EXTRA_DIST.

2005-08-23  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_glib_bindings.pyx: reorder imports and c definitions
	to fix some wranings. We now use dbus_bindings.DBusConnection instead
	of defining DBusConnection ourselves.

2005-08-18  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus.pth: New path file to fix up problems when installing
	c libraries to lib64 and python files to lib.

	* python/Makefile.am: install dbus.pth in the correct spot

2005-08-17  John (J5) Palmieri  <johnp@redhat.com>
	* ChangeLog: clean up my last entry a bit

	* doc/introspect.xsl: New stylesheet for converting introspection data
	into browser renderable xhtml. Contributed by Lennart Poettering.

	* doc/introspect.dtd: Fixups in the introspect format from Lennart
	Poettering.

	* doc/dbus-tutorial.xml: 
	- Add Colin Walter to the Authors section for authoring the GLib
	section
	- Add descriptions of the new signature and type functionality
	in the Python complex type mapping section
	- Add a sidenote on the new args matching functionality in 
	the Python bindings
	- Fixed up some of the examples to use the gobject.MainLoop
	instead of gtk.main
	
	* python/_dbus.py:
	(Bus::_create_args_dict): New. Converts a hash of arg matches
	to a more useable format
	(Bus::add_signal_receiver): add a **keywords parameter for catching
	arg match parameters
	(Bus::remove_signal_receiver): add a **keywords parameter for catching
	arg match parameters
	
	* python/matchrules.py:
	(MatchTree::exec_matches): Check for arg matches
	(SignalMatchRule::add_args_match): New method
	(SignalMatchRule::execute): Added args_list parameter as an optimization
	so we don't have to marshal the args more than once
	(SignalMatchRule::match_args_from_list): New method that checks to see
	if the rule's arg matches match an argument list.  Only arguments
	set in the rule are checked.
	(SignalMatchRule::match_args_from_rule): New method that checks to see
	if the rule's arg matches match another rule's.  All args have to match
	in order for this method to return true.  If either rule has more args
	then it is not a match.
	(SignalMatchRule::is_match): Add args match
	(SignalMatchRule::repr): Add args to the final output if they exist

2005-08-17  Ross Burton  <ross@burtonini.com>

	* glib/dbus-gproxy.c:
	(dbus_g_proxy_call_no_reply): unref the message once sent.
	(dbus_g_proxy_call): protect against NULL proxy.

2005-08-16  John (J5) Palmieri  <johnp@redhat.com>

	* python/__init__.py: Version updated (0, 43, 0)
	
	* python/dbus_bindings.pyx: 
	- Fixed type objects to have self passed into __init__
	- Added the Variant type
	- Add the ability to specify types or signatures for Array, Variant 
	and Dictionary
	(Connection::send_with_reply_handlers): return a PendingCall object
	(_pending_call_notification): handle the case when an error is returned 
	without an error message in the body
	(MessageIter::get_boolean): return True or False instead of an integer
	(MessageIter::python_value_to_dbus_sig): add direct checking of types 
	and add checks for objects with embeded signatures or types (Array, 
	Variant and Dictionary)
	(MessageIter::append_byte): handle case when the value is a dbus.Byte
	(MessageIter::append_dict): handle embeded types or signatures
	(MessageIter::append_array): handle embeded types or signatures
	(MessageIter::append_variant): new method
	
	* python/proxies.py:
	(DeferedMethod): New. Dummy executable object used when queuing calls 
	blocking on introspection data
	(ProxyMethod::__call__): add the timeout keyword for specifying longer 
	or shorter timeouts for method calls
	(ProxyObject): Add first pass at an introspection state machine
	(ProxyObject::__init__): Add introspect keyword for turing off an on 
	introspection. 
	(ProxyObject::_Introspect): Internal Introspect call that bypasses 
	the usual mechanisms for sending messages.  This is to avoid a deadlock
	where the Intospect call would be queued waiting for the Introspect 
	call to finish ;-)
	(ProxyObject::_introspect_reply_handler): New.  This method is called 
	when introspection returns with no error
	(ProxyObject::_introspect_error_handler): New.  This method is called 
	when introspection encounters an error
	(ProxyObject::__getattr__): Code to handle different introspection 
	states.  Queue async calls or block blocking calls if we are 
	introspecting.  Pass through as normal if we are not or are done with 
	introspecting.
	
	* python/service.py: Import signal and method from decorators.py

	* python/types.py: Add Variant type

2005-08-16  Colin Walters  <walters@verbum.org>

	* glib/dbus-gobject.c (dbus_set_g_error): Don't lose if the
	DBusError message is NULL.

2005-08-09  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-errors.c: apply patch from Timo Teras to make a
	malloc'd copy of the name parameter

2005-08-09  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (dbus_message_set_reply_serial): print
	warning if the reply serial is set to 0

2005-08-04  Colin Walters  <walters@verbum.org>

	* glib/dbus-gvalue-utils.h (_dbus_g_type_specialized_builtins_init)
	(dbus_g_type_is_fixed, dbus_g_type_fixed_get_size)
	(dbus_gvalue_set_from_pointer, dbus_g_hash_table_value_foreach)
	(dbus_g_hash_table_insert_values, dbus_g_hash_table_insert_steal_values)
	(dbus_gtype_is_valid_hash_key, dbus_gtype_is_valid_hash_value)
	(dbus_g_hash_func_from_gtype, dbus_g_hash_free_from_gtype)
	(dbus_g_hash_equal_from_gtype, dbus_gvalue_stor, dbus_gvalue_take):
	* glib/dbus-gvalue.h (dbus_g_value_types_init)
	(dbus_gvalue_demarshal, dbus_gvalue_demarshal_variant)
	(dbus_gvalue_demarshal_message, dbus_gvalue_marshal):
	
	Prefix name with _ to ensure they're not exported.  All callers
	updated.

	* glib/dbus-gvalue.c (typecode_to_gtype)
	(dbus_typecode_maps_to_basic, basic_typecode_to_gtype)
	(signature_iter_to_g_type_dict)
	(signature_iter_to_g_type_array)
	(dbus_gtype_from_signature_iter, dbus_gtype_from_signature)
	(dbus_gtypes_from_arg_signature):
	Move to dbus-gsignature.c.

	* glib/dbus-binding-tool-glib.c (dbus_binding_tool_output_glib_server): Call
	dbus_g_type_specialized_builtins_init instead of dbus_g_value_types_init.
	(dbus_binding_tool_output_glib_client): Ditto.

	* glib/Makefile.am (DBUS_GLIB_INTERNALS): Add dbus-gsignature.c
	and dbus-gsignature.h

	* test/glib/test-service-glib.c (my_object_rec_arrays): Delete
	unused variable.

2005-08-03  Colin Walters  <walters@verbum.org>

	* glib/dbus-gobject.c: Add tests on hardcoded object info; this should
	catch any incompatible changes accidentally made.

2005-08-03  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): fix
	typo, from Julien Puydt

	* bus/connection.c (bus_connection_disconnected): we were always
	doing a wait_for_memory due to a buggy loop, found by Timo Hoenig

2005-08-01  Colin Walters  <walters@verbum.org>

	Patch from Joe Markus Clarke:	
	
	* glib/dbus-gidl.c (property_info_unref, arg_info_unref): Fix
	use-after-free.

2005-08-01  Colin Walters  <walters@verbum.org>
	
	Patch from Joe Markus Clarke:	
	
	* tools/dbus-send.c (main): 
	
	Don't use C99 style initializers (bug #3933).
	
2005-08-01  Colin Walters  <walters@verbum.org>

	Patch from Joe Markus Clarke:	

	* glib/dbus-gvalue.c (dbus_g_value_types_init): 
	* glib/dbus-gvalue-utils.c (dbus_g_type_specialized_builtins_init) 
	* glib/dbus-gobject.c (write_interface):

	Don't use C99 style initializers (bug #3933).

2005-07-31  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-viewer.c (load_child_nodes): fix invocation of
	dbus_g_proxy_call, fix from Piotr Zielinski bug #3920

2005-07-30  Havoc Pennington  <hp@redhat.com>

	* fix a bunch of Doxygen warnings and mistakes

2005-07-30  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_string_parse_uint): remove #ifdef
	DBUS_BUILD_TESTS since it's now used in production code

2005-07-29  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c (write_junk): initialize the junk
	buffer so valgrind doesn't have a breakdown

2005-07-29  Havoc Pennington  <hp@redhat.com>

	* bus/signals.c (bus_signals_test): add match_rule_equal() tests
	(match_rule_matches): remove unused arg
	(test_matching): add tests for match_rule_matches()

	* bus/signals.c (bus_match_rule_parse_arg_match): add ability to
	do arg0='foo' arg5='bar' in the match rules
	(match_rule_matches): don't match if the arg0='foo' doesn't match.

	* dbus/dbus-protocol.h (DBUS_MAXIMUM_MATCH_RULE_ARG_NUMBER): add this

2005-07-29  Ross Burton  <ross@openedhand.com>

	* dbus/dbus-connection.c:
	Don't create a DBusCondVar which is never used.

2005-07-27  Ross Burton  <ross@openedhand.com>

	* dbus/dbus-message.c:
	Reduce the size of the maximum cached message to 10K.

2005-07-25  Ross Burton  <ross@openedhand.com>

	* glib/dbus-gproxy.c:
	Remove matches when all proxies are unregistered.

2005-07-24  Colin Walters  <walters@verbum.org>

	* glib/dbus-gvalue.c (signature_iter_to_g_type_array): Don't require
	typedata; recursive arrays won't have it.

	* test/glib/test-dbus-glib.c:
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml: Add recursive arrays tests.
	
2005-07-20  John (J5) Palmieir  <johnp@redhat.com>

	* python/_dbus.py, _util.py, decorators.py, extract.py, matchrules.py.
	proxies.py, service.py: Cleanup of code after running it through the
	pyflakes code checker mostly dealing with undefined names.  
	(Bug #3828, Patch from Anthony Baxter <anthony@interlink.com.au>)

2005-07-17  John (J5) Palmieri  <johnp@redhat.com>

	* NEWS: Update to 0.35.2

2005-07-17  John (J5) Palmieri  <johnp@redhat.com>

	* python/_dbus.py: Remove import of the dbus.services
	module as it no longer exists (patch from Dimitur Kirov)

	* python/service.py (Object::__init__): Fixed typo
	s/name/bus_name (patch from Dimitur Kirov)

	* python/examples/example-signal-emitter.py: import dbus.glib
	to get the main loop and use glib mainloop instead of gtk so
	X doesn't have to be running.

	* python/examples/example-signal-recipient.py: import dbus.glib
	to get the main loop and use glib mainloop instead of gtk so
	X doesn't have to be running. Import the decorators module
	directly.

	* test/glib/Makefile.am:  Added DIST_EXTRA files that distcheck
	didn't pick up on but are needed to build

	* configure.in: upped version to 0.35.2

	* bus/driver.c, bus/selinux.c, bus/selinux.h, dbus/dbus-protocol.h:
	added Colin Walters' SELinux API rename patch from head 
	s/unix sercurity context/selinux security context/

2005-07-16  John (J5) Palmieri  <johnp@redhat.com>

	* python/Makefile.am: dbus_binding.pxd.in should be included 
	in EXTRA_DIST not dbus_binding.pxd
	fix up $(srcdir) hopefully for the last time

	* NEWS: Update to 0.35.1

2005-07-16  Colin Walters  <walters@verbum.org>

	* bus/driver.c (bus_driver_handle_get_connection_selinux_security_context): Renamed
	from bus_driver_handle_get_connection_unix_security_context.  Update for
	error usage.
	(message_handlers): Update for renames.

	* bus/selinux.c (bus_selinux_allows_send): Handle OOM on
	_dbus_string_init failure correctly.
	(bus_selinux_append_context): Convert SID to context.  Append it
	as a byte array.
	(bus_selinux_shutdown): Handle the case where bus_selinux_full_init
	hasn't been called.

	* bus/selinux.h: Update prototype.

	* dbus/dbus-protocol.h (DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN): Renamed
	from DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN.

2005-07-15  Colin Walters  <walters@verbum.org>

	* doc/TODO: Add note about convenience wrappers.

2005-07-15  John (J5) Palmieri  <johnp@redhat.com>

	* NEWS: Update to 0.35

2005-07-15  John (J5) Palmieri  <johnp@redhat.com>

	* glib/Makefile.am: Add make-dbus-glib-error-switch.sh to EXTRA_DIST
	so distcheck doesn't fail

	* glib/examples/Makefile.am: Add example-service.xml and 
	example-signal-emitter.xml to EXTRA_DIST so distcheck doesn't fail

	* glib/examples/statemachine/Makefile.am: Add statemachine.xml and
	statemachine-server.xml to EXTRA_DIST so distcheck doesn't fail

	* python/Makefile.am: Preprend $(srcdir)/ to source files so the
	compiler looks in the right places during distcheck

2005-07-15  John (J5) Palmieri  <johnp@redhat.com>

	* glib/example/Makefile.am: Fix a typo which cause make distcheck
	to fail

2005-07-15  John (J5) Palmieri  <johnp@redhat.com>

	* python/examples/example-service.py,
	python/examples/example-signal-emitter.py: Fixed up examples
	for API changes

2005-07-15  John (J5) Palmieri  <johnp@redhat.com>

	* python/__init__.py: Upped to version (0,42,0) because of
	the API change

2005-07-15  John (J5) Palmieri  <johnp@redhat.com>

	* ChangeLog: fix date in last entry

	* configure.in, bus/system.conf.in: add the ability to configure 
	the system bus user at compiletime with the --with-dbus-user flag
	(patch from Kristof Vansant)

2005-07-15  John (J5) Palmieri  <johnp@redhat.com>

	* bus/dispatch.c, test/test-service.c: Add testcase
	for sending messages to oneself (TODO item).

	* python/service.py (class Object): Swap ordering of bus_name 
	and object_path parameters to better support inheritance.

	* doc/dbus-tutorial.xml: change Python docs to reflect change
	in parameter ordering and fix the inheritance section.

	* doc/TODO: remove sending message to oneself TODO item

2005-07-15  Ross Burton  <ross@openedhand.com>

	* glib/dbus-gproxy.c:
	Fix a leak when calling methods via the proxy.

2005-07-15  Colin Walters  <walters@verbum.org>

	* bus/selinux.c (bus_selinux_append_context): Wrap in
	HAVE_SELINUX.

2005-07-14  John (J5) Palmieri  <johnp@redhat.com>

	* python/_dbus.py (Bus::remove_signal_receiver):
	don't add a callback to the match if none has been passed in
	
	* python/matchrules.py (SignalMatchTree::remove): if the rule
	being matched does not have a callback treat it as a wildcard
	fix matching logic

	* doc/dbus-tutorial.xml: Add Python tutorial

2005-07-14  Colin Walters  <walters@verbum.org>

	* bus/driver.c
	(bus_driver_handle_get_connection_unix_security_context): New function.
	(message_handlers): Add.

	* bus/selinux.c (bus_selinux_append_context): New function; appends
	security context to message.

	* bus/selinux.h: Prototype.

	* dbus/dbus-protocol.h (DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN): New.

2005-07-14  John (J5) Palmieri  <johnp@redhat.com>

	* bus/activation.c: clean up all tabs to be 8 spaces 
	(bus_activation_activate_service): make sure we clean up
	if activation fails

	* bus/dispatch.c: clean up all tabs to be 8 spaces 
	(check_shell_fail_service_auto_start): New function
	tests to make sure we get fail properly when trying to auto start a service
	with a faulty command line
	(check_shell_service_success_auto_start): New function tests to make sure
	auto started services get the arguments on the command line

	* test/test-shell-service.c: Added service for testing auto-starting with 
	command line arguments

	* test/data/valid-service-files/debug-shell-echo-fail.service.in, 
	test/data/valid-service-files/debug-shell-echo-success.service.in:
	Added service files for testing auto-starting with command line arguments

	* */.cvsignore: added a bunch of generated files to various .cvsignore files

2005-07-14  Rodrigo Moya  <rodrigo@novell.com>

	* dbus/dbus-shell.[ch]: copy/pasted code from GLib.
	
	* dbus/Makefile.am: added new files to build.

	* bus/activation.c (bus_activation_activate_service): support
	activation commands with parameters.

	* test/shell-test.c: added test program for the shell parsing
	code.

2005-07-13  David Zeuthen  <davidz@redhat.com>

	* tools/dbus-send.c (append_arg, type_from_name): Also support 16 and
	64 bit signed and unsigned parameters

2005-07-13  John (J5) Palmieri  <johnp@redhat.com>

	* python/.cvsignore: remove dbus_bindings.pyx, add dbus_bindings.pxd

	* python/service.py (class Name): renamed BusName to make it clearer
	what the object is for (a name on the bus)

	* python/examples/example-service.py,
	python/examples/example-signal-emitter.py: change the Name object to
	BusName

2005-07-12  Colin Walters  <walters@verbum.org>

	Patch from Jim Gettys <Jim.Gettys@hp.com>.

	* tools/dbus-launch.c: Include sys/select.h.

2005-07-12  John (J5) Palmieri  <johnp@redhat.com>
	* python/dbus_bindings.pyx.in: removed

	* python/dbus_bindings.pyx: Added.
	- Fixed some memleaks (patch from 
	Sean Meiners <sean.meiners@linspireinc.com>)
	- Broke out the #include "dbus_h_wrapper.h" and put it in its
	own pxd file (Pyrex definition)
	- Broke out glib dependancies into its own pyx module
	
	* python/dbus_bindings.pdx: Added.
	- Defines C class Connection for exporting to other modules

	* python/dbus_glib_bindings.pyx: Added.
	- New module to handle lowlevel dbus-glib mainloop integration

	* python/glib.py: Added.
	- Registers the glib mainloop when you import this module

	* python/services.py: Removed (renamed to service.py)
	
	* python/service.py: Added.
	- (class Server): renamed Name

	* python/__init__.py: Bump ro version (0,41,0)
	-don't import the decorators or service module
	by default.  These now reside in the dbus.service namespace

	* python/_dbus.py (Bus::__init__): Add code run the main loop 
	setup function on creation 

	* python/examples/example-service.py,
	python/examples/example-signal-emitter.py: update examples

	* python/examples/gconf-proxy-service.py,
	python/examples/gconf-proxy-service2.py: TODO fix these up

	* doc/TODO: Addition
	- Added a Python Bindings 1.0 section
	- added "Add match on args or match on details to match rules"


2005-07-12  Colin Walters  <walters@verbum.org>

	* glib/examples/statemachine/Makefile.am (statemachine-server-glue.h) 
	(statemachine-glue.h): 
	* glib/examples/Makefile.am (example-service-glue.h) 
	(example-signal-emitter-glue.h): 
	* glib/Makefile.am (dbus-glib-error-switch.h): 
	Add libtool --mode=execute so we use the built library instead
	of any installed one.

2005-07-11  Colin Walters  <walters@verbum.org>

	* glib/dbus-gvalue.c (struct _DBusGValue): Delete.
	(dbus_g_value_types_init): Remove assertion.
	(dbus_g_value_get_g_type, dbus_g_value_open)
	(dbus_g_value_iterator_get_values, dbus_g_value_get_signature)
	(dbus_g_value_copy, dbus_g_value_free): Delete unimplemented
	functions related to DBusGValue.  Now we marshal/demarshal
	structures as GValueArray.
	(dbus_gtype_from_signature_iter): Return G_TYPE_VALUE_ARRAY for
	structures.
	(signature_iter_to_g_type_array): Don't call
	signature_iter_to_g_type_struct.
	(signature_iter_to_g_type_struct): Delete.
	(dbus_gvalue_to_signature): Delete.
	(dbus_gvalue_to_signature): New function with same name as other
	one; we can convert structures to signatures.
	(demarshal_valuearray): New function.
	(get_type_demarshaller): Use it.
	(demarshal_recurse): Delete.
	(marshal_proxy): New function.
	(marshal_map): Warn if we can't determine signature from type.
	(marshal_collection_ptrarray): Ditto.
	(marshal_collection_array): Ditto.
	(get_type_marshaller): Use marshal_valuearray.
	(marshal_recurse): Delete.
	(_dbus_gvalue_test): Add some tests.

	* dbus/dbus-glib.h (struct _DBusGValueIterator): 
	(dbus_g_value_get_g_type, DBUS_TYPE_G_VALUE)
	(dbus_g_value_open, dbus_g_value_iterator_get_value)
	(dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
	(dbus_g_value_free): Remove prototypes.

	* glib/dbus-binding-tool-glib.c (dbus_g_type_get_lookup_function): Handle
	G_TYPE_VALUE_ARRAY.

	* glib/examples/example-service.c:
	* glib/examples/example-client.c: Implement GetTuple.

	* test/glib/test-dbus-glib.c:
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml: Add structure tests.

2005-07-10  Colin Walters  <walters@verbum.org>

	* doc/TODO: Knock off some GLib items with this patch.

	* glib/dbus-gvalue-utils.c (_dbus_gtype_can_signal_error) 
	(_dbus_gvalue_signals_error): New functions.

	* glib/dbus-gvalue-utils.h: Prototype them.

	* glib/dbus-gobject.c (arg_iterate): Update to handle return vals
	and change to not output const/retval flags for input args.  All
	callers updated.
	(invoke_object_method): Refactor to handle return values.  Add
	some more comments in various places.  Remove debug g_print.

	* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_RETURNVAL): New.

	* glib/dbus-binding-tool-glib.c (dbus_g_type_get_marshal_name):
	Handle G_TYPE_NONE.
	(compute_gsignature): New function; refactored from code from
	compute_marshaller and compute_marshaller_name.  Enhance to
	handle return values and async ops more cleanly.  Update for
	async ops returning NONE instead of BOOLEAN.
	(compute_marshaller, compute_marshaller_name): Call compute_gsignature
	and output appropriate string.
	(generate_glue): Handle return value annotation.  Also don't dump
	constness flag for input arguments.

	* glib/Makefile.am (DBUS_GLIB_INTERNALS): New variable; contains
	files shared between installed library and utilities.
	(libdbus_glib_1_la_SOURCES): Move some stuf into DBUS_GLIB_INTERNALS.
	(libdbus_gtool_la_SOURCES): Suck in DBUS_GLIB_INTERNALS so the
	binding tool can access gtype utility functions.

	* test/glib/test-service-glib.c: 
	* test/glib/test-service-glib.xml: 
	* test/glib/test-dbus-glib.c: Add some tests for return values.

2005-07-09  Colin Walters  <walters@verbum.org>

	* glib/dbus-gparser.c (parse_annotation): Add annotations to
	argument if available, not method.

	* glib/dbus-gobject.c (arg_iterate): More verbose warnings.
	(invoke_object_method): First, remove some redundant
	GValues (object_value, error_value) in favor of working on
	array directly.  Second, rework constness to be less buggy.
	Now we iterate directly over the argument metadata instead
	of parallel iterating over output signature and metadata.

	* glib/dbus-glib-tool.h: Add INVALID_ANNOTATION error.

	* glib/dbus-binding-tool-glib.c (generate_glue): Barf on const
	annotation on input args.
	
2005-07-09  Colin Walters  <walters@verbum.org>

	* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_CONST):
	Define.

	* glib/dbus-binding-tool-glib.c (generate_glue): Handle Const
	annotation.

	* glib/dbus-gobject.c (arg_iterate): Update to parse constval too.
	(method_dir_signature_from_object_info): Handle arg_iterate change.
	(write_interface): Ditto.
	(lookup_object_info): Don't barf if format_version is > 0.
	(invoke_object_method): Handle arg constness.

	* glib/dbus-gidl.c (struct ArgInfo): Add annotations.
	(arg_info_new): Create.
	(arg_info_unref): Destroy.
	(arg_info_get_annotations, arg_info_get_annotation) 
	(arg_info_add_annotation): New functions.

	* glib/dbus-gidl.h: Prototype them.

	* glib/dbus-gparser.c (parse_annotation): Allow annotations in
	args, disallow them in properties.
	(parse_annotation): Handle arg annotations.

	* test/glib/test-service-glib.xml: 
	* test/glib/test-service-glib.c: Update to make some methods
	const.

2005-07-08  Colin Walters  <walters@verbum.org>

	* test/glib/test-service-glib.xml: 
	* test/glib/test-service-glib.c:
	* test/glib/test-dbus-glib.c: Test a{sv}.

	* glib/examples/statemachine/statemachine.c:
	* glib/examples/statemachine/statemachine-server.c:
	* glib/examples/statemachine/statemachine-client.c: Fix some bugs,
	add progress bar, etc.

	* glib/dbus-gvalue.c (register_array, register_dict): Delete; not
	needed anymore due to generic array/map marshalling.
	(dbus_g_value_types_init): Don't register basic arrays or the
	string/string hash.
	(dbus_gtype_from_signature_iter): Don't try to recurse into
	variants.
	(dbus_gtype_to_signature): Check collection/map before type
	metadata.
	(demarshal_garray_basic): Renamed to demarshal_collection_array.
	(demarshal_ghashtable): Renamed to demarshal_map; fix to use new
	generic map creation/append functions instead of hash table
	specifically.
	(get_type_demarshaller): Handle maps.
	(demarshal_collection): Dispatch on collection type to either
	demarshal_collection_ptrarray or demarshal_collection_array.
	(get_type_marshaller): Handle maps.
	(marshal_collection): Dispatch collection type to either
	marshal_collection_ptrarray or marshal_collection_array.
	(_dbus_gvalue_test): New test.

	* glib/dbus-gvalue-utils.c (unset_and_free_g_value): New function.
	(hash_free_from_gtype): Use it to free GValues.
	(hashtable_append): New function.
	(ptrarray_append): Fix prototype.
	(slist_append): Ditto.
	(_dbus_gvalue_utils_test): Extend tests.

	* glib/dbus-gtype-specialized.c
	(dbus_g_type_specialized_init_append): Renamed from
	dbus_g_type_specialized_collection_init_append.  Remove const from
	value, since we steal it.
	(dbus_g_type_specialized_map_append): New function.

	* glib/dbus-gtype-specialized.h: Update prototypes.
	Add DBusGTypeSpecializedMapAppendFunc.

	* glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
	_dbus_gvalue_test.
	
	* glib/dbus-gtest.h: Prototype it.

2005-07-08  Ross Burton  <ross@openedhand.com>

	* dbus/dbus-glib.h:
	Add DBysGAsyncData for the async bindings.

	* glib/dbus-binding-tool-glib.c:
	Re-enable the async bindings.

	* test/glib/test-dbus-glib.c:
	Add a test for the generated async bindings.

2005-07-08  Colin Walters  <walters@verbum.org>

	* doc/TODO: Update GLib todo bits, also add a post-1.0 TODO for a
	connection concept.
	
2005-07-08  Colin Walters  <walters@verbum.org>
	
	* tools/Makefile.am: Kill of print-introspect in favor of using
	dbus-send --print-reply=literal.

	* test/glib/test-service-glib.xml: 
	* test/glib/test-service-glib.c (my_object_get_objs): New test
	for "ao".

	* test/glib/test-dbus-glib.c (echo_received_cb): Free echo data.
	(main): Test GetObjs.

	* glib/examples/statemachine/Makefile.am:
	* glib/examples/statemachine/sm-marshal.list:
	* glib/examples/statemachine/statemachine-client.c:
	* glib/examples/statemachine/statemachine-server.c:
	* glib/examples/statemachine/statemachine-server.xml:
	* glib/examples/statemachine/statemachine.c:
	* glib/examples/statemachine/statemachine.h:
	* glib/examples/statemachine/statemachine.xml:

	New example.

	* glib/examples/example-service.c (main): Move invocation
	of dbus_g_object_type_install_info earlier, to emphasize it
	should only be done once.

	* glib/examples/example-signal-emitter.c (main): Ditto.

	* glib/examples/Makefile.am (SUBDIRS): Include statemachine.

	* glib/dbus-gvalue.h (dbus_gtype_to_signature)
	(dbus_gvalue_marshal): Update prototypes.

	* glib/dbus-gvalue.c: Update all marshalling functions to take
	const GValue instead of GValue.
	(signature_iter_to_g_type_array): Return a GPtrArray for nonfixed
	types.
	(dbus_gvalue_to_signature): Update for dbus_gtype_to_signature
	change.
	(dbus_gtype_to_signature): Handle generic collecitons and maps.
	Return a newly-allocated string.
	(demarshal_proxy, demarshal_object_path, demarshal_object)
	(demarshal_strv, demarshal_ghashtable): Set error, don't assert if
	we get the wrong types from message.
	(get_type_demarshaller): New function, extracted from
	dbus_gvalue_demarshal.
	(demarshal_collection): New function, demarshals generic
	collection.
	(dbus_gvalue_demarshal): Just invoke result of
	get_type_demarshaller.  Throw error if we don't have one.
	(marshal_garray_basic): Abort on OOM.
	(get_type_marshaller): New function, extracted from
	dbus_gvalue_marshal.
	(collection_marshal_iterator, marshal_collection): New functions;
	implements generic marshalling for an iteratable specialized
	collection.
	(dbus_gvalue_marshal): Just invoke result of get_type_marshaller.

	* glib/dbus-gvalue-utils.c (gvalue_from_ptrarray_value): Handle
	G_TYPE_STRING.
	(ptrarray_value_from_gvalue): Ditto.
	(ptrarray_append, ptrarray_free): New functions.
	(slist_constructor, slist_iterator, slist_copy_elt, slist_copy) 
	(slist_append, slist_end_append, slist_free): New functions.
	(dbus_g_type_specialized_builtins_init): Add append fuctions
	for GPtrArray and GSList.  Register GSList.
	(test_specialized_hash, _dbus_gvalue_utils_test): New functions.

	* glib/dbus-gtype-specialized.h (DBusGTypeSpecializedAppendContext):
	New.
	(dbus_g_type_specialized_collection_init_append)
	(dbus_g_type_specialized_collection_append)
	(dbus_g_type_specialized_collection_end_append): Prototype.
	(DBusGTypeSpecializedCollectionVtable): Add append_func and
	end_append_func.

	* glib/dbus-gtype-specialized.c (dbus_g_type_specialized_collection_init_append) 
	(dbus_g_type_specialized_collection_append) 
	(dbus_g_type_specialized_collection_end_append): New functions.
	(dbus_g_type_map_value_iterate): Take const GValue.
	(dbus_g_type_collection_value_iterate): Ditto.

	* glib/dbus-gtest.c (dbus_glib_internal_do_not_use_run_tests): Run
	_dbus_gvalue_utils_test.
	
	* glib/dbus-gtest.h: Prototype it.

	* glib/dbus-gproxy.c (dbus_g_proxy_manager_filter): Avoid
	using uninitialized owner_list.
	(dbus_g_proxy_begin_call_internal): Move return_if_fail to
	public API.
	(dbus_g_proxy_end_call_internal): Update to use error set
	from dbus_gvalue_demarshal instead of setting it here.
	(dbus_g_proxy_begin_call): Move return_if_fail here.

	* glib/dbus-gobject.c (write_interface): Update for
	dbus_gtype_to_signature returning new string.

	* configure.in: Add glib/examples/statemachine.

2005-07-08  Joe Shaw  <joeshaw@novell.com>

	* configure.in: Add a configure option, --with-console-auth-dir
	
	* dbus/dbus-sysdeps-util.c (_dbus_user_at_console): Use the
	new setting.  Patch from Kay Sievers.

2005-07-06  Colin Walters  <walters@verbum.org>

	* dbus/dbus-glib.h (DBusGPendingCall, DBusGPendingCallNotify)
	(DBUS_TYPE_G_PENDING_CALL, dbus_g_pending_call_get_g_type)
	(dbus_g_pending_call_ref, dbus_g_pending_call_unref): Delete.
	(dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel):
	Delete in favor of dbus_g_proxy_begin_call and
	dbus_g_proxy_cancel_call.
	(DBusGProxyCall, DBusGProxyCallNotify): New.
	(dbus_g_proxy_begin_call): Change prototype to take callback, user
	data, and destroy function.  This replaces
	dbus_g_pending_call_set_notify.
	(dbus_g_proxy_cancel_call): Prototype.
	(DBusGAsyncData): Delete, shouldn't be needed anymore.

	* glib/dbus-gproxy.c (struct _DBusGProxy): Add call_id_counter and
	pending_calls map.
	(struct _DBusGProxyManager): Add bus_proxy member, which is an
	internal proxy for calls to the bus. Remove
	pending_nameowner_calls, now the internal proxy keeps track.
	(dbus_g_proxy_manager_unref): Unref bus proxy, remove reference to
	pending_nameowner_calls.
	(got_name_owner_cb): Update prototype, and use
	dbus_g_proxy_end_call.
	(got_name_owner_cb): Remove reference to pending_nameowner_calls.
	(dbus_g_proxy_manager_register): Delete directly libdbus code in
	favor of using internal proxy.
	(dbus_g_proxy_manager_unregister): Update to use
	dbus_g_proxy_cancel_call for any pending GetNameOwner call.
	(dbus_g_proxy_init): Initialize pending calls map.
	(dbus_g_proxy_constructor): New.
	(dbus_g_proxy_class_init): Add get/set property functions,
	constructor, and add NAME, PATH, and INTERFACE properties.
	(cancel_pending_call): New function.
	(dbus_g_proxy_dispose): Iterate over any outstanding calls and
	cancel them.
	(dbus_g_proxy_set_property, dbus_g_proxy_get_property): New.
	(GPendingNotifyClosure): New structure.
	(d_pending_call_notify, d_pending_call_free): Moved here from
	dbus-glib.c.
	(DBUS_G_VALUE_ARRAY_COLLECT_ALL): Moved around to satisfy function
	ordering.
	(manager_begin_bus_call): New internal function for talking to
	internal bus proxy.
	(dbus_g_proxy_new): Construct object using GObjet properties.
	(dbus_g_proxy_begin_call_internal): Update to take user data, etc.
	Create closure of same, and insert call into map of pending calls.
	(dbus_g_proxy_end_call_internal): Take call id instead of pending
	call.  Look up pending call in current set.  Remove it when we've
	completed.
	(dbus_g_pending_call_end, dbus_g_proxy_end_call_internal): Delete.
	(dbus_g_proxy_begin_call): Change API to take callback, user data,
	and destroy function directly.
	(dbus_g_proxy_end_call): Update to take DBusGProxyCall.
	(dbus_g_proxy_call): Invoke with NULL callback.
	(dbus_g_proxy_cancel_call): New function, replaces
	dbus_g_pending_call_cancel.

	* glib/dbus-gparser.c (validate_signature): Fix call to
	dbus_set_g_error.

	* glib/dbus-gobject.c (dbus_g_object_type_dbus_metadata_quark):
	New quark for attaching metadata to GType.
	(info_hash): Delete.
	(lookup_object_info): Look up using quark.
	(dbus_g_object_type_install_info): Check that a type is classed,
	not that it's an object.  Also just install type data using quark
	instead of using global hash.

	* glib/dbus-glib.c (dbus_g_pending_call_ref) 
	(dbus_g_pending_call_unref, dbus_pending_call_get_g_type)
	(GPendingNotifyClosure): Delete.
	(d_pending_call_notify, d_pending_call_free): Move to dbus-gproxy.c.
	(dbus_g_pending_call_set_notify, dbus_g_pending_call_cancel): Delete.

	* glib/dbus-binding-tool-glib.c (generate_client_glue): Disable async
	client method generation until we can fix it...
	
	* tools/dbus-viewer.c (load_child_nodes): Use dbus_g_proxy_call.
	(load_from_service_thread_func): Ditto.

	* tools/dbus-names-model.c (struct NamesModel): Hold
	DBusGProxyCall.
	(have_names_notify): Update prototype, use
	dbus_g_proxy_cancel_call.
	(names_model_reload): Update for new dbus_g_proxy_begin_call API.

	* tools/dbus-monitor.c (filter_func): Update for print_message
	API change.

	* test/glib/test-dbus-glib.c: Add more tests for async
	invocations.  Update many begin_call/end_call pairs to just use
	dbus_g_proxy_call.

	* tools/dbus-send.c (main): Add --print-reply=literal mode.  This
	allows us to dump print-introspect.c.

	* tools/dbus-print-message.h (print_message): Add literal argument
	to print_message which is intended to allow printing arguments without
	metadata like "string=".

	* tools/dbus-print-message.c (print_iter): Add literal argument.
	(print_message): Allow printing string messages literally.

2005-07-05  Colin Walters  <walters@verbum.org>

	* glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
	Remove value refcount leak, original patch from Jorn Baayen
	<jorn@openedhand.com>.  Also remove useless extra value in favor
	of prepending to value array directly.

2005-07-02  Colin Walters  <walters@verbum.org>

	* glib/dbus-gmain.c (_dbus_gmain_test): Fix test.

2005-07-01  Colin Walters  <walters@verbum.org>

	Patch from Jonathan Matthew <jonathan@kaolin.hn.org>
	
	* glib/dbus-gvalue.c (basic_typecode_to_gtype): Fix return type.
	(dbus_g_value_types_init): Marshal G_TYPE_CHAR as DBUS_TYPE_BYTE,
	G_TYPE_LONG as DBUS_TYPE_INT32, G_TYPE_ULONG as DBUS_TYPE_UINT32,
	and G_TYPE_FLOAT as DBUS_TYPE_DOUBLE.

2005-06-30  Colin Walters  <walters@verbum.org>

	* test/glib/test-dbus-glib.c:
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml: Update tests for new error
	setting bits, also add async tests (patch from Ross Burton).

	* test/glib/Makefile.am (test_service_glib_LDADD): Add
	DBUS_GLIB_THREADS_LIBS.

	* glib/dbus-gproxy.c (get_name_owner)
	(dbus_g_pending_call_end_valist): Ditto.

	* glib/dbus-gobject.c (error_metadata): New mapping from GError
	domain (GQuark) to DBusGErrorInfo.  
	(gerror_domaincode_to_dbus_error_name): Attempt to look up error
	quark in error_metadata.  Take message interface as default
	error message interface.
	(gerror_to_dbus_error_message): Pass message interface.
	(dbus_set_g_error): Resurrected.
	(dbus_g_error_info_free): New function.
	(dbus_g_object_type_install_info): Use g_type_class_ref instead
	of _peek to actually create the object class if it hasn't been
	created yet.
	(dbus_g_error_domain_register): New function.

	* glib/dbus-gmain.c (dbus_g_bus_get): Switch to dbus_set_g_error.

	* glib/dbus-gparser.c (validate_signature): Ditto.

	* dbus/dbus-glib.h (dbus_g_error_set): Delete.
	(dbus_g_error_domain_register): Prototype.

	* glib/dbus-glib.c (dbus_g_error_set): Delete.
	Update tests.

2005-06-29  Colin Walters  <walters@verbum.org>

	* dbus/dbus-glib.h: Delete DBUS_TYPE_G_PROXY_ARRAY.  Add
	DBUS_TYPE_G_OBJECT_PATH.

	* glib/dbus-gvalue.c (dbus_g_value_types_init): Remove marshallers
	for G_TYPE_OBJECT and DBUS_TYPE_G_PROXY_ARRAY (the latter should
	be handled more generically).  Add DBUS_TYPE_G_OBJECT_PATH.
	(dbus_g_object_path_get_g_type): New function.
	(dbus_gtype_from_signature_iter): Map DBUS_TYPE_OBJECT_PATH
	to DBUS_TYPE_G_OBJECT_PATH by default.
	(demarshal_proxy): Remove unused name variable.
	(demarshal_object_path, marshal_object_path): New functions.
	(demarshal_proxy_array, marshal_proxy_array): Delete.
	
	* glib/dbus-binding-tool-glib.c (dbus_g_type_get_c_name): Map
	DBUS_TYPE_G_OBJECT_PATH to char *.
	(dbus_g_type_get_lookup_function): Map builtin
	DBUS_TYPE_G_OBJECT_PATH.

	* test/glib/test-dbus-glib.c
	* test/glib/test-service-glib.c (my_object_objpath): 
	Adapt tests to new object path marshalling.

2005-06-29  John (J5) Palmieri  <johnp@redhat.com>

	* configure.in: force check for Python >= 2.4

2005-06-29  Colin Walters  <walters@verbum.org>
	
	Patch from Ross Burton <ross@openedhand.com>
	
	* glib/dbus-gobject.c (invoke_object_method): Unset object
	value in all cases, not only in async case.

2005-06-29  Colin Walters  <walters@verbum.org>

	* glib/dbus-gproxy.c (struct _DBusGProxy): Add new member
	name_call for keeping track of any outgoing GetNameOwner call.
	Also add for_owner and associated.
	(struct _DBusGProxyManager): Add owner_names, which is hash table
	that maps a base name to a list of names it owns (that we're
	interested in).  Add pending_nameowner_calls which is a list of
	all outstanding GetNameOwner; avoids us having to iterate over
	every proxy.  Add unassociated_proxies which keeps track of name
	proxies with no associated name owner.
	(dbus_g_proxy_manager_unref): Destroy owner_names.
	(struct DBusGProxyNameOwnerInfo): New struct for keeping track of
	name refcounts.
	(find_name_in_info, name_owner_foreach)
	(dbus_g_proxy_manager_lookup_name_owner, insert_nameinfo)
	(dbus_g_proxy_manager_monitor_name_owner)
	(dbus_g_proxy_manager_unmonitor_name_owner)
	(unassociate_proxies, dbus_g_proxy_manager_replace_name_owner):
	New functions; they manipulate the owner_names mapping.
	(got_name_owner_cb): New function.
	(get_name_owner): New function, extracted from
	dbus_g_proxy_new_for_name_owner.
	(dbus_g_proxy_manager_register): For now we need to keep track of
	all NameOwnerChanged.  Also if the proxy is for a name, if we
	don't already know the name owner, queue a new GetNameOwner
	request and add it to our list of unassociated proxies.  Otherwise
	inc the refcount.
	(dbus_g_proxy_manager_unregister): If this proxy is for a name,
	cancel any pending GetNameOwner call, etc.
	(dbus_g_proxy_manager_filter): Handle NameOwnerChanged.  Also use
	the owner_names mapping to look up the current names for the
	signal source, and dispatch to any proxies for that name.
	(dbus_g_proxy_new): Initialize new members.
	(dbus_g_proxy_new_for_name): Delete unused proxy variable.
	(dbus_g_proxy_new_for_name_owner): Use get_name_owner.
	(dbus_g_pending_call_end_valist): New function, extracted from
	dbus_g_proxy_end_call_internal.  Useful when we don't have a proxy
	but want to use the GLib infrastructure.  Also note how many
	arguments in reply were over.
	(dbus_g_pending_call_end): New function, just call
	dbus_g_pending_call_end_valist.
	(dbus_g_proxy_end_call_internal): Just call
	dbus_g_pending_call_end_valist.

	* glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Fix lookup
	of builtin marshaller for STRING_STRING_STRING.

	* test/glib/test-dbus-glib.c: 
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml:
	Extend tests to cover name proxies, destruction of owner proxies,
	etc.
	
	* glib/examples/example-signal-recipient.c
	(dbus_g_proxy_new_for_name_owner): Create a name proxy.
	
	* tools/dbus-send.c (main): Print D-BUS error name in addition
	to message.

2005-06-28  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in (cunregister_function_handler,
	cmessage_function_handler): Patch from 
	Anthony Baxter <anthony@interlink.com.au> fixes threading problems
	by using the Py_GILState_Ensure/Release to synchronize with the
	python runtime.
	
2005-06-28  Ray Strode  <rstrode@redhat.com>

	*  dbus/dbus-spawn.c (_dbus_babysitter_unref): kill
	babysitter helper process on last unref, bug #2813.

2005-06-27  Colin Walters  <walters@verbum.org>

	* test/glib/test-dbus-glib.c: 
	* test/glib/test-service-glib.c:
	* test/glib/test-service-glib.xml:
	Test hash table signal emitting.

	* glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller): Convert
	types to their fundamental basis types, since this is what
	marshallers operate on.  Also add an entry for VOID__BOXED.
	(dbus_g_object_register_marshaller_array): Convert to fundamental.

2005-06-26  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-tutorial.xml: fix names of interface/service/path, fix
	from Don Park

2005-06-26  Colin Walters  <walters@verbum.org>

	* glib/dbus-glib.c (dbus_set_g_error): Delete.
	(dbus_g_error_set): New public function from its ashes; used by
	both service-side method implementation and GLib bindings
	internals.
	(dbus_g_error_has_name, dbus_g_error_get_name): New function.
	(_dbus_glib_test): Add some tests.

	* test/glib/test-dbus-glib.c (main): Test dbus_g_error_has_name.

	* test/glib/test-service-glib.c (my_object_throw_error): Use
	dbus_g_error_set.

	* glib/dbus-gobject.c (gerror_to_dbus_error_message): Handle
	errors thrown by dbus_g_error_set.

	* glib/dbus-gmain.c (dbus_g_bus_get): Change to dbus_g_error_set.

	* glib/dbus-gparser.c (validate_signature): Ditto.

	* glib/dbus-gproxy.c (dbus_g_proxy_new_for_name_owner) 
	(dbus_g_proxy_end_call_internal): Ditto.

	* glib/Makefile.am: Generate dbus-glib-error-switch.h, which
	converts DBUS_ERROR_x to DBUS_GERROR_x.
	(libdbus_glib_1_la_SOURCES, BUILT_SOURCES, CLEANFILES): Add it.

	* doc/TODO: Remove error TODO.

	* doc/dbus-tutorial.xml: Update with documentation about error
	handling.

	* dbus/make-dbus-glib-error-enum.sh: Tighten up regexp to make
	sure we only change DBUS_ERROR to DBUS_GERROR, not all ERROR to
	GERROR.  Also add DBUS_GERROR_REMOTE_EXCEPTION.

2005-06-22  Colin Walters  <walters@verbum.org>
	
	Patch from Ross Burton <ross@openedhand.com>

	* glib/dbus-gobject.c (dbus_g_method_return): Free out_sig.

2005-06-20  Colin Walters  <walters@verbum.org>

	* configure.in: Add glib/examples.

	* glib/Makefile.am: Add examples/

	* glib/examples/.cvsignore
	* glib/examples/Makefile.am
	* glib/examples/example-client.c
	* glib/examples/example-service.c
	* glib/examples/example-service.xml
	* glib/examples/example-signal-emitter.c
	* glib/examples/example-signal-emitter.xml
	* glib/examples/example-signal-recipient.c:
	New files; GLib binding examples, ported from
	python/examples.

2005-06-20  Colin Walters  <walters@verbum.org>

	* dbus/dbus-glib.h: 
	* glib/dbus-gproxy.c: Rename dbus_g_proxy_invoke to
	dbus_g_proxy_call.

	* glib/dbus-binding-tool-glib.c: 
	* doc/dbus-tutorial.xml: 
	* test/glib/test-dbus-glib.c: Update for rename.
	
2005-06-20  Colin Walters  <walters@verbum.org>

	Patch suggested by Ross Burton <ross@openedhand.com>

	* glib/dbus-gobject.c (export_signals): Free signal name.
	(g_value_init): Use G_VALUE_NOCOPY_CONTENTS to plug
	memory leak.  Add a bit of documentation.
	(dbus_g_method_return_error): Free context, and note we do
	so.

2005-06-18  Murray Cumming  <murrayc@murrayc.com>

	* dbus/dbus-glib.h:
	* glib/dbus-gobject.c:
	* glib/dbus-gproxy.c:
	* glib/dbus-gvalue.c: Predeclare structs as 
	typedef struct _Something Something instead of 
  	typedef struct Something Something, so we can 
	redeclare the prototypes. Other GNOME libraries 
	do this already.

2005-06-17  Colin Walters  <walters@verbum.org>

	* tools/dbus-names-model.c (have_names_notify): Fix call
	to dbus_g_proxy_end_call.
	
2005-06-17  Colin Walters  <walters@verbum.org>

	* glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): Don't
	spew warnings if we get malformed remote signals.

	* glib/dbus-gobject.c (propsig_iterate): New function.
	(lookup_object_info): New function, extracted from
	lookup_object_and_method.
	(introspect_properties, introspect_signals): Delete; these
	are merged into write_interface.
	(write_interface): Write out signals and properties here;
	dump the org.gtk.object stuff and use the interface given
	in the introspection data blob.  Also fix up property XML.
	(lookup_values): New function.
	(introspect_interfaces): Gather a mapping from interface to a
	list of its methods, signals, and properties, then write out
	each interface.
	(lookup_object_and_method): Use lookup_object_info.
	(struct DBusGSignalClosure): Add interface.
	(dbus_g_signal_closure_new): Add interface. Don't dup signame;
	we can just use the constant data.
	(dbus_g_signal_closure_finalize): Don't free signal name.
	(signal_emitter_marshaller): Use interface from signal closure.
	(export_signals): Only export signals mentioned in introspection
	blob.
	(dbus_g_connection_register_g_object): Warn if we have no
	introspection data for an object.
	(funcsig_equal): Remove unused variable.
	(dbus_g_object_register_marshaller): Take varargs instead of
	list.
	(dbus_g_object_register_marshaller_array): New function,
	extracted from old dbus_g_object_register_marshaller.

	* glib/dbus-binding-tool-glib.c (struct DBusBindingToolCData): Add
	signals and property data.
	(write_quoted_string): New function, extracted from generate_glue.
	(generate_glue): Write signals and properties to introspection
	blob.

	* dbus/dbus-glib.h (struct DBusGObjectInfo): Include
	exported_signals and exported_properties.
	(dbus_g_object_register_marshaller): Update prototype.
	(dbus_g_object_register_marshaller_array): Prototype.
	
	* test/glib/test-dbus-glib.c: Extend testing to cover new signals.

	* test/glib/test-service-glib.c: Add new test signals and method
	to emit them.

	* test/glib/test-service-glib.xml: Add some test signals.

	* test/glib/Makefile.am (BUILT_SOURCES): Add my-object-marshal.c
	and my-object-marshal.h
	(test_service_glib_SOURCES, test_dbus_glib_SOURCES): Add
	my-object-marshal.c.
	(my-object-marshal.c, my-object-marshal.h): Implement.

	* test/glib/.cvsignore: Update.

	* doc/TODO: Remove two GLib TODO items fixed by this
	patch.

2005-06-16  Colin Walters  <walters@verbum.org>

	* doc/TODO: Update for GLib bindings.
	
2005-06-16  Colin Walters  <walters@verbum.org>

	* glib/dbus-binding-tool-glib.c:
	* glib/dbus-gobject.c:
	* glib/dbus-gproxy.c:  Add Nokia copyright; Patch
	from Ross Burton, for his GLib bindings work.

2005-06-16  Colin Walters  <walters@verbum.org>

	* glib/dbus-gobject.c (funcsig_hash, funcsig_equal): Use n_params
	to iterate instead of walking to G_TYPE_INVALID.

	Patch based on a patch from Ryan Gammon.

2005-06-16  Colin Walters  <walters@verbum.org>

	* bus/bus.c (bus_context_new): Set parser to NULL
	after we unref it (Patch from Chris Boscolo, #2174).
	
2005-06-16  Colin Walters  <walters@verbum.org>

	* python/dbus_bindings.pyx.in: Import size_t,
	__int64_t, __uint64_t, and __signed.

	* dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (write_credentials_byte):
	Define cmsg struct, output it.
	(_dbus_read_credentials_unix_socket):
	Use cmsg struct.
	
	Patch from Joe Markus Clarke for FreeBSD support.
	
2005-06-16  Colin Walters  <walters@verbum.org>

	* tools/dbus-send.c (append_array): Use strtok.
	(append_dict): New function.
	(type_from_name): New function, extracted from main.
	(main): Handle sending dicts.

	* tools/dbus-print-message.c (print_iter): Print dict
	entries.
	
2005-06-16  Colin Walters  <walters@verbum.org>

	* glib/dbus-gvalue.c (marshal_basic): Marshal NULL string
	values as the empty string (#2948).
	
2005-06-16  Colin Walters  <walters@verbum.org>

	* dbus/Makefile.am:
	* mono/doc/Makefile.am:
	* test/glib/Makefile.am:

	Fix srcdir != builddir issues (Patch from Chris Wilson, #3477)

2005-06-16  Colin Walters  <walters@verbum.org>

	* dbus/dbus-marshal-header.c (_dbus_header_load): Set
	header byte order from expected byte order (Patch from Chris Wilson, #3475).

	* dbus/dbus-marshal-byteswap.c (byteswap_body_helper): 
	Increment pointer after swapping fixed array.  Add assertion
	for array length.
		
2005-06-15  Colin Walters  <walters@verbum.org>

	* dbus/dbus-sysdeps.c <HAVE_CMSGCRED> (_dbus_read_credentials_unix_socket):
	Fix call to dbus_set_error.  (Patch from Michael Banck, #3461)
	
2005-06-15  John (J5) Palmieri  <johnp@redhat.com>

	* NEWS: Update to 0.34

2005-06-15  David Zeuthen  <davidz@redhat.com>

	* configure.in (LT_CURRENT): Revert back to 1 as the library
	hasn't changed and we've certainly not committed to protocol
	stability yet.  All this does is to break ABI. See commit note
	from hp@redhat.com 2005-05-05 for details.
	
2005-06-15  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-connection.c (_dbus_connection_peer_filter): New method 
	(_dbus_connection_run_builtin_filters): New method
	(dbus_connection_dispatch): Run the builtin filters which in turn
	runs the peer filter which handles Ping messages.

	* doc/TODO: 
	 - Ping isn't handled: This patch fixes it
	 
	 - Add a test case for the Ping message: added TODO item

2005-06-15  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-message.c:
	(dbus_message_has_path): New method
	(dbus_message_has_interface): New method
	(dbus_message_has_member): New method

	* dbus/dbus/dbus-sysdeps.c (_dbus_check_dir_is_private_to_user):
	New method

	* dbus/dbus-keyring.c (_dbus_keyring_reload): Check to see that 
	the keyring directory is private to the user

	* doc/TODO:
	 - The convenience functions in dbus-bus.h should perhaps have
	 the signatures that they would have if they were autogenerated
	 stubs. e.g. the acquire service function. We should also evaluate
	 which of these functions to include, in light of the fact that
	 GLib/Qt native stubs will probably also exist.: Punted

	 - add dbus_message_has_path(), maybe has_member/interface:
	 fixed in this patch

	 - in dbus-keyring.c, enforce that the keyring dir is not
	 world readable/writable: Fixed in this patch

2005-06-15  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-marshal-validate.h: Added a new validation
	error code DBUS_VALIDITY_UNKNOWN_OOM_ERROR = -4 for 
	out of memory errors when validating signitures

	* dbus/dbus-marshal-header.c: use DBUS_VALIDITY_UNKNOWN_OOM_ERROR
	in places where we previously used DBUS_VALID and a FALSE return 
	value to indicate OOM
	
	* dbus/dbus-marshal-validate.c (_dbus_validate_signature_with_reason):
	Use a stack to track the number of elements inside containers.  The 
	stack values are then used to validate that dict entries have only two
	elements within them.
	(validate_body_helper): check the reason for failure when validating
	varients
	
	* dbus/dbus-message.c (load_message): use 
	DBUS_VALIDITY_UNKNOWN_OOM_ERROR in places where we previously used 
	DBUS_VALID and a FALSE return value to indicate OOM

	* doc/TODO: remove "- validate dict entry number of fields" as this
	patch fixes it

2005-06-14  David Zeuthen  <davidz@redhat.com>

	* bus/bus.c (process_config_every_time): Drop existing conf-dir
	watches (if applicable) and add new watches

	* bus/main.c (signal_handler): Handle SIGIO if using D_NOTIFY
	(main): Setup SIGIO signal handler if using D_NOTIFY

	* bus/config-parser.h: Add prototype bus_config_parser_get_conf_dirs

	* bus/config-parser.c (struct BusConfigParser): Add conf_dirs list
	(merge_included): Also merge conf_dirs list
	(bus_config_parser_unref): Clear conf_dirs list
	(include_dir): Add directory to conf_dirs list
	(bus_config_parser_get_conf_dirs): New function

	* bus/dir-watch.[ch]: New files

	* bus/Makefile.am (BUS_SOURCES): Add dir-watch.[ch]

	* configure.in: Add checks for D_NOTIFY on Linux

2005-06-14  Colin Walters  <walters@verbum.org>

	* glib/dbus-binding-tool-glib.c:
	* glib/dbus-gobject.c:
	* glib/dbus-gvalue.c: Fix indentation and brace style.
	
2005-06-14  Ross Burton <ross@openedhand.com>.

	* glib/dbus-glib.h: Make DBusGMethodInvocation
	a private structure.  Rearrange prototypes a bit.
	
	* glib/dbus-gproxy.c (dbus_g_proxy_invoke): Add
	documentation for first_arg_type.
	
	* glib/dbus-gobject.c: Move DBusGMethodInvocation
	here, add documentation.  Move dbus_g_method_return
	and dbus_g_method_return_error into public API
	section.

2005-06-14  Colin Walters  <walters@verbum.org>

	* glib/dbus-gobject.c (_dbus_gobject_lookup_marshaller):
	Add missing return statements, noticed by Ross Burton.
	
2005-06-13  Ross Burton <ross@openedhand.com>.

	* glib/dbus-gobject.c: Handle errors on message
	demarshalling by sending error message back.
	* glib/dbus-gvalue.c: Initialize return variables.

2005-06-13  Colin Walters  <walters@verbum.org>

	* glib/Makefile.am: Fix thinko in last patch.

2005-06-13  Colin Walters  <walters@verbum.org>

	* glib/Makefile.am: Move dbus-gtype-specialized.c
	and dbus-gtype-specialized.h into a _HEADERS variable,
	install them.

2005-06-12  Colin Walters  <walters@verbum.org>

	Async signals and various bugfixes and testing by
	Ross Burton <ross@openedhand.com>.

	* glib/dbus-gvalue.h: (struct DBusBasicGValue): Delete.
	(dbus_gvalue_genmarshal_name_from_type)
	(dbus_gvalue_ctype_from_type): Moved to dbus-binding-tool-glib.c.
	(dbus_gtype_to_dbus_type): Renamed to dbus_gtype_from_signature.
	(dbus_g_value_types_init, dbus_gtype_from_signature)
	(dbus_gtype_from_signature_iter, dbus_gtype_to_signature)
	(dbus_gtypes_from_arg_signature): New function prototypes.
	(dbus_gvalue_demarshal): Take context and error arguments.
	(dbus_gvalue_demarshal_variant): New function.
	(dbus_gvalue_demarshal_message): New function.
	(dbus_gvalue_store): Delete.

	* glib/dbus-gvalue.c:

	File has been almost entirely rewritten; now we special-case
	more types such as DBUS_TYPE_SIGNATURE, handle arrays and
	hash tables correctly, etc.  Full support for recursive values
	is not yet complete.

	* glib/dbus-gproxy.c (dbus_g_proxy_class_init): Change last
	argument of signal to G_TYPE_POINTER since we now pass a
	structure.
	(lookup_g_marshaller): Delete in favor of
	_dbus_gobject_lookup_marshaller.
	(marshal_dbus_message_to_g_marshaller): Use
	_dbus_gobject_lookup_marshaller and dbus_gvalue_demarshal_message
	to handle remote signal callbacks.
	(dbus_g_proxy_new_from_proxy): New function; creates a new
	DBusGProxy by copying an existing one.
	(dbus_g_proxy_get_interface, dbus_g_proxy_set_interface)
	(dbus_g_proxy_get_path): New functions.
	(dbus_g_proxy_marshal_args_to_message): New function;
	factored out of existing code.
	(DBUS_G_VALUE_ARRAY_COLLECT_ALL): Collect all arguments
	from a varargs array.
	(dbus_g_proxy_begin_call_internal): New function.
	(dbus_g_proxy_end_call_internal): New function.
	(dbus_g_proxy_begin_call): Take GTypes instead of DBus types
	as arguments; simply invoke dbus_g_proxy_begin_call_internal
	after collecting args into value array.
	(dbus_g_proxy_end_call): Take GTypes instead of DBus types;
	invoke dbus_g_proxy_end_call_internal.
	(dbus_g_proxy_invoke): Simply invoke begin_call_interanl and
	end_call_internal.
	(dbus_g_proxy_call_no_reply): Take GTypes instead of DBus
	types.
	(array_free_all): New function.
	(dbus_g_proxy_add_signal): Take GTypes.

	* glib/dbus-gobject.h:
	(_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
	(_dbus_gobject_get_path, _dbus_gobject_lookup_marshaller):
	Prototype.

	* glib/dbus-gobject.c: Add a global marshal_table hash which
	stores mappings from type signatures to marshallers.  Change lots
	of invocations of dbus_gtype_to_dbus_type to
	dbus_gtype_to_signature.
	(_dbus_glib_marshal_dbus_message_to_gvalue_array): Delete.
	(introspect_signals): Fix test for query.return_type.
	(set_object_property): Update invocation of dbus_gvalue_demarshal.
	(invoke_object_method): Many changes.  Handle asynchronous
	invocations.  Convert arguments with
	dbus_gvalue_demarshal_message.  Handle errors.  Use
	DBusSignatureIter instead of strlen on args. Handle all arguments
	generically.  Special-case variants.
	(dbus_g_method_return, dbus_g_method_return_error): New function.
	(DBusGSignalClosure): New structure, closes over signal
	information.
	(dbus_g_signal_closure_new): New function.
	(dbus_g_signal_closure_finalize): New function.
	(signal_emitter_marshaller): New function; is special marshaller
	which emits signals on bus.
	(export_signals): New function; introspects object signals and
	connects to them.
	(dbus_g_object_type_install_info): Take GType instead of
	GObjectClass.
	(dbus_g_connection_register_g_object): Invoke export_signals.
	(dbus_g_connection_lookup_g_object): New function.
	(DBusGFuncSignature) New structure; used for mapping type
	signatures to marshallers.
	(funcsig_hash): New function; hashes DBusGFuncSignature.
	(funcsig_equal): New function; compares DBusGFuncSignature.
	(_dbus_gobject_lookup_marshaller): New function.
	(dbus_g_object_register_marshaller): New function; used to
	register a marshaller at runtime for a particular signature.

	* glib/dbus-gmain.c (_dbus_gmain_test): Add various tests.

	* glib/dbus-binding-tool-glib.h: Add DBUS_GLIB_ANNOTATION_ASYNC
	which notes a server method implementation should be
	asynchronous.

	* glib/dbus-binding-tool-glib.c
	(dbus_binding_tool_output_glib_server): Call
	dbus_g_value_types_init.
	(write_formal_parameters): Use dbus_gtype_from_signature.  Handle
	variants specially.
	(dbus_g_type_get_lookup_function): Turn GType into an invocation
	of a lookup function.
	(write_args_for_direction): Use dbus_g_type_get_lookup_function.
	(write_untyped_out_args): New method; write output arguments.
	(write_formal_declarations_for_direction): Function for
	writing prototypes.
	(write_formal_parameters_for_direction): Function for
	writing implementations.
	(write_typed_args_for_direction): Function for writing
	arguments prefixed with GTypes.
	(write_async_method_client): Write out async version
	of method.

	* glib/dbus-binding-tool-glib.c: Include dbus-gvalue-utils.h.
	(dbus_g_type_get_marshal_name): Move mapping from GType
	to marshal name into here.
	(dbus_g_type_get_c_name): Move into here.
	(compute_marshaller): Convert signature to type with
	dbus_gtype_from_signature, use dbus_g_type_get_marshal_name.
	(compute_marshaller_name): Ditto.
	(compute_marshaller): Handle async signal annotations.
	(gather_marshallers): Return if we don't have a known
	prefix.
	(generate_glue): Collect introspection blob here, and
	write all of the blob at the end.  This allows an object
	with multiple interfaces to work.
	Mark async methods in introspection blob.

	* glib/Makefile.am (libdbus_glib_1_la_SOURCES): Add
	dbus-gtype-specialized.c, dbus-gtype-specialized.h,
	dbus-gvalue-utils.h, dbus-gvalue-utils.c.

	* dbus/dbus-glib.h: Don't include dbus-protocol.h; this
	avoids people accidentally using DBUS_TYPE_* which should
	not be necessary anymore.
	Do include dbus-gtype-specialized.h, which are utilities
	for GLib container types.
	Add various #defines for types such as
	DBUS_TYPE_G_BOOLEAN_ARRAY.
	(DBusGValueIterator, DBusGValue): Define, not fully used
	yet.
	(dbus_g_value_get_g_type): Type for recursive value.
	(dbus_g_value_open, dbus_g_value_iterator_get_value)
	(dbus_g_value_iterator_get_values, dbus_g_value_iterator_recurse)
	(dbus_g_value_free): Prototypes.
	(dbus_g_object_register_marshaller, dbus_g_proxy_new_from_proxy): Prototype.
	(dbus_g_proxy_set_interface): Prototype.
	(dbus_g_proxy_begin_call, dbus_g_proxy_end_call)
	(dbus_g_proxy_call_no_reply): Take GLib types instead of DBus
	types.
	(dbus_g_proxy_get_path, dbus_g_proxy_get_interface):
	Accessors.
	(DBusGAsyncData, DBusGMethodInvocation): Structures for
	doing async invocations.
	(dbus_g_method_return, dbus_g_method_return_error):
	Prototypes.
	* doc/dbus-tutorial.xml: Update GLib section.
	
	* tools/dbus-viewer.c (load_child_nodes): Update
	for new invocation type of dbus_g_proxy_end_call.
	(load_from_service_thread_func): Ditto.

	* tools/print-introspect.c (main): Ditto.

	* tools/dbus-names-model.c (have_names_notify)
	(names_model_reload, names_model_set_connection)
	Use GTypes.

	* python/Makefile.am (INCLUDES): Define DBUS_COMPILATION,
	needed since Python bindings use GLib bindings.

	* test/glib/Makefile.am (INCLUDES): Define DBUS_COMPILATION.
	Add --prefix argument.

	* tools/Makefile.am: Define DBUS_COMPILATION.  Remove
	unneeded --ignore-unsupported arg.
	
	* test/glib/test-service-glib.c: 
	* test/glib/test-service-glib.xml:
	* test/glib/test-dbus-glib.c: Add many more tests.

2005-06-06  David Zeuthen  <davidz@redhat.com>

	* doc/TODO: Add item about need to remove deprecated functions.

	* dbus/dbus-connection.h: Add prototype for dbus_connection_disconnect

	* dbus/dbus-connection.c (dbus_connection_disconnect): New function
	to repair the ABI which was broken with the last commit.

2005-06-02  John (J5) Palmieri <johnp@redhat.com>

	*  dbus/dbus-connection.c, dbus/dbus-connection.h 
	(dbus_connection_disconnect): renamed to dbus_connection_close 
	for API symmetry with dbus_connection_open
	(_dbus_connection_open_internal): 
	s/dbus_connection_disconnect/dbus_connection_close

	* dbus/dbus-bus.c (dbus_bus_get):
	s/dbus_connection_disconnect/dbus_connection_close

	* bus/connection.c (bus_connections_unref, 
	bus_connections_setup_connection, bus_connections_expire_incomplete):
	s/dbus_connection_disconnect/dbus_connection_close

	* bus/dispatch.c (bus_dispatch, kill_client_connection, 
	kill_client_connection_unchecked, check_hello_connection):
	s/dbus_connection_disconnect/dbus_connection_close

	* bus/bus.c (new_connection_callback):
	s/dbus_connection_disconnect/dbus_connection_close

	* tools/dbus-send.c (main):
	s/dbus_connection_disconnect/dbus_connection_close

	* test/glib/test-profile.c (no_bus_thread_func, with_bus_thread_func):
	s/dbus_connection_disconnect/dbus_connection_close
	
	* test/test-service.c (path_message_func, filter_func):
	s/dbus_connection_disconnect/dbus_connection_close
	
	* doc/TODO: remove connection_open/connection_disconnect lacks symmetry 	item that was just fixed
	
2005-05-25  Colin Walters  <walters@verbum.org>

	* dbus/dbus-protocol.h: Move various bus service #defines such
	  as DBUS_SERVICE_DBUS and DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT to
	  dbus/dbus-shared.h.
	* dbus/dbus-shared.h: Various defines moved here.
	* dbus/dbus-marshal-header.c: Include dbus-shared.h.

2005-05-25  John (J5) Palmieri  <johnp@redhat.com>

	* python/__init__.py: Python bindings deserve a minor version
	update.  Upped to (0, 40, 2)

2005-05-24  John (J5) Palmieri  <johnp@redhat.com>

	* python/decorators.py: add explicitly_pass_message decorator
	for passing in the dbus message as keyword for edge case signal
	handling

	* python/matchrules.py (SignalMatchRule.__repr__): fix output
	to conform with what dbus expects for match rules
	(SignalMatchRule.execute): add the dbus message as a keyword
	if the signal handler has requested it

	* python/examples/example/signal-recipient.py: added some more
	examples on how to hook up to signals

2005-05-23  John (J5) Palmieri  <johnp@redhat.com>

	* python/decorators.py: import dbus_bindings

	* python/matchrules.py (SignalMatchRule, SignalMatchTree, 
	SignalMatchNode): new classes that implement wildcard signal
	callback matching using a tree lookup. Heavily modified from a
	patch sent by Celso Pinto (fd.o bug #3241)

	* _dbus.py (add_signal_receiver, remove_signal_receiver, _signal_func):
	use new match classes to handle signals.

2005-05-19  John (J5) Palmieri  <johnp@redhat.com>
	
	* python/dbus_bindings.pyx.in: s/TYPE_PATH/TYPE_OBJECT_PATH

2005-05-18  Havoc Pennington  <hp@redhat.com>

	* configure.in: use GLIB_GNU_GETTEXT to get INTLLIBS and require
	gettext. Not really worth requiring yet perhaps, but any
	production quality 1.0 would require it so we should go ahead and
	get things set up. We do have a couple token calls to
	bindtextdomain in the code already.

2005-05-16  John (J5) Palmieri  <johnp@redhat.com>

	* glib/dbus-gmain.c (io_handler_dispatch): fix deadlock
	when using recursive g_main_loops

	* python/_dbus.py (class Bus): add the ProxyObjectClass
	alias for ProxyObject to make it easier for the Twisted 
	networking framework to integrate dbus.

	* python/proxies.py (class ProxyObject): add the ProxyMethodClass
	alias for ProxyMethod to make it easier for the Twisted 
	networking framework to integrate dbus. 

2005-05-11  Ross Burton  <ross@openedhand.com>

	* glib/dbus-glib-tool.c: Add --prefix argument.
	* glib/dbus-binding-tool-glib.h: Add prefix argument.
	* glib/dbus-binding-tool-glib.c (compute_marshaller_name):
	Add prefix argument.
	(generate_glue): Pass prefix argument down.
	(dbus_binding_tool_output_glib_server): Pass prefix to
	glib-genmarshal.
	
2005-05-11  Colin Walters  <walters@verbum.org>

	* tools/dbus-send.c (append_array): New function.
	(append_arg): Broken out from main.
	(main): Add cheesy hack to send arrays and variants.
	(usage): Update.
	* tools/dbus-print-message.c (print_iter): Broken out
	from main.

2005-05-11  Colin Walters  <walters@verbum.org>

	* dbus/dbus-signature.c (dbus_signature_iter_get_signature):
	New function, returns signature string for signature iter.
	* dbus/dbus-signature.h: Prototype it.
	* dbus/dbus-message.c (dbus_message_iter_get_signature):
	New function, returns signature string for message iter.
	(dbus_message_iter_get_array_len): New function, returns
	length of array.
	(dbus_message_iter_get_fixed_array): Fix assertion; this
	function should be used when the iter is pointing to the
	contents of an array
	* dbus/dbus-message.h: Prototypes.
	* dbus/dbus-marshal-recursive.c (_dbus_type_reader_get_array_length):
	New function; returns length of an array.
	* dbus/dbus-marshal-recursive.h: Prototype it.
	
2005-05-11  Colin Walters  <walters@verbum.org>

	* dbus/dbus-sysdeps-util.c <!HAVE_POSIX_GETPWNAM_R>: Fix
	compilation error.
	
2005-05-08  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps-util.c (_dbus_become_daemon): write the
	daemon's pid, not the parent's pid, to the file descriptor.
	Reported by Taj Morton.

2005-05-05  Havoc Pennington  <hp@redhat.com>

	* configure.in (LT_*): add notes on how the libtool versioning
	works to save thinking. Increment soname to indicate protocol
	breakage (though really the library interface hasn't changed I
	guess)

	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
	verify the GUID received from server matches what we were
	expecting, if we had an expectation

	* dbus/dbus-auth.c (send_ok): send GUID along with the OK command
	(_dbus_auth_get_guid_from_server): new function
	(send_begin): parse the OK args

	* doc/dbus-specification.xml: add GUID to the auth protocol

2005-05-05  John (J5) Palmieri  <johnp@redhat.com>

	* Fix my name in previous changelog ;)

	* python/proxies.py (ProxyObject.__getattr__): add further patch
	from Anthony Baxter to throw an AttributeError when python 
	__special__ functions are called instead of marshling them over 
	the bus (Bug#1685 comment 3).

2005-05-04  John (J5) Palmieri  <johnp@redhat.com>

	* python/Makefile.am: changed to use pyexecdir for the binding
	shared libraries (Bug#2494)

	* python/exceptions.py: bring exceptions over from the bindings
	so they can be used in applications (Bug#2036)
	Make all exceptions derive from DBusException

	* python/_dbus.py, python/proxies.py: implement __repr__ in a couple
	of classes so that print obj doesn't throw an exception (Bug #1685)

2005-05-03  Ross Burton  <ross@openedhand.com>

	* glib/dbus-gobject.c (dbus_g_connection_register_g_object):
	Return if we get an error during registration.  Set up a
	weak reference on object to unregister if object is destroyed.
	(unregister_gobject): New function.
	
2005-05-01  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: 
	- added new type classes for hinting to the marashaler what type 
	to send over the wire
	- added int16 and uint16 marshalers
	- Fixed a bug in the type constants that caused int32 to go out
	as uint16 over the wire
	* python/dbus.py: split up into different files and renamed _dbus.py
	* python/__init__.py, python/_util.py, python/decorators.py, 
	python/exceptions.py, python/proxies.py, python/services.py,
	python/types.py: new files split off from dbus.py
	* python/Makefile.am: Add new files, remove dbus.py and 
	install all python files to <python module dir>/dbus
	* python/examples/*: Added #!/usr/bin/env python to the top of
	every example.  Patch provided by Tatavarty Kalyan

2005-04-25  John (J5) Palmieri  <johnp@redhat.com>

	* NEWS: Update to 0.33

2005-04-25  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in (send_with_reply_handlers): New send
	method for doing async calls
	(_pending_call_notification): New C function for handling pendning call
	callbacks
	(set_notify): New method for setting pending call notification
	
	* python/dbus.py: new version tuple "version" is set at (0, 40, 0)
	Async capabilities added to remote method calls
	(Sender): class removed
	(RemoteService): class removed
	(ObjectTree): class removed for now
	(RemoteObject): Renamed to ProxyObject
	(RemoteMethod): Renamed to ProxyMethod
	(method): Decorator added for decorating python methods as dbus methods
	(signal): Decorator added for decorating python methods as signal emitters
	(ObjectType): Metaclass added for generating introspection data and the
	method callback vtable
	(Interface): Wrapper class added to wrap objects in a dbus interface
	(Object): Uses ObjectType as its metaclass and exports Introspect
	of the org.freedesktop.DBus.Introspectable interface
	(ValidationException, UnknownMethodException): new exceptions

	* python/examples/*: Modified to fit with the new bindings

2005-04-23  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (dbus_message_append_args): fix doc comment,
	reported by Tony Houghton

	* test/test-service.c (main): test
	dbus_connection_get_object_path_data()

	* dbus/dbus-object-tree.c (find_handler): be sure we always init
	the exact_match
	(_dbus_object_tree_get_user_data_unlocked): new function used by
	dbus_connection_get_object_path_data()
	(do_register): add assertion test for get_user_data_unlocked
	(object_tree_test_iteration): more tests

	* dbus/dbus-connection.c (dbus_connection_get_object_path_data):
	new function from Dan Reed to let you get the user data from 
	dbus_connection_register_object_path()

2005-04-23  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-marshal-recursive-util.c: Fixed buffer overflow
	in numerous places that did not account for the NULL terminator
	(signature_from_seed): changed the manual string copy loop to 
	just use strcpy instead
	make check should now pass

2005-04-19  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-marshal-header.c (_dbus_header_create): Fix assert
	so that it allows messages that are not signals to pass in 
	NULL as the interface.

2005-04-18  David Zeuthen  <davidz@redhat.com>

	* glib/dbus-gmain.c (io_handler_destroy_source): 
	(timeout_handler_destroy_source, connection_setup_free): 
	Also unref the source to avoid memory leaks.

2005-04-13  David Zeuthen  <davidz@redhat.com>

	* bus/config-parser.c (bus_config_parser_new): Bump this to a
	more reasonable, yet still totally arbitrary, value :-). 

2005-04-13  David Zeuthen  <davidz@redhat.com>

	* doc/TODO: Added an "important for 1.0" item about selinux
	allow/deny messages

2005-04-13  David Zeuthen  <davidz@redhat.com>

	* bus/selinux.c: Add c-file-style to top of file
	(log_audit_callback): Don't free the data here anymore
	(bus_selinux_check): Don't take spid and tpid since appending
	that to auxdata may OOM.
	(bus_selinux_allows_acquire_service): Handle OOM and signal back
	to the caller if we are OOM by taking an error object.
	(bus_selinux_allows_send): -do-

	* bus/selinux.h: Fix prototypes for bus_selinux_allows_acquire_service
	and bus_selinux_allows_send

	* bus/bus.c (bus_context_check_security_policy): Pass error and
	pass on OOM thrown by bus_selinux_allows_send()

	* bus/services.c (bus_registry_acquire_service): Pass error and
	pass on OOM thrown by bus_selinux_allows_acquire_service()

2005-04-13  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gmain.c (message_queue_dispatch): only dispatch one
	message at a time to avoid monopolizing the main loop, bug 
	#2953 from Benjamin Otte

2005-04-09  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (copy): change a memcpy to memmove due to
	possible overlap, fix from Daniel Reed
	(fixup_alignment): fix signedness warnings
	(_dbus_string_append_unichar): ditto

2005-04-09  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-util.c (_dbus_message_test): fix signedness warning

	* glib/dbus-glib-tool.c (main): fix warning

	* glib/dbus-binding-tool-glib.c (generate_glue): fix warning

	* dbus/dbus-connection.c (dbus_connection_read_write_dispatch):
	add a new function that can be used in simple applications that
	don't have a main loop and are willing to block

2005-04-05  David Zeuthen  <davidz@redhat.com>

	Fix https://bugs.freedesktop.org/show_bug.cgi?id=2889

	* glib/dbus-gmain.c:
	(io_handler_destroy_source): Remove from list of IO handlers
	of the ConnectionSetup object
	(timeout_handler_destroy_source): -do- for timeout handlers
	(io_handler_source_finalized): Don't remove from list since
	we now do that in io_handler_destroy_source(). Renamed from
	io_handler_source_destroyed
	(timeout_handler_source_destroyed): -do- for timeout handlers
	(connection_setup_free): It is now safe to iterate over all
	IO and timeout handlers as the _destroy_source removes them
	from the list synchronously

2005-03-30  Havoc Pennington  <hp@redhat.com>

	* configure.in: change check to gtk 2.4

	* tools/dbus-viewer.c (name_combo_changed_callback): remove
	gtk_combo_box_get_active_text() usage to decrement GTK requirement
	to 2.4

2005-03-29  John (J5) Palmieri  <johnp@redhat.com>

	* News: Update 0.32

	* HACKING: Fixed realease instructions.  configure.in should be updated to
	  the next release by the person who made the last release.

2005-03-29  John (J5) Palmieri  <johnp@redhat.com>

	* python/lvalue_cast_post_process.py - removed.  Patch has been
	  submitted to Pyrex maintainers that fixes gcc4.0 errors

	* python/Makefile.am: removed refrences to lvalue_cast_post_process.py

2005-03-24  Daniel Reed  <n@ml.org>

	* tools/Makefile.am: Make print-introspect and
	dbus-bus-introspect.xml building conditional on HAVE_GLIB.

2005-03-22  John (J5) Palmieri  <johnp@redhat.com>

	* tools/Makefile.am: Patch by Colin Walters that fixes distcheck

	* dbus/dbus-userdb.c, dbus/dbus-userdb-util.c: Add patch we have 
	  had in Red Hat packages for a while but for some reason never 
	  got merged upstream
	  (_dbus_is_a_number): New checks if a string
	  can be converted to a number and does the conversion if it can
	  (_dbus_user_database_lookup): Add check to see if the given username
	  is a udi.  This allows udi's to be used instead of usernames in the
	  config file.
	  (_dbus_user_database_lookup_group): Add check to see if the given groupname
	  is a gdi.  This allows gdi's to be used instead of groupnames in the
	  config file.

2005-03-21  John (J5) Palmieri  <johnp@redhat.com>

	* python/lvalue_cast_post_process.py - added post processor to fix Pyrex
	  code so that it compiles with gcc4.0

	* python/Makefile.am: Added lvalue_cast_post_process.py to EXTRA_DIST
	  run dbus_bindings.c through lvalue_cast_post_process.py and copy the
	  results back to dbus_binding.c

2005-03-20  Colin Walters  <walters@verbum.org>

	Patch suggested by Inguva Rajasekhar <ringuva@novell.com>.

	* configure.in: Require GTK+ 2.6.
	
2005-03-20  Colin Walters  <walters@verbum.org>

	* Makefile.am (SUBDIRS, DIST_SUBDIRS): Build tools before test.

2005-03-17  Tom Parker  <palfrey@tevp.net>

	* dbus/dbus-userdb.c (_dbus_user_database_lookup): Don't
	print DBUS_UID_UNSET; instead print passed username.  Also
	be sure to actually use gid looked up in cache.
	
	* dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group): Ditto
	for DBUS_GID_UNSET and groupname.

2005-03-17  Colin Walters  <walters@verbum.org>

	* bus/print-introspect.c: Move to tools/.
	* bus/run-with-tmp-session-bus.sh: Ditto.
	
	* glib/Makefile.am (dbus-glib-bindings.h): Move
	generation to tools/Makefile.am.

	* test/glib/run-test.sh: Update to handle move
	of run-with-tmp-session-bus.sh.

	* test/glib/test-service-glib.c: Update to handle
	move of dbus-glib-bindings.h.

	* tools/print-introspect.c: Moved here
	from bus/, and ported to GLib bindings.

	* tools/run-with-tmp-session-bus.sh: Moved here
	from bus/.

	* tools/Makefile.am: Generate dbus-glib-bindings.h
	and dbus-bus-introspect.xml here.

	* tools/.cvsignore, glib/.cvsignore, bus/.cvsignore:
	Update.

2005-03-17  Colin Walters  <walters@verbum.org>

	* bus/driver.c (write_args_for_direction): Use
	_dbus_string_get_const_data to retrieve string;
	_dbus_string_get_const_data_len doesn't actually return
	a NULL-terminated substring.

	* test/glib/test-service-glib.c: Include dbus-glib-bindings.h.
	(main): Change to use org_freedesktop_DBus_request_name
	instead of using g_proxy_begin_call/end_call.

2005-03-15  Joe Shaw  <joeshaw@novell.com>

	* mono/ProxyBuilder.cs (BuildFinalizer): Fix some invalid IL when
	generating the finalizer.  Fixes from Ben Maurer.

2005-03-12  Joe Shaw  <joeshaw@novell.com>

	* mono/BusDriver.cs: Update method names: ListServices
	becomes ListNames; GetOwner becomes GetNameOwner.

	* mono/ProxyBuilder.cs (BuildFinalizer): Need to load arg 0
	onto the eval stack when removing the delegate.

2005-03-12  Joe Shaw  <joeshaw@novell.com>

	* mono/dbus-sharp.dll.config.in: Don't hardcode 0 for
	LT_CURRENT.  Set it to the autoconf variable.
                                                                                
	* mono/ProxyBuilder.cs: Add a finalizer to the generated proxy
	classes that disconnects the signal handler delegate from the
	service object.  Fixes a big leak of proxy objects on the
	client side of things.  Patch from Ben Maurer
	<bmaurer@ximian.com>

2005-03-12  Colin Walters  <walters@verbum.org>

	* bus/driver.c (write_args_for_direction): New function,
	parses a type signature into arguments and outputs to
	XML.
	(bus_driver_handle_introspect): Use it instead of
	hardcoding XML for certain signatures.
	
	* bus/Makefile.am (dbus-bus-introspect.xml): Add
	dependency on dbus-daemon.

	* glib/dbus-glib-tool.c (main): Parse ignore_unsupported
	argument, pass it to dbus_binding_tool_output_glib_client.

	* glib/dbus-binding-tool-glib.c
	(generate_client_glue): Protect against multiple inclusion.
	(dbus_binding_tool_output_glib_client): Add
	G_BEGIN_DECLS/G_END_DECLS.

	* glib/dbus-binding-tool-glib.c (compute_client_method_name):
	Change to just take iface prefix directly.
	(write_formal_parameters): Clarify error message.
	(check_supported_parameters): New function; checks to see type
	signatures of method parameters are supported.
	(generate_client_glue): Handle ignore_unsupported flag.
	(dbus_binding_tool_output_glib_client): Handle ignore_unsupported
	parameter.

	* glib/Makefile.am (dbus-glib-bindings.h): Pass
	--ignore-unsupported by default until glib bindings
	support arrays.

2005-03-11  Colin Walters  <walters@verbum.org>

	* glib/Makefile.am: Generate dbus-glib-bindings.h and
	install it.

	* bus/print-introspect.c: New file; prints introspection
	data for a given name and object path.

	* bus/run-with-tmp-session-bus.sh: New file, refactored
	from test/glib/run-test.sh.  Creates a temporary session
	bus and runs another program.

	* test/glib/run-test.sh: Refactor to invoke
	run-with-tmp-session-bus.sh.

	* bus/driver.c (bus_driver_handle_introspect): Fix to print new
	introspection format.  Also change to use DBUS_TYPE_x_AS_STRING
	macros instead of hardcoding.

	* glib/.cvsignore, bus/.cvsignore, test/glib/.cvsignore: Update.

2005-03-11  Joe Shaw  <joeshaw@novell.com>

	* dbus/dbus-connection.c (dbus_connection_send_with_reply): Remove
	this unref; it doesn't match up evenly in some codepaths.
	(_dbus_connection_block_pending_call): Unref at every exitpoint;
	this evenly matches with the ref near the top of this function.

2005-03-09  Joe Shaw  <joeshaw@novell.com>

	* dbus/dbus-object-tree.c
	(_dbus_object_tree_unregister_and_unlock): If checks are enabled
	and we try to unregister a path that's not registered, still go
	through the process of unlocking and don't just return.

2005-03-09  Colin Walters  <walters@verbum.org>

	* glib/dbus-gproxy.c (dbus_g_proxy_invoke): New method; calls
	to this are generated for client-side wrappers.  Invokes a
	D-BUS method and returns reply values.  

	* glib/dbus-binding-tool-glib.c (write_args_sig_for_direction): New
	function; writes signature string for argument direction.
	(write_args_for_direction): Change to pass input values directly
	instead of via address, and fix indentation.
	(generate_client_glue): Change to invoke dbus_g_proxy_invoke.  Also
	make generated wrappers inlineable.

	* dbus/dbus-message.c (dbus_message_iter_get_fixed_array): Add
	note about using dbus_type_is_fixed.

	* dbus/dbus-marshal-basic.c (_dbus_type_is_fixed): Moved to
	dbus/dbus-signature.c as dbus_type_is_fixed.

	All callers updated.

	* dbus/dbus-signature.c (dbus_type_is_fixed): Moved here
	from dbus/dbus-marshal-basic.c:_dbus_type_is_fixed.

	* dbus/dbus-signature.h: Prototype.

	* glib/dbus-binding-tool-glib.c (compute_marshaller_name): Fix
	error printf code.

	* test/glib/test-dbus-glib.c (main): Be sure to clear error as
	appropriate instead of just freeing it.
	(main): Free returned strings using g_free.

	* test/glib/Makefile.am (test-service-glib-glue.h)
	(test-service-glib-bindings.h): Add dependency on dbus-binding-tool.

	* glib/dbus-gvalue.c (MAP_BASIC): Refactored from MAP_BASIC_INIT;
	simply maps a simple D-BUS type to GType.
	(dbus_dbus_type_to_gtype): Function which maps D-BUS type to
	GType.
	(dbus_gvalue_init): Just invoke dbus_dbus_type_to_gtype and
	initialize the value with it.
	(dbus_gvalue_binding_type_from_type): Unused, delete.
	(dbus_gvalue_demarshal): Switch to hardcoding demarshalling for
	various types instead of unmarshalling to value data directly.
	Remove can_convert boolean.
	(dbus_gvalue_marshal): Remove duplicate initialization; switch to
	returning directly instead of using can_convert boolean.
	(dbus_gvalue_store): New function; not related to D-BUS per-se.
	Stores a GValue in a pointer to a value of its corresponding C
	type.

	* glib/dbus-gvalue.h: Remove dbus_gvalue_binding_type_from_type,
	add dbus_gvalue_store.

2005-03-08  Joe Shaw  <joeshaw@novell.com>

	Fix a bunch of lifecycle and memory management problems
	in the mono bindings.

	* mono/Arguments.cs (Arguments): Implement IDisposable

	* mono/Bus.cs (Bus): Don't allow public instantiation.  This is
	strictly a static class.

	* mono/Connection.cs: Move the DBusObjectPathVTable and associated
	delegates into this file.
	(Connection): Implement IDisposable.
	(Dispose): Disconnect the connection and set the raw connection
	pointer to IntPtr.Zero.
	(~Connection): Call Dispose().
	(RegisterObjectPath): Added.  Manages the registration of object
	paths so we can cleanly disconnect them at dispose/finalize time.
	(UnregisterObjectPath): Ditto.
	(set_RawConnection): Unregister all of the object paths when
	changing the underlying DBusConnection.  Add them back onto the
	new connection, if any.

	* mono/Handler.cs: Don't implement IDisposable; it doesn't use any
	more unmanaged resources anymore, so it's not necessary.  Move all
	the DBusObjectPathVTable stuff out of here.
	(Handler): Save references to our delegates so that they don't get
	finalized.  Call Connection.RegisterObjectPath() instead of
	dbus_connection_register_object_path() directly.
	(Message_Called): Dispose the message after we're finished with
	it.

	* mono/Message.cs (Message): Implement IDisposable.
	(Dispose): Dispose the Arguments, and set the RawMessage to
	IntPtr.Zero.
	(SendWithReplyAndBlock): We own the ref to the reply that comes
	back from dbus_connection_send_with_reply_and_block() so add a
	comment about that and unref it after we've constructed a managed
	MethodReturn class around it.  Fixes a big, big leak.

	* mono/ProxyBuilder.cs: Reflect into Message to get the Dispose
	method.
	(BuildSignalHandler): After we've sent the Signal message, dispose
	of it.
	(BuildMethod): Dispose of the method call and reply messages after
	we've sent the message and extracted the data we want from the
	reply.

	* mono/Service.cs (UnregisterObject): Don't call handler.Dispose()
	anymore.
	(Service_FilterCalled): Dispose of the message after we're
	finished with it.

2005-03-08  Joe Shaw  <joeshaw@novell.com>

        * dbus/dbus-connection.c (dbus_connection_send_with_reply):
        After we attach our pending call to the connection, unref
        it.  Fixes a leak.
 
        * mono/Connection.cs (set_RawConnection): Disconnect our
        filter and match callbacks from the old connection and
        reconnect them to the new connection, if any.

	* mono/DBusType/Array.cs: "Code" is a static member, so
	don't use "this" to refer to it.  Fix for stricter checking
	in Mono 1.1.4.
 
        * mono/DBusType/ObjectPath.cs (Append): Don't leak the
	object path that we pass into unmanaged code.
 
        * mono/DBusType/String.cs (Append): Don't leak the string
	that we pass into unmanged code.

2005-03-07  John (J5) Palmieri  <johnp@redhat.com>
	* NEWS: Update for 0.31

	* configure.in: Release 0.31
	add LT_CURRENT, LT_REVISION, LT_AGE for easy soname bumping

	* qt/Makefile.am: fixed build

	* dbus/Makefile.am: soname bump for libdbus

	* glib/Makefile.am: soname bump for libdbus-glib

2005-03-05  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c:
	(pseudorandom_generate_random_bytes_buffer): fix to have no return
	value
	(_dbus_generate_random_bytes_buffer): fix return value

	* dbus/dbus-sysdeps-util.c: s/GETPWNAME/GETPWNAM/ so configure
	checks actually work, from Tom Parker <fdo@tevp.net>

2005-03-01  Colin Walters  <walters@verbum.org>

	* test/glib/test-dbus-glib.c (lose, lose_gerror): Utility
	functions copied from dbus-glib-tool.c.
	(main): Convert lots of error code to use them.
	Also add some testing for introspection bits.

2005-03-01  Colin Walters  <walters@verbum.org>
	
	* doc/TODO: Remove introspection signature TODO.

2005-02-27  Colin Walters  <walters@verbum.org>

	* glib/dbus-gidl.c (property_info_get_type, arg_info_get_type):
	Change return value to const char * instead of int so we can do
	full signatures.
	(struct PropertyInfo, struct ArgInfo): Store char *.
	(property_info_new, arg_info_new): Update parameters, strdup.
	(property_info_unref, arg_info_unref): Free.

	* glib/dbus-gidl.h: Update prototypes.

	* glib/dbus-gparser.c (basic_type_from_string): Delete.
	(validate_signature): New function, just validates signature and
	sets GError.
	(parse_property, parse_arg): Invoke validate_signature.  Store
	signature instead of just type code.

	* glib/dbus-gvalue.c (base_type_from_signature): New utility
	function to return a primary type for a signature, dropping
	information about types in container types.
	(dbus_gvalue_genmarshal_name_from_type)
	(dbus_gvalue_binding_type_from_type)
	(dbus_gvalue_ctype_from_type): Update to take full signature
	 instead of type code.
	(dbus_gtype_to_dbus_type): Moved here from glib/dbus-gobject.c.

	* glib/dbus-gvalue.h: Update prototypes for above.

	* glib/dbus-gobject.c (gtype_to_dbus_type): Moved to
	glib/dbus-gvalue.c as dbus_gtype_to_dbus_type.
	(introspect_properties, introspect_signals, write_interface):
	Update to handle signatures, and remove usage of
	_dbus_gutils_type_to_string.
	(handle_introspect): Print out type codes instead of e.g. "string"
	in hardcoded introspection XML; also use x_AS_STRING constants
	instead of hardcoding in string.

	* glib/dbus-glib-tool.c (pretty_print): Handle signature change
	to string.  Remove usage of _dbus_gutils_type_to_string.

	* glib/dbus-gutils.c (_dbus_gutils_type_to_string): Delete.

	* glib/dbus-gutils.h (_dbus_gutils_type_to_string): Update for
	deletion.
	
	* glib/dbus-binding-tool-glib.c (compute_marshaller)
	(compute_marshaller_name, generate_glue): Handle signature change
	to string.
	(write_formal_parameters, write_args_for_direction): Ditto, and
	remove FIXME.

	* tools/dbus-tree-view.c (type_to_string): Delete.
	(info_set_func_text): Update to print full signatures.

	* test/glib/test-service-glib.xml: Change types to new
	introspection format.

2005-02-26  Havoc Pennington  <hp@redhat.com>

	* doc/TODO: remove the "guid" item

	* test/glib/test-profile.c (no_bus_thread_func): use open_private
	(with_bus_thread_func): use open_private

	* dbus/dbus-connection.c (dbus_connection_open_private): new
	function that works like the old dbus_connection_open()
	(dbus_connection_open): now returns an existing connection if
	possible

	* dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass
	through the GUID to the transport

	* dbus/dbus-server.c (_dbus_server_init_base): keep around the
	GUID in hex-encoded form.

	* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
	pass GUID argument in to the transport

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add
	guid argument

	* dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument

	* dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument

2005-02-25  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: document the GUID thing

	* dbus/dbus-server.c (_dbus_server_init_base): initialize a
	globally unique ID for the server, and put a "guid=hexencoded"
	field in the address

	* dbus/dbus-bus.c: fix missing #include of dbus-threads-internal.h

	* dbus/dbus-message.c: ditto

	* dbus/dbus-dataslot.c: ditto

	* dbus/dbus-list.c: ditto

	* dbus/dbus-internals.h: wait, just include
	dbus-threads-internal.h here
	
	* dbus/dbus-string.c (_dbus_string_copy_to_buffer): move back for
	use in main library

	* dbus/dbus-sysdeps.c (_dbus_generate_random_bytes_buffer): new function

2005-02-24  Colin Walters  <walters@verbum.org>

	* test/glib/Makefile.am (EXTRA_DIST): Add test-service-glib.xml

2005-02-24  John (J5) Palmieir  <johnp@redhat.com>

	* glib/Makefile.am: added dbus-gobject.h to sources list
	so distcheck doesn't fail
	
2005-02-24  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-server.c, dbus/dbus-server-unix.c: change semantics so
	you must disconnect before unref, since locking and other things
	are screwed up otherwise. Fix assorted other locking stuff.

	* dbus/dbus-signature.c (dbus_signature_iter_get_element_type):
	fix compilation

	* dbus/dbus-threads-internal.h: move the mutex/condvar wrappers
	into a private header and don't export from the library

	* throughout - call _dbus_thread_stuff vs. dbus_thread_stuff

2005-02-24  Colin Walters  <walters@verbum.org>
	
	* dbus/dbus-signature.c: New file; implements various functions
	related to type signatures.  Includes an interator for parsing,
	validation functions.
	(dbus_type_is_basic): Moved here from
	dbus-marshal-basic.c:_dbus_type_is_basic.
	(dbus_type_is_container): Moved here from
	dbus-marshal-basic.c:_dbus_type_is_container.

	All callers of _dbus_type_is_container and _dbus_type_is_basic
	updated, and include dbus-signature.h.

	* dbus/dbus-signature.h: New file; prototypes for the above.

	* dbus/Makefile.am (DBUS_LIB_SOURCES): Add dbus-signature.c,
	dbus-signature.h.

	* dbus/dbus-marshal-basic.c (map_type_char_to_type): New utility
	function factored out of _dbus_first_type_in_signature.
	(_dbus_first_type_in_signature_c_str): New function; returns first
	type code for a type signature character.

	* dbus/dbus-marshal-basic.h: Prototype _dbus_first_type_in_signature_c_str,
	handle function moves.

	* dbus/dbus-marshal-recursive.h: Export _dbus_type_signature_next.

	* dbus/dbus-marshal-recursive.c (_dbus_type_signature_next): New
	function; skips to next complete type in type signature.
	Implemented using previous skip_one_complete_type.  Now
	skip_one_complete_type just delegates to
	_dbus_type_signature_next.

	* dbus/dbus-marshal-basic.c (_dbus_type_is_basic): Moved
	to dbus-signature.c
	(_dbus_type_is_container): Ditto.

	* doc/dbus-specification.xml: Update introspection sample to
	use real type signatures.

	* dbus/dbus-test.h: Prototype signature test.

	* dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Run
	signature tests.

	* dbus/dbus-protocol.h (DBUS_ERROR_INVALID_SIGNATURE): New error.

2005-02-23  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in (PendingCall::get_reply):
	s/dbus_pending_call_get_reply/dbus_pending_call_steal_reply

2005-02-21  Colin Walters  <walters@verbum.org>

	* dbus/dbus-test-main.c (main): Take optional specific test
	argument.

	* dbus/dbus-test.c (run_test): New function, runs a test function
	with no data directory.
	(run_data_test): Like above, but takes data directory.
	(dbus_internal_do_not_use_run_tests): Take
	specific test argument.  Replace lots of cut n' paste code
	with run_test and run_data_test.

	* dbus/dbus-test.h: Update prototype for
	dbus_internal_do_not_use_run_tests.

2005-02-20  Havoc Pennington  <hp@redhat.com>

        Fix bugs reported by Daniel P. Berrange
	
	* dbus/dbus-server.c (_dbus_server_unref_unlocked): new function
	(protected_change_watch): new function
	(_dbus_server_toggle_watch, _dbus_server_remove_watch)
	(_dbus_server_add_watch): change to work like the
	dbus-connection.c equivalents; like those, probably kind of
	busted, but should at least mostly work for now
	(dbus_server_disconnect): drop the lock if we were already
	disconnected, patch from Daniel P. Berrange

	* dbus/dbus-server.c (_dbus_server_toggle_timeout) 
	(_dbus_server_remove_timeout, _dbus_server_add_timeout): all the
	same stuff

	* doc/TODO: todo about unscrewing this mess

2005-02-19  Colin Walters  <walters@verbum.org>

	* glib/dbus-binding-tool-glib.c
	(dbus_binding_tool_output_glib_server): Fix iochannel refcounting.

	* glib/dbus-glib-tool.c: Include dbus-glib-tool.h, as well
	as errno.h and sys/stat.h.
	(lose): New function, prints error with
	newline and exits.
	(lose_gerror): Similar, but takes GError for message.
	(main): Add --output argument to specify output file to write to,
	instead of always printing to stdout.  In this mode, determine
	timestamps on source files to see whether any are newer than the
	target file.  If not, exit.  Also convert a number of error
	messages to use lose (since it's shorter), and switch to using
	g_io_channel_shutdown.

2005-02-19  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gobject.c
	(_dbus_glib_marshal_dbus_message_to_gvalue_array): add docs

	* glib/dbus-glib.c: fix doxygen warnings

	* glib/dbus-gparser.c (parse_annotation): error if an annotation
	is found on an <arg>

2005-02-17  Colin Walters  <walters@verbum.org>

	* glib/dbus-gobject.h: Don't export
	_dbus_glib_marshal_dbus_message_to_gvalue_array.
	
	* glib/dbus-gobject.c (_dbus_glib_marshal_dbus_message_to_gvalue_array): Do rename.
	(invoke_object_method): Handle it.

	* glib/dbus-gproxy.c (marshal_dbus_message_to_g_marshaller):
	Handle rename.
	
2005-02-17  Colin Walters  <walters@verbum.org>

	* bus/.cvsignore, doc/.cvsignore
	* test/data/valid-service-files/.cvsignore, test/glib/.cvsignore:
	Update.

2005-02-17  Colin Walters  <walters@verbum.org>
	
	* dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_DBUS):
	Rename to DBUS_SERVICE_DBUS.
	(DBUS_PATH_ORG_FREEDESKTOP_DBUS): Rename to DBUS_PATH_DBUS.
	(DBUS_PATH_ORG_FREEDESKTOP_LOCAL): Rename to DBUS_PATH_LOCAL.
	Change the value from "org.freedesktop.Local"
	to "org.freedesktop.DBus.Local".
	(DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS): Rename to DBUS_INTERFACE_DBUS.
	(DBUS_INTERFACE_ORG_FREEDESKTOP_INTROSPECTABLE): Rename to
	DBUS_INTERFACE_INTROSPECTABLE.
	Change the value from "org.freedesktop.Introspectable"
	to "org.freedesktop.DBus.Introspectable".
	(DBUS_INTERFACE_ORG_FREEDESKTOP_PROPERTIES): Rename to
	DBUS_INTERFACE_PROPERTIES.
	Change the value from "org.freedesktop.Properties"
	to "org.freedesktop.DBus.Properties".
	(DBUS_INTERFACE_ORG_FREEDESKTOP_PEER): Rename to
	DBUS_INTERFACE_PEER.
	Change the value from "org.freedesktop.Peer"
	to "org.freedesktop.DBus.Peer".
	(DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL): 
	DBUS_INTERFACE_LOCAL.
	Change the value from "org.freedesktop.Local"
	to "org.freedesktop.DBus.Local".

	All other users of those constants have been changed.

	* bus/driver.c (bus_driver_handle_introspect): Use constants.

	* glib/dbus-gobject.c (handle_introspect): Use constants.

	* doc/dbus-faq.xml, doc/dbus-specification.xml: Update for rename.

2005-02-17  Colin Walters  <walters@verbum.org>

	* glib/dbus-gparser.c (struct Parser): Add in_annotation boolean.
	(parse_node, parse_interface, parse_method, parse_signal)
	(parse_property, parse_annotation): Lose if we're currently in an
	annotation.
	(parse_annotation): New function.
	(parser_start_element, parser_end_element): Handle annotation.
	(parse_method, parse_interface): Remove support for c_name attribute,
	switch to annotations.

	* glib/dbus-gidl.h (interface_info_get_binding_names)
	(method_info_get_binding_names)
	(interface_info_get_binding_name, method_info_get_binding_name)
	(interface_info_set_binding_name, method_info_set_binding_name):
	Remove.
	(interface_info_get_annotations, method_info_get_annotations)
	(interface_info_get_annotation, method_info_get_annotation)
	(interface_info_add_annotation, method_info_add_annotation):
	Prototype.

	* glib/dbus-gidl.c (struct InterfaceInfo): Substitute "annotations"
	for "bindings".
	(struct MethodInfo): Ditto.
	Straightfoward conversion of binding methods into annotation methods
	as prototyped.

	* glib/dbus-glib-tool.c (pretty_print): Print annotations.

	* glib/dbus-binding-tool-glib.h (DBUS_GLIB_ANNOTATION_C_SYMBOL): Define.

	* glib/dbus-binding-tool-glib.c (gather_marshallers, generate_glue):
	Use new annotation API.

	* doc/introspect.dtd: Fix a number of DTD syntax errors.  Add
	annotation element.
	
	* doc/dbus-specification.xml: Discuss introspection annotations,
	include list of well-known annotations.

	* test/glib/test-service-glib.xml: Make validate against new DTD.

2005-02-17  Colin Walters  <walters@verbum.org>

	This patch is based on initial work from
	Paul Kuliniewicz <kuliniew@purdue.edu>.

	* glib/dbus-gvalue.c (dbus_gvalue_init): New function; move
	initialization of GValue from dbus type to here.
	(dbus_gvalue_genmarshal_name_from_type): New function; generates a string
	for the "glib-genmarshal" program from a DBus type.
	(dbus_gvalue_binding_type_from_type): New function; turns a DBus type
	into the C name for it we use in the glib bindings.
	(dbus_gvalue_ctype_from_type): New function; maps a DBus type into a
	glib C type (not GValue).
	(dbus_gvalue_demarshal): invoke dbus_gvalue_init.

	* glib/dbus-gutils.c (_dbus_gutils_wincaps_to_uscore): Moved here
	from dbus-gobject.c.

	* glib/dbus-gutils.h: Prototype it.

	* glib/dbus-gproxy.c: Include new dbus-gobject.h.
	(marshal_dbus_message_to_g_marshaller): Use new shared function
	dbus_glib_marshal_dbus_message_to_gvalue_array.

	* glib/dbus-gparser.c (parse_interface, parse_method): Handle c_name attribute.
	Will be changed once we have annotations.

	* glib/dbus-gobject.c: Change info_hash_mutex from GStaticMutex to
	GStaticRWLock.  Callers updated.
	(wincaps_to_uscore): Move to dbus-gutils.c.  Callers updated.
	(string_table_next): New function for iterating over zero-terminated
	string value array.
	(string_table_lookup): New function; retrieves specific entry in
	array.
	(get_method_data): New function; look up method data in object data chunk.
	(object_error_domain_prefix_from_object_info)
	(object_error_code_from_object_info): New functions, but not implemented yet.
	(method_interface_from_object_info): New function; retrieve interface name.
	(method_name_from_object_info): New function; retrieve method name.
	(method_arg_info_from_object_info): New function; retrieve argument data.
	(arg_iterate): New function; iterates over serialized argument data.
	(method_dir_signature_from_object_info): New function; returns a
	GString holding type signature for arguments for just one
	direction (input or output).
	(method_input_signature_from_object_info)
	(method_output_signature_from_object_info): New functions.
	(dbus_glib_marshal_dbus_message_to_gvalue_array): New shared function;
	converts dbus message arguments into a GValue array.  Used for both
	signal handling and method invocation.
	(struct DBusGlibWriteIterfaceData): New utility structure.
	(write_interface): New function; generate introspection XML for
	an interface.
	(introspect_interfaces): New function; gathers all interface->methods,
	generates introspection XML for them.
	(handle_introspect): Invoke introspect_interfaces.
	(get_object_property): Be sure to zero-initalize stack-allocated GValue.
	(lookup_object_and_method): New function; examines an incoming message
	and attempts to match it up (via interface, method name, and argument
	signature) with a known object and method.
	(gerror_domaincode_to_dbus_error_name): New function; converts a
	GError domain and code into a DBus error name.  Needs GError data
	added to object introspection to work well.
	(gerror_to_dbus_error_message): Creates a DBusMessage error return from
	GError.
	(invoke_object_method): New function to invoke an object method
	looked up via lookup_object_and_method.  Parses the incoming
	message, turns it into a GValue array, then invokes the marshaller
	specified in the DBusGMethodInfo.  Creates a new message with
	either return values or error message as appropriate.
	(gobject_message_function): Invoke lookup_object_and_method and
	invoke_object_method.

	* glib/dbus-glib-tool.c: Include dbus-binding-tool-glib.h.
	(enum DBusBindingOutputMode): New enum for binding output modes.
	(pretty_print): Print binding names.
	(dbus_binding_tool_error_quark): GError bits.
	(version): Fix typo.
	(main): Create GIOChannel for output.  Parse new --mode argument,
	possible values are "pretty-print", "glib-server", "glib-client".
	Use mode to invoke appropriate function.
	
	* glib/dbus-gobject.h: Prototype dbus_glib_marshal_dbus_message_to_gvalue_array.

	* glib/dbus-glib-tool.h: New header, just includes GError bits
	for now.

	* glib/dbus-gidl.c (struct InterfaceInfo): Add bindings hashtable;
	maps binding style to name.
	(struct MethodInfo): Ditto.
	(get_hash_keys, get_hash_key): Utility function, returns keys for
	a GHashTable.
	(interface_info_new, method_info_new): Initialize bindings.
	(interface_info_unref, method_info_unref): Destroy bindings.
	(method_info_get_binding_names, method_info_get_binding_name)
	(interface_info_get_binding_names, interface_info_get_binding_name):
	Functions for retrieving binding names.
	(method_info_set_binding_name, interface_info_set_binding_name):
	Functions for setting binding names.

	* glib/dbus-binding-tool-glib.h: New file, has prototypes
	for glib binding generation.

	* glib/dbus-binding-tool-glib.c: New file, implements server-side
	and client-side glib glue generation.

	* glib/Makefile.am (dbus_binding_tool_SOURCES): Add
	dbus-binding-tool-glib.c, dbus-binding-tool-glib.h,
	dbus-glib-tool.h.

	* dbus/dbus-glib.h (struct DBusGMethodMarshaller): Remove in favor
	of using GClosureMarshal directly.
	(struct DBusGObjectInfo): Add n_infos member.

	* test/glib/test-service-glib.xml: New file; contains introspection data
	for MyTestObject used in test-service-glib.c.

	* test/glib/test-service-glib.c (enum MyObjectError): New GError enum.
	(my_object_do_nothing, my_object_increment, my_object_throw_error)
	(my_object_uppercase, my_object_many_args): New test methods.
	(main): Use dbus_g_object_class_install_info to include generated object
	info.

	* test/glib/Makefile.am: Generate server-side glue for test-service-glib.c,
	as well as client-side bindings.

	* test/glib/test-dbus-glib.c: Include test-service-glib-bindings.h.
	(main): Activate TestSuiteGLibService; test invoke a bunch of its methods
	using both the dbus_gproxy stuff directly as well as the generated bindings.

2005-02-15  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_dispatch): always
	complete a pending call, don't run filters first.

	* glib/dbus-gproxy.c (dbus_g_proxy_end_call): change to use
	dbus_pending_call_steal_reply

	* dbus/dbus-pending-call.c (dbus_pending_call_block): just call
	_dbus_connection_block_pending_call
	(dbus_pending_call_get_reply): change to steal_reply and return a
	ref

	* dbus/dbus-connection.c
	(dbus_connection_send_with_reply_and_block): port to work in terms
	of DBusPendingCall
	(_dbus_connection_block_pending_call): replace block_for_reply
	with this

2005-02-14  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-userdb-util.c (_dbus_user_database_lookup_group):
	properly handle looking up group information by name; fix 
	from j@bootlab.org

2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_return_message) 
	(dbus_connection_borrow_message): hold dispatch lock while message
	is outstanding
	(_dbus_connection_block_for_reply): hold dispatch lock while we
	block for the reply, so nobody steals our reply
	(dbus_connection_pop_message): hold the dispatch lock while we
	pluck the message

2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (_dbus_connection_acquire_dispatch)
	(_dbus_connection_release_dispatch)
	(_dbus_connection_acquire_io_path)
	(_dbus_connection_release_io_path): make the mutex and condvar
	control access to the "acquired" flag. Drop the connection lock
	while waiting on the condvar. Hopefully these are baby steps in
	roughly the right direction.

2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c: use separate mutexes for the condition
	variables; this is some kind of baseline for sanity, but the
	condition variables still aren't used correctly afaict

2005-02-13  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
	fix a double-unlock

	* dbus/dbus-connection.c
	(_dbus_connection_detach_pending_call_unlocked): add this

        Initial semi-correct pass through to fix thread locking; there are
	still some issues with the condition variable paths I'm pretty
	sure
	
	* dbus/dbus-server.c: add a mutex on DBusServer and appropriate
	lock/unlock calls

	* dbus/dbus-connection.c (_dbus_connection_do_iteration_unlocked):
	rename to add _unlocked
	(struct DBusConnection): move "dispatch_acquired" and
	"io_path_acquired" to use only one bit each.
	(CONNECTION_LOCK, CONNECTION_UNLOCK): add checks with !DBUS_DISABLE_CHECKS
	(dbus_connection_set_watch_functions): hacky fix to reentrancy
	(_dbus_connection_add_watch, _dbus_connection_remove_watch) 
	(_dbus_connection_toggle_watch, _dbus_connection_add_timeout) 
	(_dbus_connection_remove_timeout) 
	(_dbus_connection_toggle_timeout): drop lock when calling out to
	user functions; done in a hacky/bad way.
	(_dbus_connection_send_and_unlock): add a missing unlock
	(_dbus_connection_block_for_reply): add a missing unlock

	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
	drop lock in a hacky probably unsafe way to call out to user
	function

2005-02-12  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-tree-view.c (info_set_func_text): display more
	details on args

	* bus/driver.c (bus_driver_handle_list_services): list the bus
	driver

	* glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied

	* glib/dbus-gidl.c (signal_info_get_n_args): new function
	(method_info_get_n_args): new function

2005-02-12  Havoc Pennington  <hp@redhat.com>

	* bus/driver.c (bus_driver_handle_introspect): add introspection
	for bus driver

2005-02-12  Havoc Pennington  <hp@redhat.com>

	* bus/driver.c: put the signature of each bus driver method in the
	table of handlers and check it on incoming calls; this isn't
	really useful, but going to add introspect support in a minute.

2005-02-11  Joe Shaw  <joeshaw@novell.com>

	* mono/Connection.cs: The unpredictability of finalizers in mono
	prevents us from deterministically disconnecting the filters from
	the Service class's finalizer, so move tracking of filters and
	matches here.  Add API for that.

	* mono/Service.cs: Remove the code, add code which calls the
	methods now on the Connection class.

2005-02-11  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus.py (class Sender): added to support dbus signals better
	(Bus::add_signal_receiver): added expand_args parameter which defaults
	to True.  When expand args is True the signal handler will pass the 
	message arguments as parameters to the signal handler.  If False
	revert to previous behavior where the signal handler must get the
	argument list from the message.  This is to help port applications
	like HAL that have a tendancy to send variable length argument lists.
	self._match_rule_to_receivers is now a dict of dicts.
	(Bus::remove_signal_receiver): pop handler off the dict intead of 
	removing it from a list
	(Bus::_signal_func): change signal handlers so that interface,
	signal_name, service, path and message are packed into a Sender
	object and that is passed to the handler.  If expand_args is True
	extract the args list from the message and append it to the parameter
	list
	
	* python/dbus_bindings.pyx.in (class Signature): added to support 
	signiature types
	(MessageIter::__init__): changed iteration limit to match D-BUS
	(MessageIter::get*): added INT16, UINT16, SIGNATURE, DICT_ENTRY, 
	STRUCT and VARIENT type support
	(MessageIter::python_value_to_dbus_sig): made recursive to support
	recursive types
	(MessageIter::append*): added Signature, dict, tuple 
	support

	* python/examples/example-client.py: added examples of getting tuples
	and dicts

	* python/examples/example-service.py: added examples of sending tuples
	and dicts

	* python/examples/example-signal-recipient.py: Fixed to handle new
	signal callback format

2005-02-10  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-dbus-glib.c (main): fix so this test doesn't fail
	(call dbus_g_proxy_add_signal)

	* dbus/dbus-server-unix.c (_dbus_server_new_for_tcp_socket):
	escape the hostname
	(_dbus_server_new_for_domain_socket): escape the path

	* dbus/dbus-address.c (dbus_address_escape_value): new
	(dbus_address_unescape_value): new
	(dbus_parse_address): unescape values

	* dbus/dbus-string.c (_dbus_string_append_byte_as_hex): new function

	* doc/dbus-specification.xml: explain how to escape values in
	addresses

2005-02-10  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c (generate_special): modify test to
	avoid using a non-basic dict key

	* dbus/dbus-marshal-validate-util.c: add test for the below

	* doc/dbus-specification.xml: require that dict keys are a basic
	type

	* dbus/dbus-marshal-validate.c
	(_dbus_validate_signature_with_reason): require that dict key is a
	basic type

2005-02-10  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-object-tree.c (handle_default_introspect_and_unlock):
	change to be _and_unlock instead of _unlocked

	* dbus/dbus-connection.c
	(_dbus_connection_send_preallocated_unlocked_no_update): rename to
	have no_update so we can find this bug quickly in future

2005-02-10  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-util.c (verify_test_message): tests for string
	array

	* dbus/dbus-message.c (dbus_message_append_args_valist): add
	support for arrays of string/signature/path

2005-02-10  Joe Shaw  <joeshaw@novell.com>

	* dbus/dbus-connection.c
	(_dbus_connection_queue_received_message_link,
	_dbus_connection_message_sent): Add the path to
	the verbose output.
	(_dbus_connection_send_preallocated_and_unlock): Added.  Calls
	_dbus_connection_send_preallocated_unlocked(), updated the
	dispatch status, and unlocks.  Fixes a bug where certain
	situations (like a broken pipe) could cause a Disconnect message
	to not be sent, tricking the bus into thinking a service was still
	there when the process had quit.
	(_dbus_connection_send_preallocated): Call
	_dbus_connection_send_preallocated_and_unlock().
	(_dbus_connection_send_and_unlock): Added.  Calls
	_dbus_connection_send_preallocated_and_unlock().
	(dbus_connection_send): Call _dbus_connection_send_and_unlock().
	(dbus_connection_send_with_reply): Update the dispatch status and
	unlock.

	* mono/Service.cs (~Service): Added.  Removes the filter so that
	we don't get unmanaged code calling back into a GCed delegate.
	(RemoveFilter); Added.

2005-02-09  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-message.c (dbus_message_iter_open_container):
	- Removed check for iterator type being an array because
	get_arg_type does not work with writer iterators
	- Pass NULL to _dbus_type_writer_recurse if signiture is NULL

2005-02-07  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: some more language cleanups; add
	stuff about how to deal with invalid protocol and extension
	points; add _ to allowed chars in auth commands; add EXTENSION_
	auth command prefix

2005-02-06  Havoc Pennington  <hp@redhat.com>

	* s/expected/required/ in a couple places for clarity

2005-02-07  Colin Walters  <walters@verbum.org>

	* bus/selinux.c (bus_selinux_allows_send): Handle NULL for
	sender or proposed_recipient.

2005-02-06  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c (generate_special): more tests

	* dbus/dbus-marshal-validate.c (validate_body_helper): detect
	array length that exceeds the maximum

2005-02-05  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c (generate_special): more test cases,
	increasing coverage

	* dbus/dbus-marshal-validate.c (validate_body_helper): return the
	reason why a signature was invalid

	* dbus/dbus-marshal-header.c (load_and_validate_field): fix to
	skip the length of the string before we look at it in validation

	* dbus/dbus-string-util.c (_dbus_string_test): add tests for
	equal_substring

	* dbus/dbus-message.c (_dbus_message_loader_new): default
	max_message_length to DBUS_MAXIMUM_MESSAGE_LENGTH

2005-02-05  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-marshal-validate.c (validate_body_helper): fix crash
	if the signature of a variant was empty
	(_dbus_validate_signature_with_reason): catch "(a)" (array inside
	struct with no element type)

	* dbus/dbus-message-factory.c (generate_uint32_changed): add more
	mangled messages to break things

2005-02-04  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
	g_quark_try_string() so it actually can return 0
	(dbus_g_proxy_connect_signal): ditto

2005-02-04  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
	bogus warning
	(tristring_from_message): assert cleanly on null path/interface
	(should not be possible though I decided later)
	(dbus_g_proxy_dispose): move proxy manager unregistration here
	(DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
	g_return_if_fail() checks

2005-02-04  Havoc Pennington  <hp@redhat.com>

	* doc/Makefile.am (EXTRA_DIST): add DTDs to makefile

	* doc/introspect.dtd: add introspect.dtd from David A. Wheeler
	(with some minor changes)

	* doc/dbus-specification.xml: add deprecated attribute to
	introspection format

2005-01-31  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c: rewrite how signals work again, this time I
	think it's sort of right

2005-01-30  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-viewer.c: kind of half-ass hook up the option menu.

2005-01-30  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-names-model.c: dynamically watch NameOwnerChanged

	* autogen.sh: change to autotools 1.9

	* glib/dbus-gproxy.c: completely change how signals work
	(dbus_g_proxy_add_signal): new function to specify signature of a
	signal
	(dbus_g_proxy_emit_received): marshal the dbus message to GValues,
	and g_warning if the incoming message has the wrong signature.

2005-01-30  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-names-model.c (have_names_notify): fix this

	* dbus/dbus-message.c (_dbus_message_iter_get_args_valist): clean
	up the string array handling a bit 

2005-01-30  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-glib.c (dbus_g_pending_call_set_notify): new function
	(dbus_g_pending_call_cancel): new function

	* dbus/dbus-glib.h: move GType decls for connection/message here;
	* dbus/dbus-glib.c: move all the g_type and ref/unref stuff in
	here, just kind of rationalizing how we handle all that

	* tools/dbus-names-model.c: new file for a tree model listing the
	services on a bus

	* tools/dbus-tree-view.c (model_new): use proper typing on the
	model rows

2005-01-30  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gmain.c: add a custom GSource back that just checks
	whether the message queue has anything in it; otherwise, there are 
	cases where we won't see messages in the queue since there was no 
	IO visible to the glib main loop

	* dbus/dbus-connection-internal.h (_DBUS_DEFAULT_TIMEOUT_VALUE):
	increase default message timeout to 25 seconds

2005-01-30  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c (no_bus_stop_server): remove the
	warning about the g_warning that I just fixed

	* glib/dbus-gmain.c: rewrite the main loop stuff to avoid the
	custom source, seems to be a lot easier to understand and work
	better.

2005-01-30  Havoc Pennington  <hp@redhat.com>

        I think this main loop thing is conceptually broken, but here are 
	some band aids. I'll maybe rewrite it in a minute.
	
	* glib/dbus-gmain.c (add_timeout): timeout stuff doesn't use the
	custom GSource, so don't pass it in; confusing
	(gsource_server_finalize, gsource_connection_finalize): add
	finalize handlers that remove all the watches.	

2005-01-30  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gobject.c (introspect_properties): fix the XML
	generated

	* dbus/dbus-message.c (dbus_message_unref): add an in_cache flag
	which effectively detects the use of freed messages

	* glib/dbus-gobject.c (handle_introspect): modify and return the
	reply message instead of the incoming message

	* dbus/dbus-object-tree.c (handle_default_introspect_unlocked):
	gee, maybe it should SEND THE XML instead of just making a string
	and freeing it again ;-)

	* tools/dbus-print-message.c (print_message): improve printing of
	messages

	* configure.in: add debug-glib.service to the output

2005-01-30  Havoc Pennington  <hp@redhat.com>

        dbus-viewer introspected and displayed the bus driver
	
	* dbus/dbus-object-tree.c 
	(object_tree_test_iteration): add tests for a handler registered on "/"

	* dbus/dbus-object-tree.c
	(_dbus_decompose_path): fix to handle path "/" properly
	(run_decompose_tests): add tests for path decomposition
	
	* glib/dbus-gutils.c (_dbus_gutils_split_path): fix to handle "/"
	properly

	* glib/dbus-gobject.c (handle_introspect): fix quotes

	* test/glib/run-test.sh: support launching the bus, then running
	dbus-viewer

	* test/glib/test-service-glib.c (main): put in a trivial gobject
	subclass and register it on the connection

	* bus/driver.c (bus_driver_handle_introspect): implement
	introspection of the bus driver service

	* dbus/dbus-protocol.h: add #defines for the XML namespace,
	identifiers, doctype decl

	* bus/driver.c (bus_driver_handle_get_service_owner): handle
	attempts to get owner of DBUS_SERVICE_ORG_FREEDESKTOP_DBUS by 
	returning the service unchanged.
	(bus_driver_handle_message): remove old check for reply_serial in
	method calls, now the message type deals with that
	(bus_driver_handle_message): handle NULL interface

	* glib/dbus-gproxy.c (dbus_g_proxy_get_bus_name): new function

	* glib/dbus-gloader-expat.c (description_load_from_string): allow
	-1 for len

	* tools/dbus-viewer.c: add support for introspecting a service on
	a bus

	* glib/dbus-gproxy.c (dbus_g_pending_call_ref): add
	(dbus_g_pending_call_unref): add

2005-01-29  Havoc Pennington  <hp@redhat.com>

	* tools/dbus-tree-view.c: add support for displaying properties.
	(run dbus-viewer with an introspect xml file as arg, then resize
	the window so the tree elements show up, not sure what that is)

	* glib/dbus-gobject.c (handle_introspect): return
	org.freedesktop.Properties and org.freedesktop.Introspectable
	interfaces when we are introspected.

	* doc/dbus-specification.xml: allow empty interface name when 
	Get/Set a property

2005-01-29  Havoc Pennington  <hp@redhat.com>

	* glib/Makefile.am: rename dbus-glib-tool to dbus-binding-tool;
	though it uses glib, it could be extended for any binding in
	principle

	* glib/dbus-gobject.c (gobject_message_function): change to the
	new way properties work

	* dbus/dbus-protocol.h: add the new interfaces

	* doc/dbus-specification.xml: document the introspection format,
	Introspectable interface, and add an org.freedesktop.Properties
	interface.

	* glib/dbus-gparser.c: add support for a <property> element

	* glib/dbus-gidl.c: add PropertyInfo

	* glib/dbus-gobject.c (handle_introspect): put the outermost
	<node> outside the signal and property descriptions.
	(introspect_properties): export properties as <property> rather
	than as method calls

2005-01-28  Havoc Pennington  <hp@redhat.com>

	* doc/TODO, doc/dbus-specification.xml: spec and TODO tweaks
	related to authentication protocol

2005-01-28  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: Updated to handle new D-BUS type system
		- BUS_ACTIVATION -> BUS_STARTER
		- DBUS_BUS_ACTIVATION -> DBUS_BUS_STARTER
		- class MessageIter (__init__): Added recursion checking 
		so we throw a nice error instead of just disconnecting from the
		bus.
		(get): Added arg_type parameter for recursion.
		Removed the nil type
		Added signiture type placeholder (not implemented)
		Added struct type placeholder (not implemented)
		Added varient type placeholder (not implemented)
		Commented out dict type for now	    
		(get_element_type): renamed from get_array_type
		(get_*): changed to use the dbus_message_iter_get_basic API
		(get_*_array): removed in favor of recursive get_array method
		(get_array): new recursive method which calls get to marshal
	        the elements of the array
		(value_to_dbus_sig): New method returns the corrasponding
		dbus signiture to a python value
		(append): Comment out dict handling for now
		Handle lists with the new recursive API
		Comment out None handling for now
		(append_nil): removed
		(append_*): changed to use dbus_message_iter_append_basic API
		(append_*_array): removed in favor of recursive append_array 
		method
		(__str__): Make it easier to print out recursive iterators
		for debugging
		- class Message (__str__): moved type inspection to the
		MessageIter class' __str__ method
		(get_iter): Added an append parameter wich defaults to False
		If True use the new API's to create an append iterator

	* python/dbus.py: Update to use new bindings API
		- TYPE_ACTIVATION -> TYPE_STARTER
		- class Bus (_get_match_rule): GetServiceOwner -> GetNameOwner
		- class ActivationBus -> class StarterBus
		- class RemoteObject (__call__): get an append iterator
		- (_dispatch_dbus_method_call): get an append iterator
		- class Object (emit_signal): get an append iterator

	* python/examples/: Fixed up the examples to work with the new API
		
2005-01-28  Joe Shaw  <joeshaw@novell.com>

	* configure.in: Bump version up to 0.30.

	* HACKING: Add a release item to bump the version number up after 
	a release.

2005-01-28  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: update to describe 16-bit types and
	dict entries

	* dbus/dbus-marshal-basic.c (_dbus_unpack_uint16): fix broken
	assertion

	* dbus/dbus-protocol.h (DBUS_TYPE_DICT_ENTRY): add DICT_ENTRY as a
	type

	* dbus/dbus-marshal-recursive.c: implement

2005-01-27  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-arch-deps.h.in: add 16/32-bit types

	* configure.in: find the right type for 16 and 32 bit ints as well
	as 64

	* dbus/dbus-protocol.h (DBUS_TYPE_INT16, DBUS_TYPE_UINT16): add
	the 16-bit types so people don't have to stuff them in 32-bit or
	byte arrays.

2005-01-27  Havoc Pennington  <hp@redhat.com>

        * dbus/dbus-message.c: byteswap the message if you init an
	iterator to read/write from it
	
	* dbus/dbus-marshal-byteswap.c: new file implementing 
	_dbus_marshal_byteswap()

	* dbus/dbus-marshal-basic.c: add _dbus_swap_array()

2005-01-26  Havoc Pennington  <hp@redhat.com>
	
	* dbus/dbus-marshal-validate-util.c: break this out (and fix
	build, apparently - nobody noticed?)
	
2005-01-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-marshal-recursive.h: remove todo comment

2005-01-25  Joe Shaw  <joeshaw@novell.com>

	* Land the mono binding changes to conform to the new APIs.

	* mono/Makefile.am: Remove Custom.cs, DBusType/Custom.cs,
	DBusType/Dict.cs, and DBusType/Nil.cs from the build.

	* mono/Arguments.cs (GetCodeAsString): Added.  Returns the dbus
	type code as a string.
	(InitAppending): Rename dbus_message_append_iter_init() to
	dbus_message_iter_init_append().

	* mono/BusDriver.cs: Rename ServiceEventHandler to
	NameOwnerChangedHandler.  Rename GetServiceOwner to GetOwner.
	Rename ServiceOwnerChanged to NameOwnerChanged.

	* mono/Connection.cs: Rename BaseService to UniqueName, and the
	underlying C call.

	* mono/Custom.cs: Removed.  The CUSTOM type has been removed.

	* mono/Service.cs: Rename Exists to HasOwner, internally rename
	dbus_bus_acquire_service() to dbus_bus_request_name().

	* mono/DBusType/Array.cs (ctor): Use Type.GetElementType() instead
	of Type.UnderlyingSystemType to get the correct element type for
	the array.
	(ctor): Update code for new APIs: use dbus_message_iter_recurse(),
	dbus_message_get_{element|arg}_type() instead of
	dbus_message_iter_init_array_iterator().
	(Append): Replace dbus_message_iter_append_array() with
	dbus_message_iter_open_container() and
	dbus_message_iter_close_container().

	* mono/DBusType/Custom.cs, mono/DBusType/Nil.cs: Removed.  These
	types have been removed.
	
	* mono/DBusType/*.cs: Replace calls of
	dbus_message_iter_get_[type]() to dbus_message_iter_get_basic(),
	but specify the type in the DllImport extern declaration.  Ditto
	for dbus_message_iter_append_[type]() ->
	dbus_message_iter_append_basic().

	* mono/example/BusListener.cs: Update for ServiceEventHandler ->
	NameOwnerChangedHandler.

2005-01-25  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: Rename of methods and bindings
		- get_base_service -> get_unique_name
		- bus_get_base_service -> bus_get_unique_name
		- dbus_bus_get_base_service -> dbus_bus_get_unique_name
		- ACTIVATION_REPLY_ACTIVATED -> DBUS_START_REPLY_SUCCESS 
		- ACTIVATION_REPLY_ALREADY_ACTIVE -> DBUS_START_REPLY_ALREADY_RUNNING
		- bus_activate_service -> bus_start_service_by_name
		- dbus_bus_activate_service -> dbus_bus_start_service_by_name
		- bus_acquire_service -> bus_request_name
		- dbus_bus_acquire_service -> dbus_bus_request_name
		- bus_service_exists -> bus_name_has_owner
		- dbus_bus_service_exists -> dbus_bus_name_has_owner

	* python/dbus.py: Rename of methods
		- activate_service -> start_service_by_name
		- bus_acquire_service -> bus_request_name
		- ACTIVATION_REPLY_ACTIVATED -> START_REPLY_SUCCESS 
		- ACTIVATION_REPLY_ALREADY_ACTIVE -> START_REPLY_ALREADY_RUNNING

	
2005-01-24  Joe Shaw  <joeshaw@novell.com>

	* dbus/dbus-connection.c (dbus_connection_dispatch): Print out the
	signature for the method that can't be found.

	* dbus/dbus-message.c (dbus_message_iter_init): To check to see if
	the message has any arguments, we need to call
	_dbus_type_reader_get_current_type(), not
	_dbus_type_reader_has_next().

2005-01-24  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c: more testing of message validation

	* dbus/dbus-protocol.h (DBUS_MINIMUM_HEADER_SIZE): move to this
	header

2005-01-23  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-factory.c, dbus/dbus-message-util.c: 
	get this all working, not many tests in the framework yet though

2005-01-22  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-faq.xml, doc/dbus-tutorial: add a FAQ and update
	tutorial, based on work from David Wheeler.

2005-01-21  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-bus.c: add more return_if_fail checks

	* dbus/dbus-message.c (load_message): have the "no validation"
	mode (have to edit the code to toggle the mode for now though)

	* dbus/dbus-marshal-header.c (_dbus_header_load): have a mode that
	skips all validation; I want to use this at least for benchmark
	baseline, I'm not sure if it should be a publicly-available switch.

2005-01-21  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gmain.c: don't put the GLib bindings in the same
	toplevel doxygen group as the low-level API stuff

	* dbus/dbus.h: note that libdbus is the low-level API

2005-01-20  Havoc Pennington  <hp@redhat.com>

	* update-dbus-docs.sh: script to update docs on the web site, only
	works for me though. neener.

2005-01-20  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_poll): amazingly, trying to compile
	code can reveal bugs in it

2005-01-20  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
	select() version, patches from Tor Lillqvist

2005-01-20  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-tutorial.xml: replace > with &gt;

	* bus/services.c (bus_registry_acquire_service): validate the name
	and return a better error if it's no good.

	* doc/dbus-specification.xml: note NO_AUTO_START change

	* dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
	from AUTO_START, we're toggling the default

	* bus/dispatch.c: adapt the tests to change of auto-start default

2005-01-18  Havoc Pennington  <hp@redhat.com>

	* rename dbus-daemon-1 to dbus-daemon throughout

2005-01-18  Havoc Pennington  <hp@redhat.com>

        * Throughout, grand renaming to strip out the use of "service",
	just say "name" instead (or "bus name" when ambiguous).  Did not
	change the internal code of the message bus itself, only the
	programmer-facing API and messages.
	
	* doc/dbus-specification.xml: further update the message bus section
	
	* bus/config-parser.c (all_are_equiv): fix bug using freed string
	in error case

2005-01-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-types.h: remove 16-bit types since we don't use them
	ever

	* dbus/dbus-marshal-validate.c (_dbus_validate_path): disallow any
	"invalid name character" not only non-ASCII

	* doc/dbus-specification.xml: further update spec, message bus 
	parts are still out-of-date but the marshaling etc. stuff is now
	accurate-ish

2005-01-17  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: partially update spec

2005-01-17  Havoc Pennington  <hp@redhat.com>

        * Throughout, align variant bodies according to the contained
	type, rather than always to 8. Should save a fair bit of space in
	message headers.
	
	* dbus/dbus-marshal-validate.c (_dbus_validate_body_with_reason):
	fix handling of case where p == end

	* doc/TODO: remove the dbus_bool_t item and variant alignment items

2005-01-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-types.h: hardcode dbus_bool_t to 32 bits

	* Throughout: modify DBUS_TYPE_BOOLEAN to be a 32-bit type instead
	of an 8-bit type. Now dbus_bool_t is the type to use whenever you 
	are marshaling/unmarshaling a boolean.

2005-01-16  Havoc Pennington  <hp@redhat.com>

        This is about it on what can be disabled/deleted from libdbus
	easily, back below 150K anyhow. Deeper cuts are more work than 
	just turning the code off as I've done here.
	
	* dbus/dbus-marshal-basic.c (_dbus_pack_int32): we don't need the
	signed int convenience funcs

	* dbus/dbus-internals.c (_dbus_verbose_real): omit when not in
	verbose mode

	* dbus/dbus-string-util.c, dbus/dbus-string.c: more breaking
	things out of libdbus

	* dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-util.c: same
	
	* dbus/dbus-hash.c: purge the TWO_STRINGS crap (well, make it
	tests-enabled-only, though it should probably be deleted)

	* dbus/dbus-message-util.c: same stuff

	* dbus/dbus-auth-util.c: same stuff

2005-01-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-userdb-util.c: split out part of dbus-userdb.c

	* dbus/dbus-sysdeps.c (_dbus_uid_from_string): move here to pave
	way for stripping down dbus-userdb.c stuff included in libdbus.
	Rename _dbus_parse_uid for consistency.

2005-01-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.c (_dbus_real_assert): print the function
	name the assertion failed in

	* dbus/dbus-internals.h (_dbus_return_if_fail) 
	(_dbus_return_val_if_fail): assert that the name of the function
	containing the check doesn't start with '_', since we only want to 
	use checks on public functions
	
	* dbus/dbus-connection.c (_dbus_connection_ref_unlocked): change
	checks to assertions

	* dbus/dbus-marshal-header.c (_dbus_header_set_field_basic):
	change checks to asserts for private function

	* dbus/dbus-message.c (_dbus_message_set_serial): checks
	to asserts for private function

	* dbus/dbus-marshal-recursive.c (skip_one_complete_type): remove
	broken assertion that was breaking make check
	(_dbus_type_reader_array_is_empty): remove this rather than fix
	it, was only used in assertions

2005-01-16  Havoc Pennington  <hp@redhat.com>

	* test/unused-code-gc.py: hacky script to find code that's used
	only by the bus (not libdbus) or used only by tests or not used at
	all. It has some false alarms, but looks like we can clean up a
	lot of size from libdbus.

	* dbus/dbus-sysdeps.c, dbus/dbus-sysdeps-utils.c,
	dbus/Makefile.am: initially move 10K of binary size out of libdbus
	
2005-01-16  Havoc Pennington  <hp@redhat.com>

        * Add and fix docs according to Doxygen warnings throughout
	source.
	
	* dbus/dbus-marshal-recursive.c
	(_dbus_type_reader_array_is_empty): change this to just call
	array_reader_get_array_len() and make it static

	* dbus/dbus-message.c (dbus_message_iter_get_element_type): rename
	from get_array_type
	(dbus_message_iter_init_append): rename from append_iter_init

	* dbus/dbus-marshal-recursive.c
	(_dbus_type_reader_get_element_type): rename from
	_dbus_type_reader_get_array_type

2005-01-15  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c (with_bus_server_filter): fix crash

	* dbus/dbus-marshal-basic.c (_dbus_unpack_uint32): inline as macro
	when DBUS_DISABLE_ASSERT
	(_dbus_marshal_set_basic): be sure we align for the string length

	* dbus/dbus-marshal-recursive.c (skip_one_complete_type): make
	this look faster

	* dbus/dbus-string.c (_dbus_string_get_const_data_len): add an
	inline macro version
	(_dbus_string_set_byte): provide inline macro version

2005-01-15  Havoc Pennington  <hp@redhat.com>

	* Land the new message args API and type system.

	This patch is huge, but the public API change is not 
	really large. The set of D-BUS types has changed somewhat, 
	and the arg "getters" are more geared toward language bindings;
	they don't make a copy, etc.

	There are also some known issues. See these emails for details
	on this huge patch:
	http://lists.freedesktop.org/archives/dbus/2004-December/001836.html
        http://lists.freedesktop.org/archives/dbus/2005-January/001922.html
	
	* dbus/dbus-marshal-*: all the new stuff

	* dbus/dbus-message.c: basically rewritten

	* dbus/dbus-memory.c (check_guards): with "guards" enabled, init
	freed blocks to be all non-nul bytes so using freed memory is less
	likely to work right

	* dbus/dbus-internals.c (_dbus_test_oom_handling): add
	DBUS_FAIL_MALLOC=N environment variable, so you can do
	DBUS_FAIL_MALLOC=0 to skip the out-of-memory checking, or
	DBUS_FAIL_MALLOC=10 to make it really, really, really slow and
	thorough.

	* qt/message.cpp: port to the new message args API
	(operator<<): use str.utf8() rather than str.unicode()
	(pretty sure this is right from the Qt docs?)

	* glib/dbus-gvalue.c: port to the new message args API

	* bus/dispatch.c, bus/driver.c: port to the new message args API

	* dbus/dbus-string.c (_dbus_string_init_const_len): initialize the
	"locked" flag to TRUE and align_offset to 0; I guess we never
	looked at these anyhow, but seems cleaner.

	* dbus/dbus-string.h (_DBUS_STRING_ALLOCATION_PADDING):
	move allocation padding macro to this header; use it to implement
	(_DBUS_STRING_STATIC): ability to declare a static string.

	* dbus/dbus-message.c (_dbus_message_has_type_interface_member):
	change to return TRUE if the interface is not set.

	* dbus/dbus-string.[hc]: move the D-BUS specific validation stuff
	to dbus-marshal-validate.[hc]

	* dbus/dbus-marshal-basic.c (_dbus_type_to_string): move here from
	dbus-internals.c

	* dbus/Makefile.am: cut over from dbus-marshal.[hc]
	to dbus-marshal-*.[hc]

	* dbus/dbus-object-tree.c (_dbus_decompose_path): move this
	function here from dbus-marshal.c

2005-01-12  Joe Shaw  <joeshaw@novell.com>

	* NEWS: Update for 0.23.

	* configure.in: Release 0.23.

2005-01-12  Joe Shaw  <joeshaw@novell.com>

	* mono/Makefile.am, mono/example/Makefile.am: Always build the 
	dbus DLL with --debug.  Clean up after the .mdb files this leaves
	behind.

	* mono/doc/Makefile.am: Need to uninstall the docs on "make
	uninstall"

	* mono/Arguments.cs (GetDBusTypeConstructor): If the type
	is an enum, get the enum's underlying type.  Another mono
	1.1.3 fix.

2005-01-11  Joe Shaw  <joeshaw@novell.com>

	Patch from Sjoerd Simons <sjoerd@luon.net>

	* mono/Makefile.am, mono/example/Makefile.am: Don't redefine
	DESTDIR.  It breaks stuff.

2005-01-11  Joe Shaw  <joeshaw@novell.com>

	Patch from Tambet Ingo <tambet@ximian.com>

	* mono/DBusType/Array.cs (Get): Get the underlying element type by
	calling type.GetElementType().  The code previously depended on
	broken Mono behavior, which was fixed in Mono 1.1.3.

	* mono/DBusType/Dict.cs (constructor): Fix the parameters for
	Activator.CreateInstance() so that the class's constructor is
	called with the right parameters.

2005-01-11  Joe Shaw  <joeshaw@novell.com>

	Patch from Timo Teräs <ext-timo.teras@nokia.com>

	* dbus/dbus-connection.c
	(_dbus_connection_queue_received_message_link): Call
	_dbus_connection_remove_timeout() instead of the _locked()
	variant, since it's always called from
	_dbus_connection_handle_watch(), which handles the locking.
	Removed the _locked() variant since it's no longer used.

2005-01-03  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.h: I'm an idiot, _dbus_assert certainly can
	return
	
2004-12-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.h: add _DBUS_GNUC_NORETURN to _dbus_assert

2005-01-03  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_sysdeps_test): fix using == on
	floating point

	* dbus/dbus-string.c (_dbus_string_insert_alignment): new function

2005-01-02  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-internals.h (_DBUS_ALIGN_OFFSET): new macro

2005-01-01  Havoc Pennington  <hp@redhat.com>

	* configure.in: add -Wfloat-equal

2005-01-01  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.h: add _DBUS_DOUBLES_BITWISE_EQUAL macro, 
	for a variety of reasons '==' doesn't do this.

2004-12-31  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (_dbus_string_equal_substrings): new function
	I keep wishing I had

2004-12-30  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus.py: s/ACTIVATION_REPLY_ACTIVE/ACTIVATION_REPLY_ACTIVATED

2004-12-30  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: Change DBUS_ACTIVATION_REPLY_ACTIVATED
	and DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE to match the values in
	dbus-protocol.h.  Because they are defines and not enums they are not
	autogenerated.

2004-12-26  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in (bus_activate_service): Bind
	dbus_bus_activate_service

	* python/dbus.py (Bus.activate_service): activate a service on the
	bus.

2004-12-24  Havoc Pennington  <hp@redhat.com>

	* test/decode-gcov.c: change to use .gcno and .gcda files, but the
	file format has also changed and I haven't adapted to that yet
	
	* Makefile.am: load .gcno files from latest gcc

2004-12-23  John (J5) Palmieri  <johnp@redhat.com>
	* Patch from Rob Taylor <robtaylor@fastmail.fm>

	* python/dbus_bindings.pyx.in (bus_get_unix_user): New
	lowlevel binding

	* python/dbus.py (get_unix_user): Added binding to 
	call dbus_bindings.bus_get_unix_user

	* python/extract.py: Modified the proto_pat regex to
	handle unsigned long

2004-12-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/make-dbus-glib-error-enum.sh: omit the function keyword for
	better POSIX compliance.

2004-12-19  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (_dbus_string_insert_4_aligned) 
	(_dbus_string_insert_8_aligned): new functions

	* dbus/dbus-string.c (_dbus_string_alloc_space): new function

2004-12-18  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (_dbus_string_validate_ascii): use ISASCII
	macro

	* dbus/dbus-message.c: fix a comment, and add a still-unused
	not-implemented function

	* dbus/dbus-marshal.h: fix comment

	* dbus/dbus-internals.h (_DBUS_ISASCII): new macro

2004-12-17  Joe Shaw  <joeshaw@novell.com>

	* mono/DBusType/Byte.cs, mono/DBusType/Int32.cs,
	mono/DBusType/Int64.cs, mono/DBusType/UInt32.cs,
	mono/DBusType/UInt64.cs: Use Enum.GetUnderlyingType() instead of
	Type.UnderlyingSystemType to get the actual system type
	underneath.  This code previously depended on the broken Mono
	behavior, which was fixed in 1.1.3.

2004-11-27  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.h (_dbus_string_get_byte): inline when asserts
	are disabled
	(_dbus_string_get_const_data): inline when asserts are disabled

	* dbus/dbus-message.c: record the _dbus_current_generation of
	creation so we can complain if dbus_shutdown() is used improperly.
	Do this only if checks are enabled.

	* dbus/dbus-connection.c: ditto
	
2004-11-26  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: add with_bus mode to profile echoes
	that go through the bus.

	* test/glib/run-test.sh: add ability to run test-profile

	* bus/dbus-daemon-1.1.in: fix to say that SIGHUP causes partial
	config file reload.

2004-11-26  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: clean up how the fake_malloc_overhead
	thing was implemented

2004-11-26  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: tweak a bit, add support for some
	made-up minimal malloc overhead with plain sockets, since in 
	real life some sort of buffers are unavoidable thus we could 
	count them in the theoretical best case

2004-11-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (dbus_message_cache_or_finalize): fix bug
	where I was trying to cache one too many messages

2004-11-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c: reimplement message cache as an array which 
	makes the cache about twice as fast and saves maybe 1.5% overall

2004-11-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-threads.c (init_global_locks): forgot to put the
	message cache lock here

2004-11-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (struct DBusMessage): put the locked bit and
	the "char byte_order" next to each other to save 4 bytes
	(dbus_message_new_empty_header): reduce preallocation, since the
	message cache should achieve a similar effect
	(dbus_message_cache_or_finalize, dbus_message_get_cached): add a
	message cache that keeps a few DBusMessage around in a pool,
	another 8% speedup or so.

	* dbus/dbus-dataslot.c (_dbus_data_slot_list_clear): new function

2004-11-25  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-transport-unix.c (unix_do_iteration): if we're going
	to write, without reading or blocking, try it before the poll()
	and skip the poll() if nothing remains to write. This is about a
	3% speedup in the echo client/server

2004-11-25  Havoc Pennington  <hp@redhat.com>

        The primary change here is to always write() once before adding
	the write watch, which gives us about a 10% performance increase.
	
	* dbus/dbus-transport-unix.c: a number of modifications to cope
	with removing messages_pending
	(check_write_watch): properly handle
	DBUS_AUTH_STATE_WAITING_FOR_MEMORY; adapt to removal of
	messages_pending stuff
	(check_read_watch): properly handle WAITING_FOR_MEMORY and
	AUTHENTICATED cases
	(unix_handle_watch): after writing, see if the write watch can be
	removed
	(unix_do_iteration): assert that write_watch/read_watch are
	non-NULL rather than testing that they aren't, since they 
	aren't allowed to be NULL. check_write_watch() at the end so 
	we add the watch if we did not finish writing (e.g. got EAGAIN)

	* dbus/dbus-transport-protected.h: remove messages_pending call,
	since it resulted in too much inefficient watch adding/removing; 
	instead we now require that the transport user does an iteration 
	after queueing outgoing messages, and after trying the first
	write() we add a write watch if we got EAGAIN or exceeded our 
	max bytes to write per iteration setting

	* dbus/dbus-string.c (_dbus_string_validate_signature): add this
	function

	* dbus/dbus-server-unix.c (unix_finalize): the socket name was
	freed and then accessed, valgrind flagged this bug, fix it

	* dbus/dbus-message.c: fix several bugs where HEADER_FIELD_LAST was taken
	as the last valid field plus 1, where really it is equal to the
	last valid field. Corrects some message corruption issues.

	* dbus/dbus-mainloop.c: verbosity changes

	* dbus/dbus-keyring.c (_dbus_keyring_new_homedir): handle OOM
	instead of aborting in one of the test codepaths

	* dbus/dbus-internals.c (_dbus_verbose_real): fix a bug that
	caused not printing the pid ever again if a verbose was missing
	the newline at the end
	(_dbus_header_field_to_string): add HEADER_FIELD_SIGNATURE

	* dbus/dbus-connection.c: verbosity changes; 
	(dbus_connection_has_messages_to_send): new function
	(_dbus_connection_message_sent): no longer call transport->messages_pending
	(_dbus_connection_send_preallocated_unlocked): do one iteration to
	try to write() immediately, so we can avoid the write watch. This
	is the core purpose of this patchset
	(_dbus_connection_get_dispatch_status_unlocked): if disconnected,
	dump the outgoing message queue, so nobody will get confused
	trying to send them or thinking stuff is pending to be sent

	* bus/test.c: verbosity changes

	* bus/driver.c: verbosity/assertion changes

	* bus/dispatch.c: a bunch of little tweaks to get it working again
	because this patchset changes when/where you need to block.

2004-11-23  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: modify to accept a plain_sockets
	argument in which case it will bench plain sockets instead of
	libdbus, for comparison purposes.

2004-11-22  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c (N_CLIENT_THREADS): run multiple
	threads for more time, so sysprof can get a grip on it.

	* dbus/dbus-string.c (_dbus_string_validate_utf8): remove
	pointless variable

2004-11-13  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-profile.c: fix this thing up a bit

	* dbus/dbus-message.c (dbus_message_new_empty_header): increase
	preallocation sizes by a fair bit; not sure if this will be an
	overall performance win or not, but it does reduce reallocs.

	* dbus/dbus-string.c (set_length, reallocate_for_length): ignore
	the test hack that forced constant realloc if asserts are
	disabled, so we can profile sanely. Sprinkle in some
	_DBUS_UNLIKELY() which are probably pointless, but before I
	noticed the real performance problem I put them in.
	(_dbus_string_validate_utf8): micro-optimize this thing a little
	bit, though callgrind says it didn't help; then special-case
	ascii, which did help a lot; then be sure we detect nul bytes as
	invalid, which is a bugfix.
	(align_length_then_lengthen): add some more _DBUS_UNLIKELY
	superstition; use memset to nul the padding instead of a manual
	loop.
	(_dbus_string_get_length): inline this as a
	macro; it showed up in the profile because it's used for loop
	tests and so forth

2004-11-10  Colin Walters  <walters@verbum.org>

	* dbus/dbus-spawn.c (check_babysit_events): Handle EINTR,
	for extra paranoia.

2004-11-09  Colin Walters  <walters@verbum.org>

	* dbus/dbus-string.c (_dbus_string_get_length): New
	function, writes DBusString to C buffer.

	* dbus/dbus-string.h: Prototype it.

	* dbus/dbus-message.c (dbus_message_type_to_string): New
	function, converts message type into C string.

	* dbus/dbus-message.h: Prototype it.

	* bus/selinux.c (bus_selinux_check): Take source pid,
	target pid, and audit data.  Pass audit data to
	avc_has_perm.
	(log_audit_callback): New function, appends extra
	audit information.
	(bus_selinux_allows_acquire_service): Also take
	service name, add it to audit data.
	(bus_selinux_allows_send): Also take message
	type, interface, method member, error name,
	and destination, and add them to audit data.
	(log_cb): Initialize func_audit.
	
	* bus/selinux.h (bus_selinux_allows_acquire_service)
	(bus_selinux_allows_send): Update prototypes 

	* bus/services.c (bus_registry_acquire_service): Pass
	service name to bus_selinux_allows_acquire_service.

	* bus/bus.c (bus_context_check_security_policy): Pass
	additional audit data.  Move assignment of dest
	to its own line.

2004-11-07  Colin Walters  <walters@verbum.org>

	* dbus/dbus-transport-unix.c (do_authentication): Always
	initialize auth_completed.
	
2004-11-07  Colin Walters  <walters@verbum.org>

	* bus/bus.c (load_config): Break into three
	separate functions: process_config_first_time_only,
	process_config_every_time, and process_config_postinit.
	(process_config_every_time): Move call of
	bus_registry_set_service_context_table into
	process_config_postinit.
	(process_config_postinit): New function, does
	any processing that needs to happen late
	in initialization (and also on reload).
	(bus_context_new): Instead of calling load_config,
	open config parser here and call process_config_first_time_only
	and process_config_every_time directly.  Later, after
	we have forked but before changing UID,
	invoke bus_selinux_full_init, and then call
	process_config_postinit.
	(bus_context_reload_config): As in bus_context_new,
	load parse file inside here, and call process_config_every_time
	and process_config_postinit.

	* bus/services.h, bus/services.c
	(bus_registry_set_service_context_table): Rename
	from bus_registry_set_sid_table.  Take string hash from config
	parser, and convert them here into SIDs.

	* bus/config-parser.c (struct BusConfigParser): Have
	config parser only store a mapping of service->context
	string.
	(merge_service_context_hash): New function.
	(merge_included): Merge context string hashes instead
	of using bus_selinux_id_table_union.
	(bus_config_parser_new): Don't use bus_selinux_id_table_new;
	simply create a new string hash.
	(bus_config_parser_unref): Unref it.
	(start_selinux_child): Simply insert strings into hash,
	don't call bus_selinux_id_table_copy_over.

	* bus/selinux.h, bus/selinux.c (bus_selinux_id_table_union)
	(bus_selinux_id_table_copy_over): Delete.

2004-11-03  Colin Walters  <walters@verbum.org>

	* bus/selinux.c (bus_selinux_pre_init): Kill some unused
	variables.
	
2004-11-03  Colin Walters  <walters@verbum.org>

	* bus/test-main.c (test_pre_hook): Fix test logic,
	thanks Joerg Barfurth <Joerg.Barfurth@Sun.COM>.

2004-11-02  Colin Walters  <walters@redhat.com>

	* bus/selinux.c (bus_selinux_init): Split into two functions,
	bus_selinux_pre_init and bus_selinux_post_init.
	(bus_selinux_pre_init): Just determine whether SELinux is
	enabled.
	(bus_selinux_post_init): Do everything else.

	* bus/main.c (main): Call bus_selinux_pre_init before parsing
	config file, and bus_selinux_post_init after.  This ensures that
	we don't lose the policyreload notification thread that
	bus_selinux_init created before forking previously.
	
	* bus/test-main.c (test_pre_hook): Update for split.

2004-10-31  Owen Fraser-Green  <owen@discobabe.net>

	Patch from Johan Fischer <linux@fischaz.com>
	
	* mono/doc/Makefile.am (install-data-local): Added directory
	install for DESTDIR

2004-10-29  Colin Walters  <walters@redhat.com>

	* dbus/dbus-sysdeps.h (_dbus_become_daemon): Also take
	parameter for fd to write pid to.	

	* dbus/dbus-sysdeps.c (_dbus_become_daemon): Implement it.
	
	* bus/bus.c (bus_context_new): Pass print_pid_fd
	to _dbus_become_daemon (bug #1720)

2004-10-29  Colin Walters  <walters@redhat.com>

	Patch from Ed Catmur <ed@catmur.co.uk>

	* mono/doc/Makefile.am (install-data-local): Handle
	DESTDIR.

2004-10-29  Colin Walters  <walters@redhat.com>

	* bus/.cvsignore, qt/.cvsignore: Update.

2004-10-29  Colin Walters  <walters@redhat.com>

	Patch from Kristof Vansant <de_lupus@pandora.be>

	* configure.in: Detect Slackware.
	* bus/Makefile.am (SCRIPT_IN_FILES): Add rc.messagebus.in.
	* bus/rc.messagebus.in: New file.

2004-10-29  Colin Walters  <walters@redhat.com>

	* tools/dbus-monitor.c (filter_func): Return
	DBUS_HANDLER_RESULT_HANDLED in filter function
	for now.  See:
	http://freedesktop.org/pipermail/dbus/2004-August/001433.html

2004-10-29  Colin Walters  <walters@redhat.com>

	Patch from Matthew Rickard <mjricka@epoch.ncsc.mil>

	* bus/services.c (bus_registry_acquire_service): 
	Correctly retrieve service name from DBusString
	for printing.

2004-10-29  Colin Walters  <walters@redhat.com>

	* dbus/dbus-glib.h: Update documentation to not
	refer to internal APIs.

2004-10-27  Joe Shaw  <joeshaw@novell.com>

	* mono/Arguments.cs (GetDBusTypeConstructor):
	type.UnderlyingSystemType will return "System.Byte" if you do it
	on "byte[]", which is not what we want.  So check the type.IsArray
	property and use System.Array instead.

2004-10-25  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-sysdeps.c (fill_user_info): On errors do not free
	the DBusUserInfo structure since this is passed into the function.
	This would cause a double free when the function that allocated
	the structure would try to free it when an error occured.

	* (bus/session.conf.in, bus/Makefile.am, dbus/configure.in):
	use /usr/share/dbus-1/services instead of /usr/lib/dbus-1.0/services
	for service activation to avoid 32bit/64bit parallel install issues

2004-10-21  Colin Walters  <walters@verbum.org>

	* AUTHORS: Fix my email address, the @gnu.org one
	has been bouncing for some time.  Also add J5.
	
2004-10-21  Colin Walters  <walters@verbum.org>

	* dbus/dbus-transport-unix.c (do_authentication): Return
	authentication status to callers.
	(unix_handle_watch): If we completed authentication this round,
	don't do another read.  Instead wait until the next iteration,
	after we've read any pending data in the auth buffer.
	(unix_do_iteration): Ditto.
	(unix_handle_watch): Updated for new do_authentication prototype.

2004-10-18  Colin Walters  <walters@verbum.org>

	* bus/selinux.c (bus_selinux_enabled): Handle
	--disable-selinux case.
	
2004-10-18  Colin Walters  <walters@verbum.org>

	* bus/selinux.h: Add bus_selinux_enabled.
	
	* bus/selinux.c (bus_selinux_enabled): Implement it.
	
	* bus/config-parser.c (struct include): Add
	if_selinux_enabled member.
	(start_busconfig_child): Parse if_selinux_enabled
	attribute for include.
	(bus_config_parser_content): Handle it.

	* bus/session.conf.in, bus/system.conf.in: Add
	inclusion of context mapping to default config files;
	conditional on SELinux being enabled.
	
	* doc/busconfig.dtd: Add to if_selinux_enabled to default DTD.
	
	* test/data/invalid-config-files/badselinux-1.conf, 
	test/data/invalid-config-files/badselinux-2.conf:
	Test files for bad syntax.
	
2004-10-17  Colin Walters  <walters@verbum.org>

	* dbus/dbus-memory.c (_dbus_initialize_malloc_debug, check_guards)
	(dbus_malloc, dbus_malloc0, dbus_realloc): Fix up printf
	format specifier mismatches.

2004-10-07  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-sysdeps.c (_dbus_file_get_contents): fix an incorrect
	format string.

	* glib/dbus-dbus-gmain.c (dbus_g_bus_get): do not mangle NULL
	pointer (bug #1540, Leonardo Boiko).

2004-09-28  Jon Trowbridge  <trow@ximian.com>

	* mono/BusDriver.cs: Changed BusDriver struct to remove
	the ServiceCreated and ServiceDeleted events and replace them
	with the new ServiceOwnerChanged event.

	* mono/example/BusListener.cs: Added a new example program,
	which listens for and reports any ServiceOwnerChanged events
	on the bus driver.

	* mono/example/Makefile.am (DESTDIR): Build changes for the
	new BusListener.cs example.

2004-09-27  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* bus/signals.c (bus_match_rule_parse): validate the components of
	match rules (bug #1439).

	* dbus/dbus-bus.c (dbus_bus_add_match): add a missing OOM test.

2004-09-24  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* doc/dbus-specification.xml: document ServiceOwnerChanged
	signal.
	
	* bus/driver.c, bus/driver.h, bus/services.c: Use
	ServiceOwnerChanged signal instead of ServiceCreated and
	ServiceDeleted.
	
	* bus/dispatch.c: update testcase for the new signal.

2004-09-20  Jon Trowbridge  <trow@ximian.com>

	Patch from Nat Friedman <nat@novell.com>

	* mono/Makefile.am: A number of small build fixes to allow "make
	distcheck" to succeed.

	* mono/example/Makefile.am: "make distcheck" fixes.

	* mono/AssemblyInfo.cs.in: When signing the assembly, look for the
	key in @srcdir@.

	* test/Makefile.am: "make distcheck" fixes.

2004-09-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-sysdeps.c (_dbus_user_at_console): fix memleak in OOM.

	* doc/busconfig.dtd: update the DTD for the at_console attribute.

	* bus/driver.c (bus_driver_handle_hello): correctly handle Hello
	messages after the first one (bug #1389).
	
	* bus/dispatch.c (check_double_hello_message): add a test case for
	the double hello message bug.
	(check_existent_service_activation): fix check of spawning error.
	
2004-09-16  David Zeuthen  <david@fubar.dk>

	* python/dbus_bindings.pyx.in: Add support for int64 and uint64

2004-09-12  David Zeuthen  <david@fubar.dk>

	Patch from Kay Sievers <kay.sievers@vrfy.org>

	* bus/bus.c (bus_context_new):
	* bus/bus.h:
	* bus/main.c (usage)
	(main):
	Add commandline option --nofork to override configuration file
	setting.

2004-09-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-*.h: remove the ; after DBUS_(BEGIN|END)_DECLS. Some C
	compilers don't like it (bug #974).

2004-09-04  Harald Fernengel  <harry@kdevelop.org>

	* qt/connection.*: Applied patch by Jérôme Lodewyck
	<lodewyck@clipper.ens.fr> to integrate an existing
	connection into the Qt eventloop

2004-08-30  Jon Trowbridge  <trow@ximian.com>

	* mono/BusDriver.cs: Added.  This is a class for interacting with
	the org.freedesktop.DBus service.

	* mono/Message.cs: Added a mechanism to expose the message that is
	currently being dispatched via the static Message.Current
	property.  Added Message.Sender and Message.Destination
	properties.

	* mono/Handler.cs: Expose the dispatched message via
	Message.Current when handling method calls.

	* mono/Service.cs: Expose the dispatched message via
	Message.Current when handling signal emissions.
	
	* mono/Connection.cs: Bind dbus_bus_get_base_service via the
	Connection.BaseService property.

2004-08-28  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-userdb.c (_dbus_is_console_user): remove unused variable

        More fixes from Steve Grubb
	
	* dbus/dbus-sysdeps.c (_dbus_connect_tcp_socket): fix fd leak
	(_dbus_listen_tcp_socket): fix fd leak

	* dbus/dbus-spawn.c (read_pid, read_ints): move the "again:" for
	EINTR to a bit lower in the code

2004-08-26  Jon Trowbridge  <trow@ximian.com>

	* bus/driver.c (bus_driver_handle_service_exists): Respond with
	TRUE if we are inquiring about the existence of the built-in
	org.freedesktop.DBus service.

2004-08-25  John Palmieri  <johnp@redhat.com>
	* bus/config-parser.c:
	(struct PolicyType): Add POLICY_CONSOLE
	(struct Element.d.policy): s/gid_or_uid/gid_uid_or_at_console
	(start_busconfig_child): Sets up console element when
	<policy at_console=""> is encountered in a policy file
	(append_rule_from_element): Convert console elements to console
	rules.

	* bus/policy.c: 
	(bus_policy_create_client_policy): Add console rules to the client
	policy based on if the client is at the console
	(bus_policy_append_console_rule): New function for adding a
	console rule to a policy
	(bus_policy_merge): Handle console rule merging

	* dbus/dbus-sysdeps.h: Added the DBUS_CONSOLE_DIR constant
	where we check for console user files
	
	* dbus/dbus-sysdeps.c:
	(_dbus_file_exists): New function which checks if the given
	file exists
	(_dbus_user_at_console): New function which does the system
	specific process of checking if the user is at the console

	* dbus/dbus-userdb.c:
	(_dbus_is_console_user): New function converts a UID to user name
	and then calls the system specific _dbus_user_at_console to 
	see if the user is at the console and therefor a console user

2004-08-25  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* bus/config-parser.c (set_limit):
	* bus/dbus-daemon-1.1.in:
	* test/data/valid-config-files/many-rules.conf: set the
	max_match_rules_per_connection limt from the config file. 

	* doc/busconfig.dtd: update the DTD.

	* bus/driver.c: remove some unused variables.

2004-08-24  Mikael Hallendal  <micke@imendio.com>

	* dbus/dbus-glib-lowlevel.h: Removed dbus_bus_get_with_g_main since 
	it's been replaced by dbus_g_bus_get

2004-08-23  Colin Walters  <walters@redhat.com>

	Updated SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>

	* bus/selinux.h: Prototype bus_selinux_get_policy_root.

	* bus/selinux.c: Create a thread for policy reload notification.
	(bus_selinux_get_policy_root): Implement.

	* bus/config-parser.c (start_busconfig_child)
	(bus_config_parser_content): Support SELinux-root relative
	inclusion.

	* configure.in <HAVE_SELINUX>: Add -lpthread.
	
	* bus/test-main.c (test_pre_hook, test_post_hook): New.
	(test_post_hook): Move memory checking into here.
	(test_pre_hook, test_post_hook): Move SELinux checks in
	here, but conditional on a DBUS_TEST_SELINUX environment
	variable.  Unfortunately we can't run the SELinux checks
	as a normal user, since they won't have any permissions
	for /selinux.  So this will have to be tested manually
	for now, until we have virtualization for most of
	libselinux.
	
2004-08-23  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_change_identity): add setgroups() to
	drop supplementary groups, suggested by Steve Grubb

2004-08-20  Colin Walters  <walters@redhat.com>

	* bus/config-parser.c (start_busconfig_child): Remove some unused
	variables.
	
	* bus/selinux.c (bus_selinux_id_table_insert): Avoid compiler
	warning.

2004-08-17  Joe Shaw  <joeshaw@novell.com>

	* configure.in: If --enable-mono is passed in, if we can't find
	mono error out.

	* mono/Makefile.am: Use /gacutil to install assemblies into the
	GAC and not /root.

2004-08-12  Havoc Pennington  <hp@redhat.com>

	* NEWS: update for 0.22

	* configure.in: release 0.22

2004-08-11  Colin Walters  <walters@redhat.com>

	* tools/dbus-send.c (main, usage): Add --reply-timeout
	argument.

2004-08-10  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* bus/bus.c (process_config_first_time_only): get rid of an unused
	DBusError that was causing a memoy leak (bug #989).

	* dbus/dbus-keyring.c, dbus/dbus-message.c:
	fix compilation on Solaris/Forte C (bug #974)

	* bus/main.c (main): plug two minuscule memleaks.

2004-08-10  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-tutorial.xml: add some more info on GLib bindings

2004-08-09  Havoc Pennington  <hp@redhat.com>

	* COPYING: switch to Academic Free License version 2.1 instead of
	2.0, to resolve complaints about patent termination clause.

2004-07-31  John (J5) Palmieri  <johnp@redhat.com>

	* README: added documentation for the --enable-python 
	configure switch.

2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* bus/config-parser.c (bus_config_parser_new): fix an invalid
	_unref in the SELinux support.

	* doc/busconfig.dtd: update DTD for SELinux support.

	* bus/config-loader-libxml.c: fix error handler and parser
	initialisation/cleanup. OOM test now works with libxml2 HEAD.

	* configure.in: remove the warning about libxml2.

	* dbus/dbus-bus.c: silence doxygen warning.

2004-07-31  Colin Walters  <walters@redhat.com>

	* configure.in: Move #error in SELinux check to its own line.

2004-07-31  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-internals.h (_DBUS_SET_OOM):
	* bus/utils.h (BUS_SET_OOM): use dbus_error_set_const instead of
	dbus_error_set.

	* bus/dispatch.c (check_send_exit_to_service): fix the test case,
	broken by the change in the _SET_OOM macros.

2004-07-31  Colin Walters  <walters@redhat.com>

	* bus/selinux.c <HAVE_SELINUX>: Include utils.h to get
	BUS_SET_OOM.

2004-07-31  Colin Walters  <walters@redhat.com>

	* configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER
	to correctly detect DBUS__ACQUIRE_SVC.  Also add an
	AC_MSG_CHECKING.

2004-07-24  Havoc Pennington  <hp@redhat.com>

	SELinux support from Matthew Rickard <mjricka@epoch.ncsc.mil>

	* bus/selinux.c, bus/selinux.h: new file encapsulating selinux
	functionality

	* configure.in: add --enable-selinux
	
	* bus/policy.c (bus_policy_merge): add FIXME to a comment

	* bus/main.c (main): initialize and shut down selinux

	* bus/connection.c: store SELinux ID on each connection, to avoid 
	repeated getting of the string context and converting it into 
	an ID

	* bus/bus.c (bus_context_get_policy): new accessor, though it
	isn't used
	(bus_context_check_security_policy): check whether the security
	context of sender connection can send to the security context of
	recipient connection

	* bus/config-parser.c: add parsing for <selinux> and <associate>
	
	* dbus/dbus-transport.c (_dbus_transport_get_unix_fd): to
	implement dbus_connection_get_unix_fd()

	* dbus/dbus-connection.c (dbus_connection_get_unix_fd): new
	function, used by the selinux stuff
	
2004-07-29  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* bus/config-loader-libxml.c: complete the implementation of
	libxml backend for config file loader. Doesn't work with full OOM
	test yet. 
	
	* configure.in: change error when selecting libxml into a warning.
	
	* test/data/invalid-config-files: add two non-well-formed XML
	files. 
	
	* glib/Makefile.am: libdbus_gtool always uses expat, not libxml.
	
	* dbus/dbus-transport-unix.c (unix_handle_watch): do not
	disconnect in case of DBUS_WATCH_HANGUP, several do_reading() may
	be necessary to read all the buffer. (bug #894)

	* bus/activation.c (bus_activation_activate_service): fix a
	potential assertion failure (bug #896). Small optimization in the
	case of auto-activation messages.

	* dbus/dbus-message.c (verify_test_message, _dbus_message_test):
	add test case for byte-through-vararg bug (#901). patch by Kimmo
	Hämäläinen. 

2004-07-28  Anders Carlsson  <andersca@gnome.org>

	* python/dbus.py:
	* python/dbus_bindings.pyx.in:
	Add dbus.init_gthreads (), allow emit_signal to pass
	arguments to the signal.
	
2004-07-24  Havoc Pennington  <hp@redhat.com>

	* AUTHORS: add some people, not really comprehensively, let me
	know if I missed you

2004-07-24  Havoc Pennington  <hp@redhat.com>

	* Makefile.am (DIST_SUBDIRS): add DIST_SUBDIRS, problem solved by
	Owen

	* test/Makefile.am (DIST_SUBDIRS): here also

2004-07-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-sysdeps.c (fill_user_info): fix inexistent label name,
	breaking build on Solaris, reported by Farhad Saberi on the ML.

	* dbus/dbus-message.c (dbus_message_append_args_valist): fix the
	va_arg invocation to account for integer promotion in the case of
	DBUS_TYPE_BYTE (unsigned char is promoted to int). (bug #901)

	* bus/services.c (bus_service_remove_owner): fix bug #902, use
	_dbus_list_get_first_link, not _dbus_list_get_first.

	* dbus/dbus-bus.c (dbus_bus_service_exists): plug a memory leak.

	* dbus/dbus-object-tree.c (free_subtree_recurse): always null
	handler functions so that the asserts in _dbus_object_subtree_unref
	do not fail.

	* dbus/dbus-transport-unix.c (do_reading):
	_dbus_transport_queue_messages return value is of type
	dbus_bool_t, not DBusDispatchStatus.
	
2004-07-19  David Zeuthen  <david@fubar.dk>

	* dbus/dbus-protocol.h: Add DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN

	* bus/dispatch.c:
	(check_get_connection_unix_user): Debug says GetProperty; but the
	method is called GetConnectionUnixUser
	(check_get_connection_unix_process_id): New function
	(bus_dispatch_test): Actually call check_get_connection_unix_user();
	also call check_get_connection_unix_process_id()
	
	* bus/driver.c:
	(bus_driver_handle_get_connection_unix_process_id): New function,
	handles GetConnectionUnixProcessID on the org.freedesktop.DBus
	interface
	
	* dbus/dbus-auth.c:
	(handle_server_data_external_mech): Set pid from the credentials
	obtained from the socket
	
	* dbus/dbus-connection.c:
	(dbus_connection_get_unix_process_id): New function
	
	* dbus/dbus-connection.h: 
	Add prototype for dbus_connection_get_unix_process_id
	
	* dbus/dbus-transport.c:
	(_dbus_transport_get_unix_process_id): New function
	
	* dbus/dbus-transport.h:
	Add prototype for _dbus_transport_get_unix_process_id
	
2004-07-19  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-message.c: Message counter fix, patch by Christian
	Hammond <chipx86@gnupdate.org>

2004-07-18  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:
	* python/dbus_bindings.pyx.in:
	* python/tests/test-client.py:

	Add dbus.ByteArray and dbus_bindings.ByteArray
	types so that byte streams can be passed back.

	Give jdahlin the heaps of credit that are so
	rightfully his.
	
2004-07-12  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:

	Add message argument to the default object_method_handler
	function.
	
	* python/dbus_bindings.pyx.in:

	Automatically return NIL when passed an empty list
	(we can't pass back a list since lists are typed
	and we don't have any idea what type the the client
	intended the list to be... :-( )
	
2004-07-10  Seth Nickell  <seth@gnome.org>

	* python/examples/Makefile.am:

	Fix distcheck breakage caused by new examples.

2004-07-10  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:

	Add "message" argument to service-side dbus.Object
	methods. This will break existing services written
	using the python bindings, but will allow extraction
	of all the message information (e.g. who its from).

	Add improved "object oriented" signal handling/emission.
	
	* python/examples/example-service.py:

	Nix this example.
	
	* python/examples/example-signal-emitter.py:
	* python/examples/example-signal-recipient.py:

	Two new examples that show how to emit and receive
	signals using the new APIs.
	
	* python/examples/example-signals.py:
	* python/examples/gconf-proxy-service.py:
	* python/examples/gconf-proxy-service2.py:

	Add "message" argument to service methods.

2004-06-28  Kay Sievers <kay.sievers@vrfy.org>

	* bus/driver.c (bus_driver_handle_get_connection_unix_user)
	* dbus/bus.c (dbus_bus_get_unix_user)
	* doc/dbus-specification.xml: implement GetConnectionUnixUser
	method of org.freedesktop.DBus interface.

	* bus/dispatch.c: test case

2004-06-23  John (J5) Palmieri  <johnp@redhat.com>

	* python/Makefile.am: switched include directory from glib/ to dbus/
	since dbus-glib.h moved
 
2004-06-22  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* configure.in: prevent building the gcj stuff and libxml loader
	since they are broken.

2004-06-20  Havoc Pennington  <hp@redhat.com>

        * dbus/dbus-glib-error-enum.h: autogenerate the GError enum 
	codes from the dbus error names
	
        * glib/dbus-glib.h: move to subdir dbus/ since it's included 
	as dbus/dbus-glib.h and that breakage is now visible due to 
	including dbus/dbus-glib.h in dbus-glib-lowlevel.h
	
	* glib/dbus-glib.h: s/gproxy/g_proxy/

	* dbus/dbus-shared.h: new header to hold stuff shared with
	binding APIs
	
	* dbus/dbus-protocol.h (DBUS_ERROR_*): move errors here rather
	than dbus-errors.h

	* glib/dbus-glib.h (dbus_set_g_error): move to
	dbus-glib-lowlevel.h

	* glib/dbus-glib.h: remove dbus/dbus.h from here; change a bunch
	of stuff to enable this

	* dbus/dbus-glib-lowlevel.h: put dbus/dbus.h here

	* a bunch of other changes with the same basic "separate glib 
	bindings from dbus.h" theme
	
2004-06-10  Owen Fraser-Green  <owen@discobabe.net>

	* dbus-sharp.pc.in: Removed glib-sharp inclusion in Libs.

	* python/examples/Makefile.am: Fixed typo in EXTRA_DIST.

2004-06-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* bus/driver.c, dbus/dbus-bus.c: use BOOLEAN instead of UINT32 for
	the reply value of the ServiceExists message.

2004-06-07  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus_bindings.pyx.in: No longer need to parse path
	elements and pass them as arrays of strings.  The C API now
	accepts plain path strings.
	(_build_parsed_path): removed 

2004-06-07  Havoc Pennington  <hp@redhat.com>

	* doc/TODO: remove auto-activation item since it's done; sort
	items by importance/milestone

2004-06-07  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message-builder.c (_dbus_message_data_load): append
	random signature when using REQUIRED_FIELDS (this hack won't work
	in the long term)

	* dbus/dbus-message.c: change the signature to be a header field,
	instead of message->signature special-case string. Incremental
	step forward. Then we can fix up code to send the signature in the
	message, then fix up code to validate said signature, then fix up
	code to not put the typecodes inline, etc.
	(load_one_message): don't make up the signature after the fact
	(decode_header_data): require signature field for the known
	message types

	* dbus/dbus-marshal.c (_dbus_marshal_string_len): new

	* dbus/dbus-protocol.h: add DBUS_HEADER_FIELD_SIGNATURE

2004-06-07  Owen Fraser-Green  <owen@discobabe.net>

	* mono/DBusType/ObjectPath.cs: Renamed PathName argument to Path

	* mono/Handler.cs: Updated to follow new path argument for
	(un-)registering objects.

	* mono/example/Makefile.am:
	* mono/Makefile.am:
	* configure.in: Bumped required version for mono and use new -pkg
	syntax for deps

2004-06-05  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-connection.h, dbus/dbus-connection.c: have object path
	registration functions take the path argument as char* instead of
	char**.

	* dbus/dbus-marshal.h, dbus/dbus-marshal.c (_dbus_decompose_path):
	split off the path decompostion part of
	_dbus_demarshal_object_path. Some misc. fixes to silence compiler
	warnings. 

	* glib/dbus-gobject.c, test/test-service.c: update accordingly.
	
2004-06-02  Kristian Høgsberg  <krh@redhat.com>
 
	* dbus/dbus-auth.c: Rewrite auth protocol handling to use a state
	machine approach.  A state is implemented as a function that
	handles incoming events as specified for that state.
	
	* doc/dbus-specification.xml: Update auth protocol state machine
	specification to match implementation.  Remove some leftover
	base64 examples.

2004-06-02  Kristian Høgsberg  <krh@redhat.com>

	* glib/dbus-gproxy.c, glib/dbus-gmain.c, dbus/dbus-string.c,
	dbus/dbus-object-tree.c, dbus/dbus-message.c: add comments to
	quiet doxygen.

	* Doxyfile.in: remove deprecated options.

	* dbus/dbus-message-handler.c, dbus/dbus-message-handler.h,
	glib/test-thread.h, glib/test-thread-client.c,
	glib/test-thread-server.c, glib/test-profile.c,
	glib/test-dbus-glib.c: remove these unused files.

2004-06-01  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-object-tree.c
	(_dbus_object_tree_dispatch_and_unlock): fix dispatch for
	non-fallback handlers (bug #684).
	(_dbus_object_subtree_new): initialize invoke_as_fallback field.
	(find_subtree_recurse): report wether the returned subtree is an
	exact match or a "fallback" match higher up in the tree.
	(object_tree_test_iteration): update test case.

2004-06-01  Seth Nickell  <seth@gnome.org>

	* python/dbus_bindings.pyx.in:
	* python/tests/test-client.py:

	Round off basic type support. Add dicts (yay!), and 
	remaining array types.

	Make MessageIter more general so it works for dicts too.

	Mark all loop variables as C integers.
	
2004-05-31  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gidl.c (method_info_add_arg): keep args sorted with
	"in" before "out"

	* glib/dbus-gobject.c (dbus_type_to_string): move to dbus-gutils.c

	* glib/dbus-glib-tool.c (main): set up to have a --self-test
	option that runs the tests, and start filling in some code
	including for starters just dumping the interfaces to stdout

	* glib/Makefile.am (INCLUDES): define DBUS_LOCALEDIR

	* test/data/valid-introspection-files/lots-of-types.xml: test of
	an example introspection file

	* glib/dbus-gparser.c (parser_check_doctype): doctype should be
	"node" (I think...)

2004-05-31  Seth Nickell  <seth@gnome.org>

	* python/dbus_bindings.pyx.in:
	* python/tests/test-client.py:

	Test Suite: 1
	Python Bindings: 0

	Fix string array memory trashing bug... oops...

2004-05-30  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:

	Add a nicer-but-less-flexible alternate API for handling 
	calls to virtual objects in dbus.ObjectTree.

	Screw up the argument order to the dbus.Object constructor
	for consistency with dbus.ObjectTree (and to make dbus_methods
	optional for future extension)
	
	* python/examples/Makefile.am:
	* python/examples/gconf-proxy-service.py:
	* python/examples/gconf-proxy-service2.py:

	Alternate implementation of gconf-proxy-service using the
	nicer dbus.ObjectTree API.
	
	* python/examples/example-service.py:
	* python/tests/test-server.py

	Reverse the argument order to deal with dbus.Object constructor
	changes.
	
2004-05-30  Seth Nickell  <seth@gnome.org>

	* python/examples/example-client.py:
	* python/examples/example-service.py:

	Take it back. Lists seem to work but they're broken
	in the test suite. Make the base examples use
	lists (works fine).

2004-05-30  Seth Nickell  <seth@gnome.org>

	* python/dbus_bindings.pyx.in:
	* python/tests/test-client.py:

	Add some more tests and fix errors that crop up.
	Unfortunately, currently it seems like marshalling
	and unmarshalling of lists is completely broken :-(

2004-05-30  Seth Nickell  <seth@gnome.org>

	* python/dbus_bindings.pyx.in:

	Add support for ObjectPath type.

	* python/dbus.py:

	Refactor message handling code to a common function.
	
	* python/tests/test-client.py:
	* python/tests/test-server.py:

	Add tests that check to make sure values of all types
	can be echoed from a service w/o mangling.
	
2004-05-29  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:

	Add ObjectTree class which allows implementation
	of trees of "virtual" objects. Basically the python
	wrapper for "register_fallback".
	
	* python/examples/Makefile.am
	* python/examples/gconf-proxy-client.py:
	* python/examples/gconf-proxy-service.py:

	Implement a simple GConf proxy service that supports
	get/set on string and int GConf keys using the ObjectTree.
	
2004-05-29  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:
	* python/examples/example-client.py:
	* python/examples/example-service.py:
	* python/examples/list-system-services.py:

	Add SessionBus, SystemBus and ActivationBus classes
	so you don't need to know the special little BUS_TYPE
	flag.
	
2004-05-29  Havoc Pennington  <hp@redhat.com>

	* bus/config-parser.c (process_test_valid_subdir): temporarily
	stop testing config parser OOM handling, since expat has issues
	http://freedesktop.org/pipermail/dbus/2004-May/001153.html

	* bus/dbus-daemon-1.1.in: change requested_reply to
	send_requested_reply/receive_requested_reply so we can send the
	replies, not just receive them.

	* bus/config-parser.c: parse the new
	send_requested_reply/receive_requested_reply

	* bus/policy.c (bus_client_policy_check_can_send): add
	requested_reply argument and use it

	* bus/bus.c (bus_context_check_security_policy): pass through
	requested_reply status to message send check

	* bus/system.conf.in: adapt to requested_reply change
	
2004-05-28  Havoc Pennington  <hp@redhat.com>

	* test/glib/test-service-glib.c (main): remove unused variable

	* glib/dbus-gidl.c (base_info_ref): fix a silly compiler warning

	* dbus/dbus-auth.h (enum): remove AUTHENTICATED_WITH_UNUSED_BYTES
	from the enum, no longer in use.

	* dbus/dbus-sysdeps.h: include config.h so DBUS_VA_COPY actually
	works right.

	* dbus/dbus-message.c: add various _dbus_return_val_if_fail for
	whether error_name passed in is a valid error name.

2004-05-28  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-message.c (dbus_message_get_args): Added support for
	OBJECT_PATH and OBJECT_PATH_ARRAY

2004-05-28  Seth Nickell  <seth@gnome.org>

	* python/examples/Makefile.am:

	Forget to add Makefile.am. Do not pass go.

2004-05-28  Michael Meeks  <michael@ximian.com>

	* glib/dbus-gvalue.c (dbus_gvalue_marshal, dbus_gvalue_demarshal): 
	fix no int64 case.

	* dbus/dbus-string.c (_dbus_string_parse_basic_type): impl.

	* dbus/dbus-message.c (_dbus_message_iter_get_basic_type),
	(_dbus_message_iter_get_basic_type_array): impl.
	drastically simplify ~all relevant _get methods to use these.
	(_dbus_message_iter_append_basic_array),
	(dbus_message_iter_append_basic): impl
	drastically simplify ~all relevant _append methods to use these.

	* dbus/dbus-message-builder.c (parse_basic_type) 
	(parse_basic_array, lookup_basic_type): impl.
	(_dbus_message_data_load): prune scads of duplicate /
	cut & paste coding.

	* dbus/dbus-marshal.c (_dbus_demarshal_basic_type_array) 
	(_dbus_demarshal_basic_type): implement,
	(demarshal_and_validate_len/arg): beef up debug.
	(_dbus_marshal_basic_type, _dbus_marshal_basic_type_array): impl.

2004-05-27  Seth Nickell  <seth@gnome.org>

	* configure.in:
	* python/Makefile.am:

	Include the example python apps in the tarball.
	
	* python/examples/list-system-services.py

	Add a python new example that fetches the list of services
	from the system bus.
	
2004-05-27  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:
	* python/dbus_bindings.pyx.in:

	Fix failure to notify that a signal was not handled,
	resulted in hung functions.
	
2004-05-25  Colin Walters  <walters@redhat.com>

	* tools/dbus-monitor.c (main): Monitor all types of messages.

2004-05-23  Owen Fraser-Green  <owen@discobabe.net>

	* mono/Handler.cs, mono/Service.cs: Added UnregisterObject method
	which unregisters the object path and disposes the handler.

2004-05-23  Kristian Høgsberg  <krh@redhat.com>
 
        Patch from Timo Teräs <ext-timo.teras@nokia.com> (#614):
         
	* dbus/dbus-message.c (dbus_message_iter_get_args_valist): Swap
        operands to && so we call dbus_message_iter_next () for the last
        argument also.

2004-05-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-object-tree.c
	(_dbus_object_tree_list_registered_unlock, lookup_subtree): return
	children even if the requested path isn't registered.
	(object_tree_test_iteration): test object_tree_list_registered.

	* configure.in: undefine HAVE_ABSTRACT_SOCKETS instead of defining
	it to 0.
	
2004-05-20  Kristian Høgsberg  <krh@redhat.com>

	* doc/TODO: Remove resolved items.

	* bus/expirelist.h (struct BusExpireList): remove unused n_items
	field.
	
	* bus/connection.c (bus_connections_expect_reply): Enforce the
	per-connection limit on pending replies.
	
	Patch from Jon Trowbridge <trow@ximian.com>:
 
 	* bus/main.c (setup_reload_pipe): Added.  Creates a pipe and sets
 	up a watch that triggers a config reload when one end of the pipe
 	becomes readable.
 	(signal_handler): Instead of doing the config reload in our SIGHUP
 	handler, just write to the reload pipe and let the associated
 	watch handle the reload when control returns to the main loop.
 
 	* bus/driver.c (bus_driver_handle_reload_config): Added.
 	Implements a ReloadConfig method for requesting a configuration
 	file reload via the bus driver.
 
2004-05-19  Owen Fraser-Green  <owen@discobabe.net>

	* HACKING: Updated release instructions concerning the wiki page.

2004-05-18  Kristian Høgsberg  <krh@redhat.com>

 	* dbus/dbus-auth.c (client_try_next_mechanism): Remove logic to
	filter against auth->allowed_mechs; we only add allowed mechs in
	record_mechanisms().
 
 	* dbus/dbus-auth-script.c (_dbus_auth_script_run): Add an
	ALLOWED_MECHS to auth-script format so we can set the list of
	allowed mechanisms.
 
 	* data/auth/client-out-of-mechanisms.auth-script: New test to
	check client disconnects when it is out of mechanisms to try.
 
 	* dbus/dbus-auth.c (process_command): Remove check for lines
	longer that 1 MB; we only buffer up maximum 16 kB.
 
 	* dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
	dbus/dbus-auth-script.c, dbus/dbus-auth.c, dbus/dbus-auth.h:
	Remove auth state AUTHENTICATED_WITH_UNUSED_BYTES, instead always
	assume there might be unused bytes.
 
 	* dbus/dbus-auth.c (_dbus_auth_do_work): Remove check for
	client-out-of-mechs, it is handled in process_reject(). Move check
	for max failures to send_rejected(), as it's a server-only thing.

	* dbus/dbus-auth.c: Factor out protocol reply code into functions
	send_auth(), send_data(), send_rejected(), send_error(),
	send_ok(), send_begin() and send_cancel().

2004-05-17  Kristian Høgsberg  <krh@redhat.com>

	Remove base64 encoding, replace with hex encoding. Original patch
	from trow@ximian.com, added error handling.

	* dbus/dbus-string.c (_dbus_string_base64_encode)
	(_dbus_string_base64_decode): Remove.
	(_dbus_string_hex_decode): Add end_return argument so we can
	distinguish between OOM and invalid hex encoding.
	(_dbus_string_test): Remove base64 tests and add test case for
	invalid hex.

	* dbus/dbus-keyring.c, dbus/dbus-auth-script.c, dbus/dbus-auth.c:
	Replace base64 with hex.

	* test/data/auth/invalid-hex-encoding.auth-script: New test case
	for invalid hex encoded data in auth protocol.

2004-05-17  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-connection.c (check_for_reply_unlocked): plug a memory
	leak.

2004-05-15  Owen Fraser-Green  <owen@discobabe.net>

	* mono/dbus-sharp.dll.config.in: Added for GAC
	* mono/dbus-sharp.snk: Added for GAC
	* mono/Assembly.cs.in: Added for GAC
	* mono/Makefile.am: Changes for GAC installation	
	* configure.in: Added refs for dbus-sharp.dll.config.in and
	Assembly.cs.in. More fixes for mono testing
	* mono/example/Makefile.am: Changed var to CSC
	* Makefile.am: Changed flag name to DBUS_USE_CSC

2004-05-15  Owen Fraser-Green  <owen@discobabe.net>

	* mono/Makefile.am: Added SUBDIRS for docs. Changed SUBDIRS order
	* mono/doc/*: Added documentation framework
	* configure.in: Added monodoc check
	* README: Added description of mono configure flags

2004-05-11  John (J5) Palmieri  <johnp@redhat.com>:

	* doc/dbus-specification.xml: Added a "Required" column to the 
	header fields table and changed the "zero or more" verbage in
	the above paragraph to read "The header must contain the required 
	named header fields and zero or more of the optional named header 
	fields".
	* test/data/invalid-messages/*.message: Added the required PATH 
	named header field to the tests so that they don't fail on 
	'Missing path field'

2004-05-07  John (J5) Palmieri  <johnp@redhat.com>

	* python/dbus-bindings.pyx.in: Stopped the bindings from trashing
	the stack by implicitly defining variable and parameter types and
	removing the hack of defining C pointers as python objects and later
	casting them.

2004-05-02  Owen Fraser-Green  <owen@discobabe.net>

	* mono/Makefile.am: Removed test-dbus-sharp.exe from all target

2004-05-01  Owen Fraser-Green  <owen@discobabe.net>

	* mono/DBusType/Dict.cs: Handle empty dicts
	* mono/DBusType/Array.cs: Handle empty arrays
	* mono/Arguments.cs: Handle empty arguments

2004-04-30  Owen Fraser-Green  <owen@discobabe.net>

	* dbus-sharp.pc.in: Modified to include include Libs and Requires
	field

2004-04-25  Kristian Høgsberg  <krh@redhat.com>

	* test/data/valid-messages/standard-*.message: Update message
	test scripts to new header field names.

2004-04-22  John (J5) Palmieri  <johnp@redhat.com>

	* test/break-loader.c (randomly_do_n_things): tracked down buffer
	overflow to times_we_did_each_thing array which would chop off the
	first character of the failure_dir string. Increased the size of
	the array to 7 to reflect the number of random mutation functions
	we have.

2004-04-21  Kristian Høgsberg  <krh@redhat.com>

	* dbus/dbus-server-unix.c (unix_finalize): Don't unref
	unix_server->watch here, it is unreffed in disconnect.
	(_dbus_server_new_for_tcp_socket): convert NULL host to
	"localhost" here so we don't append NULL to address.
	
	* dbus/dbus-server.c (_dbus_server_test): Add test case for
	various addresses, including tcp with no explicit host.

2004-04-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-message.c (decode_header_data, decode_string_field):
	fix incorrect setting of .name_offset in the HeaderField (it was
	off by two bytes, positioned right after the name and typecode)

	* bus/bus.c (bus_context_new, bus_context_unref): test before
	calling dbus_server_free_data_slot and _dbus_user_database_unref
	in case of an error.

	* tools/Makefile.am: add $(DBUS_GLIB_TOOL_LIBS), xml libs needed
	by libdbus-gtool.

2004-04-19  Kristian Høgsberg  <krh@redhat.com>

	* dbus/dbus-transport-unix.c (unix_do_iteration): Rewrite to use
	_dbus_poll() instead of select().

2004-04-15  Jon Trowbridge  <trow@ximian.com>

	* bus/main.c (signal_handler): Reload the configuration files
	on SIGHUP.
	(main): Set up our SIGHUP handler.

	* bus/bus.c (struct BusContext): Store the config file, user and
	fork flag in the BusContext.
	(process_config_first_time_only): Added.  Contains the code
	(previously in bus_context_new) for setting up the BusContext from
	the BusConfigParser that should only be run the first time the
	config files are read.
	(process_config_every_time): Added.  Contains the code (previously
	in bus_context_new) for setting up the BusContext from the
	BusConfigParser that should be run every time the config files are
	read.
	(load_config): Added.  Builds a BusConfigParser from the config
	files and passes the resulting structure off to
	process_config_first_time_only (assuming this is the first time)
	and process_config_every_time.
	(bus_context_new): All of the config-related code has been moved
	to process_config_first_time_only and process_config_every_time.
	Now this function just does the non-config-related initializations
	and calls load_config.
	(bus_context_reload_config): Added.

2004-04-15  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* bus/driver.c (bus_driver_handle_get_service_owner):
	implement a GetServiceOwner method.
	* doc/dbus-specification.xml: document it.
	* dbus/dbus-errors.h: add a 'ServiceHasNoOwner' error.
	
	* glib/dbus-gproxy.c (dbus_gproxy_new_for_service_owner):
	implement, using the bus GetServiceOwner method.

	* test/glib/test-dbus-glib.c:
	use dbus_gproxy_new_for_service_owner so that we can receive the
	signal. 

2004-04-15  John (J5) Palmieri  <johnp@redhat.com>

	* dbus/dbus-internals.c, dbus/dbus-message-builder.c,
	dbus/dbus-message.c, dbus/dbus-protocol.h
	(DBUS_HEADER_FIELD_SERVICE): renamed DBUS_HEADER_FIELD_DESTINATION

	* dbus/dbus-internals.c, dbus/dbus-message-builder.c,
	dbus/dbus-message.c, dbus/dbus-protocol.h
	(DBUS_HEADER_FIELD_SENDER_SERVICE): renamed DBUS_HEADER_FIELD_SENDER

	* dbus/dbus-internals.c (_dbus_header_field_to_string):
	DBUS_HEADER_FIELD_DESTINATION resolves to "destination"
	DBUS_HEADER_FIELD_SENDER resolves to "sender"

	* doc/dbus-specification.xml (Header Fields Table):
	s/SERVICE/DESTINATION
	s/SENDER_SERVICE/SENDER


2004-04-14  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* test/glib/test-dbus-glib.c (timed_exit): fail the test after
	a few seconds.

2004-04-13  Michael Meeks  <michael@ximian.com>

	* glib/dbus-gobject.c (handle_introspect): split out
	(introspect_properties): this.
	(handle_introspect): implement this.

	* test/glib/Makefile.am: use the absolute path so the bus
	daemon's chdir ("/") doesn't kill us dead.

	* configure.in: subst ABSOLUTE_TOP_BUILDDIR

2004-04-12  Jon Trowbridge  <trow@ximian.com>

	* bus/config-parser.c (struct BusConfigParser): Added
	included_files field.
	(seen_include): Added.  Checks whether or not a file has already
	been included by any parent BusConfigParser.
	(bus_config_parser_new): Copy the parent's included_files.
	(include_file): Track which files have been included, and fail on
	circular inclusions.
	(process_test_valid_subdir): Changed printf to report if we are
	testing valid or invalid conf files.
	(all_are_equiv): Changed printf to be a bit clearer about
	what we are actually doing.
	(bus_config_parser_test): Test invalid configuration files.

2004-04-09  Jon Trowbridge  <trow@ximian.com>

	* bus/config-parser.c (bus_config_parser_new): Added a 'parent'
	argument.  If non-null, the newly-constructed BusConfigParser will
	be initialized with the parent's BusLimits instead of the default
	values.
	(include_file): When including a config file, pass in
	the current parser as the parent and then copy the BusLimits
	from the included BusConfigParser pack to the current parser.
	(process_test_valid_subdir): Renamed from process_test_subdir.
	(process_test_equiv_subdir): Added.  Walks through a directory,
	descending into each subdirectory and loading the config files
	it finds there.  If any subdirectory contains two config files
	that don't produce identical BusConfigParser structs, fail.
	For now, the BusConfigParser's BusPolicies are not compared.
	(bus_config_parser_test): Call both process_test_valid_subdir and
	process_test_equiv_subdir.

	* bus/config-loader-libxml.c (bus_config_load): Take a parent
	argument and pass it along to the call to bus_config_parser_new.
	Also made a few small changes to allow this code to compile.

	* bus/config-loader-expat.c (bus_config_load): Take a parent
	argument and pass it along to the call to bus_config_parser_new.

	* bus/bus.c (bus_context_new): Load the config file
	with a NULL parent argument.

2004-03-29  Michael Meeks  <michael@ximian.com>

	* glib/dbus-gobject.c (introspect_properties): split
	out, fix mangled 'while' flow control.
	(introspect_signals): implement.
	(handle_introspect): update.

2004-03-29  Michael Meeks  <michael@ximian.com>

	* glib/dbus-gobject.c (set_object_property): split out / 
	re-work, use the property type, and not the message type(!)
	(get_object_property): ditto.

        * glib/dbus-gvalue.c (dbus_gvalue_demarshal),
	(dbus_gvalue_marshal): make this code re-usable, needed
	for signals too, also on both proxy and server side.
	Re-write for more efficiency / readability.

2004-03-29  Michael Meeks  <michael@ximian.com>

	* dbus/dbus-message.c
	(dbus_message_new_error_printf): impl.

	* dbus/dbus-connection.c
	(dbus_connection_unregister_object_path): fix warning.

	* configure.in: fix no-mono-installed situation.

2004-03-27  Havoc Pennington  <hp@redhat.com>

	Patch from Timo Teräs:
	
	* tools/dbus-send.c (main): if --print-reply, assume type is
	method call; support boolean type args
	
	* dbus/dbus-connection.c (dbus_connection_send_with_reply): fix a
	bunch of memleak and logic bugs
	
2004-03-23  Owen Fraser-Green  <owen@discobabe.net>

        * mono/Arguments.cs:
	* mono/Introspector.cs:
	* mono/Handler.cs:
	* mono/InterfaceProxy.cs:
	* mono/Message.cs
	* mono/ProxyBuilder.cs:
	* mono/Service.cs:
	Added InterfaceProxy class to avoid building proxies for every
	object.

	* dbus-message.h:
	* dbus-message.c (dbus_message_append_args_valist)
	(dbus_message_iter_get_object_path)
	(dbus_message_iter_get_object_path_array)
	(dbus_message_iter_append_object_path)
	(dbus_message_iter_append_object_path_array):
	Added object_path iter functions to handle OBJECT_PATH arguments
	
2004-03-23  Owen Fraser-Green  <owen@discobabe.net>

	First checkin of mono bindings.
	* configure.in:
	* Makefile.am:
	Build stuff for the bindings
	* dbus-sharp.pc.in: Added for pkgconfig
	
2004-03-21  Havoc Pennington  <hp@redhat.com>

	* test/test-service.c (main): remove debug spew

2004-03-21  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-marshal.c (_dbus_marshal_validate_arg): accept empty
	arrays

	* dbus/dbus-message.h, bus/dbus-message.c (dbus_message_iter_init)
	(dbus_message_iter_init_array_iterator)
	(dbus_message_iter_init_dict_iterator): return a dbus_bool_t to
	indicate whether the iterator is empty

	* dbus/dbus-pending-call.c, dbus/dbus-server.c: silence compiler
	warnings

2004-03-19  Havoc Pennington  <hp@redhat.com>

	* NEWS: 0.21 updates

	* configure.in: 0.21

	* doc/Makefile.am: add all XMLTO usage to DBUS_XML_DOCS_ENABLED
	
	* python/Makefile.am: change to avoid dist of dbus_bindings.c so
	you don't need pyrex to make dist

	* qt/Makefile.am (libdbus_qt_1_la_SOURCES): add integrator.h to
	sources; run moc
	
2004-03-18  Richard Hult  <richard@imendio.com>

	* dbus/dbus-message.c (dbus_message_get_auto_activation) 
	(dbus_message_set_auto_activation): Add doxygen docs.

2004-03-16  Richard Hult  <richard@imendio.com>

	* bus/activation.c: (bus_activation_service_created),
	(bus_activation_send_pending_auto_activation_messages),
	(bus_activation_activate_service):
	* bus/activation.h:
	* bus/dispatch.c: (bus_dispatch),
	(check_nonexistent_service_auto_activation),
	(check_service_auto_activated),
	(check_segfault_service_auto_activation),
	(check_existent_service_auto_activation), (bus_dispatch_test):
	* bus/driver.c: (bus_driver_handle_activate_service):
	* bus/services.c: (bus_registry_acquire_service):
	* dbus/dbus-message.c: (dbus_message_set_auto_activation),
	(dbus_message_get_auto_activation):
	* dbus/dbus-message.h:
	* dbus/dbus-protocol.h: Implement auto-activation.
	
	* doc/dbus-specification.xml: Add auto-activation to the spec.

2004-03-12  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* dbus/dbus-marshal.c (_dbus_marshal_get_arg_end_pos):
	fix a bug with CUSTOM types.

	* dbus/dbus-message.c (message_iter_test, _dbus_message_test): add
	a unit test for this bug (used to fail).

2004-03-12  Mikael Hallendal  <micke@imendio.com>

	* bus/activation.c:
	(babysitter_watch_callback): notify all pending activations waiting for
	  the same exec that the activation failed.
	(bus_activation_activate_service): shortcut the activation if we 
	  already waiting for the same executable to start up.

2004-03-12  Mikael Hallendal  <micke@imendio.com>

	* bus/activation.c: 
	- Added service file reloading. 
	  Each service files directory is kept in an hash table in 
	  BusActivation and each BusActivationEntry knows what .service-file it
	  was read from. So when you try to activate a service the bus will 
	  check if it's been updated, removed or if new .service-files has 
	  been installed.
	- Test code at the bottom for the service file reloading.
	* bus/test-main.c: (main):
	* bus/test.h:
	- added service reloading test.
	* dbus/dbus-sysdeps.c: 
	* dbus/dbus-sysdeps.h: (_dbus_delete_directory): Added.

2004-03-08  Michael Meeks  <michael@ximian.com>

	* dbus/dbus-connection.c (_dbus_connection_block_for_reply): 
	bail immediately if disconnected, to avoid busy loop.

	* dbus/dbus-message.c (dbus_message_iter_get_args_valist):
	cleanup cut/paste/inefficiency.

2004-03-01  David Zeuthen  <david@fubar.dk>

	* dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
	bug where args were used twice. This bug resulted in a segfault
	on a Debian/PPC system when starting the messagebus daemon. Include
	dbus-sysdeps.h for DBUS_VA_COPY

	* dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib

	* configure.in: Check for va_copy; define DBUS_VA_COPY to the
	appropriate va_copy implementation. From GLib
 	
2004-02-24  Joe Shaw  <joe@ximian.com>

	* bus/services.c (bus_registry_acquire_service): We need to pass
	in the service name to dbus_set_error() to prevent a crash.

2003-12-26  Anders Carlsson  <andersca@gnome.org>

	* AUTHORS: Reveal my True identity.

2003-12-17  Mikael Hallendal  <micke@imendio.com>

	* dbus/dbus-message.c: (dbus_message_append_args_valist): 
	- Added case for DBUS_TYPE_BYTE, patch from Johan Hedberg.

2003-12-13  Mikael Hallendal  <micke@imendio.com>

	* doc/TODO: Added not about better error check of configuration files.

2003-12-02  Richard Hult  <richard@imendio.com>

	* Update AFL version to 2.0 throughout the source files to reflect
	the update that was done a while ago.

2003-12-02  Richard Hult  <richard@imendio.com>

	* dbus/dbus-message.c (dbus_message_iter_append_dict): Set
	wrote_dict_key to FALSE on the iter that the dict is appended to,
	just like when appending other types. Fixes a bug where a dict
	couldn't be put inside a dict.
	(dbus_message_iter_append_dict_key): Fix typo in warning message.
	(message_iter_test, _dbus_message_test): Add test case for dict
	inside dict.

2003-12-01  David Zeuthen  <david@fubar.dk>

	* python/dbus.py: Add the actual message when calling the reciever
	of a signal such that parameters can be inspected. Add the method
	remove_signal_receiver
	
2003-11-26  Mikael Hallendal  <micke@imendio.com>

	* bus/*.[ch]:
	* dbus/*.[ch]:
	* glib/*.[ch]: Made ref functions return the pointer

2003-11-25  Zack Rusin  <zack@kde.org>

	* qt/integrator.h, qt/integrator.cpp: Adding handling of DBusServer,

	* qt/server.h, qt/server.cpp, qt/Makefile.am: Adding DBusServer 
	wrappers,

	* qt/connection.h, qt/connection.cpp: Adjusting to changes in 
	the Integrator and to better fit with the server,

2003-11-24  Zack Rusin  <zack@kde.org>

	* qt/connection.h, qt/connection.cpp: removing initDbus method since
	the integrator handles it now

	* qt/integrator.h, qt/integrator.cpp: reworking handling of timeouts,
	since QTimer wasn't really meant to be used the way DBusTimeout is

2003-11-24  Zack Rusin  <zack@kde.org>

	* qt/integrator.h, qt/integrator.cpp, Makefile.am: Adding 
	Integrator class which integrates D-BUS with the Qt event loop,

	* qt/connection.h, qt/connection.cpp: Move all the code which
	was dealing with D-BUS integration to the Integrator class,
	and start using Integrator,

2003-11-23  Zack Rusin  <zack@kde.org>

	* qt/connection.h, qt/connection.cpp: Adding the DBusConnection 
	wrapper

	* qt/message.h, qt/message.cpp: updating to the current D-BUS api,
	switching namespaces to DBusQt, reworking the class,

	* Makefile.cvs: switching dependencies so that it matches KDE 
	schematics,
	
	* qt/Makefile.am: adding connection.{h,cpp} and message.{h,cpp} to 
	the library

2003-11-19  Havoc Pennington  <hp@redhat.com>

	* NEWS: update

        * configure.in: bump version to 0.20

	* configure.in (have_qt): add yet another place to look for qt
	(someone hand trolltech a .pc file...)

2003-11-01  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.xml: add state machine docs on the auth
	protocol; just a first draft, I'm sure it's wrong.	

2003-10-28  David Zeuthen  <david@fubar.dk>

	* python/dbus_bindings.pyx.in: add get_dict to handle dictionaries
	return types. Fixup TYPE_* to reflect changes in dbus/dbus-protocol.h
	
2003-10-28  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (get_next_field): delete unused function

2003-10-28  Havoc Pennington  <hp@redhat.com>

	* bus/expirelist.c (do_expiration_with_current_time): detect
	failure of the expire_func due to OOM

	* bus/connection.c (bus_pending_reply_expired): return FALSE on OOM

	* bus/dispatch.c (check_send_exit_to_service): fix to handle the
	NoReply error that's now created by the bus when the service exits

2003-10-28  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (_dbus_message_test): enable and fix the
	tests for set_path, set_interface, set_member, etc.

	* dbus/dbus-string.c (_dbus_string_insert_bytes): allow 0 bytes

	* dbus/dbus-message.c (set_string_field): always just delete and
	re-append the field; accept NULL for deletion
	(re_align_fields_recurse): reimplement
	
2003-10-26  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c: fix docs to properly describe the
	disconnected message
	(_dbus_connection_notify_disconnected): remove this function; 
	we can't synchronously add the disconnected message, we have to 
	do it after we've queued any remaining real messages
	(_dbus_connection_get_dispatch_status_unlocked): queue the
	disconnect message only if the transport has finished queueing all
	its real messages and is disconnected.
	(dbus_connection_disconnect): update the dispatch status here

2003-10-22  Havoc Pennington  <hp@redhat.com>

	* bus/bus.c (bus_context_check_security_policy): fix up assertion

	* bus/connection.c (bus_transaction_send_from_driver): set the
	destination to the connection's base service

2003-10-20  Havoc Pennington  <hp@redhat.com>

        hmm, make check is currently not passing.
	
	* doc/dbus-specification.xml: add requirement that custom type
	names follow the same rules as interface names.

	* dbus/dbus-protocol.h: change some of the byte codes, to avoid
	duplication and allow 'c' to be 'custom'; dict is now 'm' for
	'map'

	* doc/dbus-specification.xml: update type codes to match
	dbus-protocol.h, using the ASCII byte values. Rename type NAMED to
	CUSTOM. Add type OBJECT_PATH to the spec.

2003-10-17  Havoc Pennington  <hp@redhat.com>

	* bus/driver.c (create_unique_client_name): use "." as separator
	in base service names instead of '-'

	* dbus/dbus-string.c (_dbus_string_get_byte): allow getting nul
	byte at the end of the string

	* dbus/dbus-internals.h (_DBUS_LIKELY, _DBUS_UNLIKELY): add
	optimization macros since string validation seems to be a slow
	point.
	
	* doc/dbus-specification.xml: restrict valid
	service/interface/member/error names. Add test suite code for the
	name validation.

	* dbus/dbus-string.c: limit service/interface/member/error names 
	to [0-9][A-Z][a-z]_

	* dbus/dbus-connection.c (dbus_connection_dispatch): add missing
	format arg to verbose spew

	* glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): if not out of
	memory, return instead of g_error

	* test/test-service.c (path_message_func): support emitting a
	signal on request

	* dbus/dbus-bus.c (init_connections_unlocked): only fill in
	activation bus type if DBUS_BUS_ACTIVATION was set; default to
	assuming the activation bus was the session bus so that services
	started manually will still register.
	(init_connections_unlocked): fix so that in OOM situation we get
	the same semantics when retrying the function
	
	* test/test-service.c (main): change to use path registration, to
	test those codepaths; register with DBUS_BUS_ACTIVATION rather
	than DBUS_BUS_SESSION

2003-10-16  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gtest-main.c: bracket with #ifdef DBUS_BUILD_TESTS

	* Makefile.am (GCOV_DIRS): remove "test", we don't care about test
	coverage of the tests
	(coverage-report.txt): don't move the .da and .bbg files around

2003-10-16  Havoc Pennington  <hp@redhat.com>

	* bus/bus.c (struct BusContext): remove struct field I didn't mean
	to put there

2003-10-16  Havoc Pennington  <hp@redhat.com>

	* bus/connection.c (bus_pending_reply_expired): either cancel or
	execute, not both
	(bus_connections_check_reply): use unlink, not remove_link, as we
	don't want to free the link; fixes double free mess

	* dbus/dbus-pending-call.c (dbus_pending_call_block): fix in case
	where no reply was received

	* dbus/dbus-connection.c (_dbus_pending_call_complete_and_unlock):
	fix a refcount leak

	* bus/signals.c (match_rule_matches): add special cases for the
	bus driver, so you can match on sender/destination for it.

	* dbus/dbus-sysdeps.c (_dbus_abort): print backtrace if
	DBUS_PRINT_BACKTRACE is set

	* dbus/dbus-internals.c: add pid to assertion failure messages

	* dbus/dbus-connection.c: add message type code to the debug spew

	* glib/dbus-gproxy.c (gproxy_get_match_rule): match rules want
	sender=foo not service=foo

	* dbus/dbus-bus.c (dbus_bus_get): if the activation bus is the
	session bus but DBUS_SESSION_BUS_ADDRESS isn't set, use 
	DBUS_ACTIVATION_ADDRESS instead

	* bus/activation.c: set DBUS_SESSION_BUS_ADDRESS,
	DBUS_SYSTEM_BUS_ADDRESS if appropriate

	* bus/bus.c (bus_context_new): handle OOM copying bus type into
	context struct

	* dbus/dbus-message.c (dbus_message_iter_get_object_path): new function
	(dbus_message_iter_get_object_path_array): new function (half
	finished, disabled for the moment)
	
	* glib/dbus-gproxy.c (dbus_gproxy_end_call): properly handle
	DBUS_MESSAGE_TYPE_ERROR

	* tools/dbus-launch.c (babysit): support DBUS_DEBUG_OUTPUT to
	avoid redirecting stderr to /dev/null
	(babysit): close stdin if not doing the "exit_with_session" thing

	* dbus/dbus-sysdeps.c (_dbus_become_daemon): delete some leftover
	debug code; change DBUS_DEBUG_OUTPUT to only enable stderr, not
	stdout/stdin, so things don't get confused
	
	* bus/system.conf.in: fix to allow replies, I modified .conf
	instead of .conf.in again.

2003-10-14  David Zeuthen  <david@fubar.dk>

	* python/dbus_bindings.pyx.in (MessageIter.get): fixed typo in
	argtype to arg_type when raising unknown arg type exception.
	Changed type list to reflect the changes in dbus-protocol.h so 
	the bindings actually work.

2003-10-14  Havoc Pennington  <hp@redhat.com>

	* test/decode-gcov.c: support gcc 3.3 also, though gcc 3.3 seems
	to have a bug keeping it from outputting the .da files sometimes
	(string_get_string): don't append garbage nul bytes to the string.

2003-10-15  Seth Nickell  <seth@gnome.org>

	* python/Makefile.am:

	Include dbus_h_wrapper.h in the dist tarball.

2003-10-14  Havoc Pennington  <hp@redhat.com>

	* bus/bus.c (bus_context_check_security_policy): revamp this to
	work more sanely with new policy-based requested reply setup

	* bus/connection.c (bus_transaction_send_from_driver): set bus
	driver messages as no reply

	* bus/policy.c (bus_client_policy_check_can_receive): handle a
	requested_reply attribute on allow/deny rules

	* bus/system.conf: add <allow requested_reply="true"/>

	* bus/driver.c (bus_driver_handle_message): fix check for replies
	sent to the bus driver, which was backward. How did this ever work
	at all though? I think I'm missing something.

	* dbus/dbus-message.c (decode_header_data): require error and
	method return messages to have a reply serial field to be valid
	(_dbus_message_loader_queue_messages): break up this function;
	validate that reply serial and plain serial are nonzero; 
	clean up the OOM/error handling.
	(get_uint_field): don't return -1 from this
	(dbus_message_create_header): fix signed/unsigned bug

	* bus/connection.c (bus_connections_expect_reply): save serial of
	the incoming message, not reply serial

2003-10-14  Havoc Pennington  <hp@redhat.com>

	* bus/connection.c: implement pending reply tracking using
	BusExpireList

	* bus/bus.c (bus_context_check_security_policy): verify that a
	reply is pending in order to allow a reply to be sent. Deny 
	messages of unknown type.

	* bus/dbus-daemon-1.1.in: update to mention new resource limits

	* bus/bus.c (bus_context_get_max_replies_per_connection): new
	(bus_context_get_reply_timeout): new

2003-10-13  Seth Nickell  <seth@gnome.org>

	* python/Makefile.am:

	Pass "make distcheck": remove a couple files from DIST_FILES
	that weren't included in the final version.

2003-10-12  Havoc Pennington  <hp@pobox.com>

        Added test code that 1) starts an actual bus daemon and 2) uses
	DBusGProxy; fixed bugs that were revealed by the test. Lots 
	more testing possible, but this is the basic framework.
	
	* glib/dbus-gproxy.c (dbus_gproxy_manager_unregister): remove
	empty proxy lists from the proxy list hash

	* dbus/dbus-message.c (dbus_message_iter_get_args_valist): add a
	couple of return_if_fail checks

	* dbus/dbus-pending-call.c (_dbus_pending_call_new): use dbus_new0
	to allocate, so everything is cleared to NULL as it should be.

	* glib/dbus-gmain.c (dbus_connection_setup_with_g_main): pass
	source as data to dbus_connection_set_timeout_functions() as the 
	timeout functions expected

	* test/glib/run-test.sh: add a little script to start up a message
	bus and run tests using it

	* tools/dbus-launch.1: updates

	* tools/dbus-launch.c (main): add --config-file option

	* tools/dbus-launch.c (main): remove confusing else if (runprog)
	that could never be reached.

	* dbus/dbus-message.c (dbus_message_new_method_return) 
	(dbus_message_new_error, dbus_message_new_signal): set the
	no-reply-expected flag on all these. Redundant, but may
	as well be consistent.

2003-10-11  Havoc Pennington  <hp@pobox.com>

	* test/decode-gcov.c (function_solve_graph): make broken block
	graph a nonfatal error since it seems to be broken. Need to debug
	this.

	* dbus/dbus-marshal.c (_dbus_type_is_valid): new function since we
	can't just check type > INVALID < LAST anymore

	* dbus/dbus-message.c (dbus_message_get_signature): new function
	(dbus_message_has_signature): new function
	(struct DBusMessage): add signature field (right now it isn't sent
	over the wire, just generated on the fly)
	(dbus_message_copy): copy the signature, and init strings to
	proper length to avoid some reallocs
	(dbus_message_iter_init_array_iterator): return void, since it
	can't fail
	(dbus_message_iter_init_dict_iterator): return void since it can't fail
	(_dbus_message_loader_queue_messages): add silly temporary hack to
	fill in message->signature on load

	* dbus/dbus-protocol.h: change DBUS_TYPE_* values to be ASCII
	characters, so they are relatively human-readable.

2003-10-11  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message.c (_dbus_message_test): add more test
	coverage, but #if 0 for now since they uncover a bug 
	not fixed yet; I think in re_align_field_recurse()
	(re_align_field_recurse): add FIXME about broken assertion

	* dbus/dbus-sysdeps.c (_dbus_sysdeps_test): add more test coverage

	* bus/connection.c: share a couple code bits with expirelist.c

	* bus/expirelist.h, bus/expirelist.c: implement a generic
	expire-items-after-N-seconds facility, was going to share between
	expiring connections and replies, decided not to use for expiring
	connections for now.

	* COPYING: include AFL 2.0 (still need to change all the file headers)

2003-10-09  Havoc Pennington  <hp@redhat.com>

	* configure.in: define DBUS_HAVE_GCC33_GCOV if we have
	gcc 3.3. Not that we do anything about it yet.

	* bus/signals.c (bus_match_rule_parse): impose max length on the
	match rule text

	* dbus/dbus-protocol.h: add DBUS_MAXIMUM_MATCH_RULE_LENGTH

2003-10-09  Havoc Pennington  <hp@redhat.com>

        Make matching rules theoretically work (add parser).
	
	* bus/bus.c (bus_context_check_security_policy): fix up to handle
	the case where destination is explicitly specified as bus driver
	and someone else is eavesdropping.
	
	* bus/policy.c (bus_client_policy_check_can_receive): fix up
	definition of eavesdropping and assertion

	* tools/dbus-send.c (main): use dbus_message_type_from_string

	* bus/signals.c (bus_match_rule_parse): implement

	* dbus/dbus-message.c (dbus_message_type_from_string): new

	* dbus/dbus-errors.h (DBUS_ERROR_MATCH_RULE_INVALID): add

2003-10-02  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): rename from
	dbus_gproxy_oneway_call

	* glib/dbus-gmain.c (dbus_connection_setup_with_g_main) 
	(dbus_server_setup_with_g_main): fix to allow calling them more
	than once on the same args
	(dbus_bus_get_with_g_main): new function

2003-10-02  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-tutorial.xml: write some stuff

2003-09-29  Havoc Pennington  <hp@pobox.com>

	* configure.in: split checks for Doxygen from XML docs, check for
	xmlto

	* doc/Makefile.am: XML-ify all the docs, and add a blank
	dbus-tutorial.xml

2003-09-29  Havoc Pennington  <hp@pobox.com>

	* Merge dbus-object-names branch. To see the entire patch 
	do cvs diff -r DBUS_OBJECT_NAMES_BRANCHPOINT -r dbus-object-names,
	it's huuuuge though.
	To revert, I tagged DBUS_BEFORE_OBJECT_NAMES_MERGE.
	
2003-09-28  Havoc Pennington  <hp@pobox.com>

	* HACKING: update to reflect new server

2003-09-26  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:
	* python/examples/example-signals.py:

	Start implementing some notions of signals. The API
	is really terrible, but they sort of work (with the
	exception of being able to filter by service, and to
	transmit signals *as* a particular service). Need to
	figure out how to make messages come from the service
	we registered :-(
	
	* python/dbus_bindings.pyx.in:

	Removed duplicate message_handler callbacks.
	
2003-09-25  Havoc Pennington  <hp@redhat.com>

	* bus/session.conf.in: fix my mess

2003-09-25  Havoc Pennington  <hp@pobox.com>

	* bus/session.conf.in: fix security policy, reported by Seth Nickell

2003-09-25  Seth Nickell  <seth@gnome.org>

	* python/examples/example-service.py:

	Johan notices complete wrong code in example-service, but
	completely wrong in a way that works exactly the same (!).
	Johan is confused, how could this possibly work? Example
	code fails to serve purpose of making things clear.
	Seth fixes.

2003-09-25  Mark McLoughlin  <mark@skynet.ie>

	* doc/dbus-specification.sgml: don't require header fields
	to be 4-byte aligned and specify that fields should be
	distinguished from padding by the fact that zero is not
	a valid field name.
	
	* doc/TODO: remove re-alignment item and add item to doc
	the OBJECT_PATH type.
	
	* dbus/dbus-message.c:
	(HeaderField): rename the original member to value_offset
	and introduce a name_offset member to keep track of where
	the field actually begins.
	(adjust_field_offsets): remove.
	(append_int_field), (append_uint_field),
	(append_string_field): don't align the start of the header
	field to a 4-byte boundary.
	(get_next_field): impl finding the next marhsalled field
	after a given field.
	(re_align_field_recurse): impl re-aligning a number of
	already marshalled fields.
	(delete_field): impl deleting a field of any type and
	re-aligning any following fields.
	(delete_int_or_uint_field), (delete_string_field): remove.
	(set_int_field), (set_uint_field): no need to re-check
	that we have the correct type for the field.
	(set_string_field): ditto and impl re-aligning any
	following fields.
	(decode_header_data): update to take into account that
	the fields aren't 4-byte aligned any more and the new
	way to distinguish padding from header fields. Also,
	don't exit when there is too much header padding.
	(process_test_subdir): print the directory.
	(_dbus_message_test): add test to make sure a following
	field is re-aligned correctly after field deletion.
	
	* dbus/dbus-string.[ch]:
	(_dbus_string_insert_bytes): rename from insert_byte and
	allow the insert of multiple bytes.
	(_dbus_string_test): test inserting multiple bytes.

	* dbus/dbus-marshal.c: (_dbus_marshal_set_string): add
	warning note to docs about having to re-align any
	marshalled values following the string.
	
	* dbus/dbus-message-builder.c:
	(append_string_field), (_dbus_message_data_load):
	don't align the header field.
	
	* dbus/dbus-auth.c: (process_test_subdir): print the
	directory.
	
	* test/break-loader.c: (randomly_add_one_byte): upd. for
	insert_byte change.
	
	* test/data/invalid-messages/bad-header-field-alignment.message:
	new test case.
	
	* test/data/valid-messages/unknown-header-field.message: shove
	a dict in the unknown field.

2003-09-25  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:
	* python/dbus_bindings.pyx.in:

	Handle return values.
	
	* python/examples/example-client.py:
	* python/examples/example-service.py:

	Pass back return values from the service to the client.
	
2003-09-24  Seth Nickell  <seth@gnome.org>

	* python/dbus.py:

	Connect Object methods (when you are sharing an object) up... pass
	in a list of methods to be shared. Sharing all the methods just
	worked out too weird. You can now create nice Services over the
	DBus in Python. :-)
	
	* python/dbus_bindings.pyx.in:

	Keep references to user_data tuples passed into C functions so 
	Python doesn't garbage collect on us.

	Implement MethodReturn and Error subclasses of Message for creating
	DBusMessage's of those types.
	
	* python/examples/example-client.py:
	* python/examples/example-service.py:

	Simple example code showing both how create DBus services and objects,
	and how to use them.

2003-09-23  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gproxy.c (dbus_gproxy_manager_filter): implement

2003-09-23  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_gproxy_connect_signal): implement
	(dbus_gproxy_disconnect_signal): implement
	(dbus_gproxy_manager_remove_signal_match): implement
	(dbus_gproxy_manager_add_signal_match): implement
	(dbus_gproxy_oneway_call): implement

2003-09-23  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gproxy.c (struct DBusGProxy): convert to a GObject
	subclass. This means dropping the transparent thread safety of the
	proxy; you now need a separate proxy per-thread, or your own
	locking on the proxy. Probably right anyway.
	(dbus_gproxy_ref, dbus_gproxy_unref): nuke, just use g_object_ref

2003-09-22  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_gproxy_manager_get): implement

2003-09-21  Seth Nickell  <seth@gnome.org>

        First checkin of the Python bindings.
	
	* python/.cvsignore:
	* python/Makefile.am:
	* python/dbus_bindings.pyx.in:
	* python/dbus_h_wrapper.h:

	Pieces for Pyrex to operate on, building a dbus_bindings.so
	python module for low-level access to the DBus APIs.
	
	* python/dbus.py:

	High-level Python module for accessing DBus objects.

	* configure.in:
	* Makefile.am:

	Build stuff for the python bindings.

	* acinclude.m4:

	Extra macro needed for finding the Python C header files.

2003-09-21  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gproxy.c (dbus_gproxy_manager_new): start
	implementing the proxy manager, didn't get very far.

	* dbus/dbus-bus.c (dbus_bus_add_match): new
	(dbus_bus_remove_match): new

	* glib/dbus-gproxy.c (dbus_gproxy_new_for_service): add a
	path_name argument; adjust the other not-yet-implemented 
	gproxy constructors to be what I think they should be.

2003-09-21  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-bus.c (dbus_bus_get): set exit_on_disconnect to TRUE
	by default for message bus connections.

	* dbus/dbus-connection.c (dbus_connection_dispatch): exit if
	exit_on_disconnect flag is set and we process the disconnected
	signal.
	(dbus_connection_set_exit_on_disconnect): new function

2003-09-21  Havoc Pennington  <hp@pobox.com>

	Get matching rules mostly working in the bus; only actually
	parsing the rule text remains. However, the client side of
	"signal connections" hasn't been started, this patch is only the
	bus side.
	
	* dbus/dispatch.c: fix for the matching rules changes
	
	* bus/driver.c (bus_driver_handle_remove_match)
	(bus_driver_handle_add_match): send an ack reply from these
	method calls

	* glib/dbus-gproxy.c (dbus_gproxy_begin_call): fix order of
	arguments, reported by Seth Nickell

	* bus/config-parser.c (append_rule_from_element): support
	eavesdrop=true|false attribute on policies so match rules 
	can be prevented from snooping on the system bus.

	* bus/dbus-daemon-1.1.in: consistently use terminology "sender"
	and "destination" in attribute names; fix some docs bugs; 
	add eavesdrop=true|false attribute

	* bus/driver.c (bus_driver_handle_add_match)
	(bus_driver_handle_remove_match): handle AddMatch, RemoveMatch
	messages

	* dbus/dbus-protocol.h (DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST): get
	rid of broadcast service concept, signals are just always broadcast

	* bus/signals.c, bus/dispatch.c, bus/connection.c, bus/bus.c:
	mostly implement matching rules stuff (currently only exposed as signal
	connections)

2003-09-21  Mark McLoughlin  <mark@skynet.ie>

	* doc/dbus-specification.sgml: Change the header field name
	to be an enum and update the rest of the spec to reference
	the fields using the conventinal name.

	* dbus/dbus-protocol.h: update to reflect the spec.

	* doc/TODO: add item to remove the 4 byte alignment requirement.
	
	* dbus/dbus-message.c: Remove the code to generalise the
	header/body length and serial number header fields as named
	header fields so we can reference field names using the 
	protocol values.
	(append_int_field), (append_uint_field), (append_string_field):
	Append the field name as a byte rather than four chars.
	(delete_int_or_uint_field), (delete_string_field): reflect the
	fact that the field name and typecode now occupy 4 bytes instead
	of 8.
	(decode_string_field), (decode_header_data): update to reflect
	protocol changes and move the field specific encoding from
	decode_string_field() back into decode_header_data().
	
	* dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
	Add utility to aid debugging.
	
	* dbus/dbus-message-builder.c:
	(append_string_field), (_dbus_message_data_load): Update to
	reflect protocol changes; Change the FIELD_NAME directive
	to HEADER_FIELD and allow it to take the field's conventional
	name rather than the actual value.
	
	* test/data/*/*.message: Update to use HEADER_FIELD instead
	of FIELD_NAME; Always align the header on an 8 byte boundary
	*before* updating the header length.

2003-09-15  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-pending-call.c: add the get/set object data
	boilerplate as for DBusConnection, etc. Use generic object data
	for the notify callback.

	* glib/dbus-gparser.c (parse_node): parse child nodes

	* tools/dbus-viewer.c: more hacking on the dbus-viewer
	
	* glib/dbus-gutils.c (_dbus_gutils_split_path): add a file to
	contain functions shared between the convenience lib and the
	installed lib

	* glib/Makefile.am (libdbus_glib_1_la_LDFLAGS): add
	-export-symbols-regex to the GLib library

	* dbus/dbus-object-tree.c (_dbus_object_tree_dispatch_and_unlock):
	fix the locking in here, and add a default handler for
	Introspect() that just returns sub-nodes.

2003-09-14  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gthread.c (dbus_g_thread_init): rename to make g_foo
	rather than gfoo consistent

	* glib/dbus-gproxy.h: delete for now, move contents to
	dbus-glib.h, because the include files don't work right since we
	aren't in the dbus/ subdir.
	
	* glib/dbus-gproxy.c (dbus_gproxy_send): finish implementing
	(dbus_gproxy_end_call): finish
	(dbus_gproxy_begin_call): finish

	* glib/dbus-gmain.c (dbus_set_g_error): new

	* glib/dbus-gobject.c (handle_introspect): include information
	about child nodes in the introspection

	* dbus/dbus-connection.c (dbus_connection_list_registered): new
	function to help in implementation of introspection

	* dbus/dbus-object-tree.c
	(_dbus_object_tree_list_registered_and_unlock): new function

2003-09-12  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gidl.h: add common base class for all the foo_info
	types

        * tools/dbus-viewer.c: add GTK-based introspection UI thingy
	similar to kdcop

	* test/Makefile.am: try test srcdir -ef . in addition to test
	srcdir = ., one of them should work (yeah lame)
	
        * glib/Makefile.am: build the "idl" parser stuff as a convenience
	library
	
	* glib/dbus-gparser.h: make description_load routines return
	NodeInfo* not Parser*

	* Makefile.am (SUBDIRS): build test dir after all library dirs

	* configure.in: add GTK+ detection

2003-09-07  Havoc Pennington  <hp@pobox.com>

	* Make Doxygen contented.

2003-09-07  Havoc Pennington  <hp@pobox.com>

	* doc/dbus-specification.sgml: more updates

2003-09-06  Havoc Pennington  <hp@pobox.com>

	* doc/dbus-specification.sgml: partial updates

	* bus/dbus-daemon-1.1.in: fix the config file docs for the
	zillionth time; hopefully I edited the right file this time.

	* bus/config-parser.c (append_rule_from_element): support
	send_type, send_path, receive_type, receive_path

	* bus/policy.c: add message type and path to the list of things
	that can be "firewalled"

2003-09-06  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c (dbus_connection_register_fallback): add this
	(dbus_connection_register_object_path): make this not handle
	messages to paths below the given path

2003-09-03  Havoc Pennington  <hp@pobox.com>

	* test/glib/Makefile.am: add this with random glib-linked test
	programs

	* glib/Makefile.am: remove the random test programs from here,
	leave only the unit tests

	* glib/dbus-gobject.c (_dbus_gobject_test): add test for 
	uscore/javacaps conversion, and fix	
	(get_object_property, set_object_property): change to .NET
	convention for mapping props to methods, set_FooBar/get_FooBar, 
	since one language has such a convention we may as well copy it. 
	Plus real methods in either getFooBar or get_foo_bar style won't 
	collide with this convention.

2003-09-01  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gparser.c: implement

	* glib/dbus-gobject.c: start implementing skeletons support

	* configure.in: when disabling checks/assert, also define
	G_DISABLE_ASSERT and G_DISABLE_CHECKS

2003-09-01  Havoc Pennington  <hp@pobox.com>

	* glib/Makefile.am: rearrange a bunch of files and get "make
	check" framework set up

2003-08-31  Havoc Pennington  <hp@pobox.com>

	* fix build with --disable-tests

2003-08-30  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c: purge DBusMessageHandler

	* dbus/dbus-message-handler.c: remove DBusMessageHandler, just 
	use callbacks everywhere

2003-08-30  Havoc Pennington  <hp@pobox.com>

	* test/data/valid-config-files/system.d/test.conf: change to 
	root for the user so warnings don't get printed

	* dbus/dbus-message.c: add dbus_message_get_path,
	dbus_message_set_path
	
	* dbus/dbus-object-tree.c (do_test_dispatch): add test of
	dispatching to a path

	* dbus/dbus-string.c (_dbus_string_validate_path): add

	* dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
	(_dbus_marshal_object_path): implement

	* dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field 
	to contain the path to the target object
	(DBUS_HEADER_FIELD_SENDER_SERVICE): rename
	DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service

2003-08-30  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object-tree.c: write tests and fix the discovered bugs

2003-08-29  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object-tree.c: modify to allow overlapping paths to be
	registered
	(struct DBusObjectSubtree): shrink this
	a lot, since we may have a lot of them
	(_dbus_object_tree_free_all_unlocked): implement
	(_dbus_object_tree_dispatch_and_unlock): implement

2003-08-29  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-internals.h: fix _DBUS_N_GLOBAL_LOCKS

2003-08-28  Havoc Pennington  <hp@pobox.com>

	purge DBusObjectID
	
	* dbus/dbus-connection.c: port to no ObjectID, create a
	DBusObjectTree, rename ObjectTree to ObjectPath in public API

	* dbus/dbus-connection.h (struct DBusObjectTreeVTable): delete 
	everything except UnregisterFunction and MessageFunction
	
	* dbus/dbus-marshal.c: port away from DBusObjectID, 
	add DBUS_TYPE_OBJECT_PATH
	
	* dbus/dbus-object-registry.[hc], dbus/dbus-object.[hc], 
	dbus/dbus-objectid.[hc]: remove these, we are moving to 
	path-based object IDs

2003-08-25  Havoc Pennington  <hp@pobox.com>

        Just noticed that dbus_message_test is hosed, I wonder when I
	broke that. I thought make check was passing earlier...
	
	* dbus/dbus-object-tree.c: add new "object tree" to match DCOP 
	container tree, will replace most of dbus-object-registry

	* dbus/dbus-string.c (_dbus_string_append_printf_valist): fix C99
	screwup

2003-08-19  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message.c (decode_string_field): support FIELD_SENDER
	(dbus_message_is_error): fix this function

	* bus/dbus-daemon-1.1: clarify logic on when <deny>/<allow> rules
	match

	* bus/policy.c (bus_client_policy_check_can_receive): fix code to
	reflect clarified man page
	(bus_client_policy_check_can_send): ditto
	
	* bus/session.conf.in: fixup

	* bus/system.conf.in: fixup

2003-08-18  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix

	* dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
	dumb bug created earlier (wrong order of args to
	decode_header_data())
	
	* tools/dbus-send.c: port

	* tools/dbus-print-message.c (print_message): port

        * test/data/*messages: port all messages over
	
        * dbus/dbus-message-builder.c: support including 
	message type
	
        * bus/driver.c: port over
	
	* bus/dispatch.c: port over to new stuff

	* dbus/dbus-connection.c (_dbus_connection_new_for_transport):
	rename disconnect signal to "Disconnected"

2003-08-17  Havoc Pennington  <hp@pobox.com>

	This doesn't compile yet, but syncing up so I can hack on it from
	work. What are branches for if not broken code? ;-)
	
	* dbus/dbus-protocol.h: remove DBUS_HEADER_FIELD_NAME, add
	DBUS_HEADER_FIELD_INTERFACE, DBUS_HEADER_FIELD_MEMBER,
	DBUS_HEADER_FIELD_ERROR_NAME
	
	* dbus/dbus-hash.c: Introduce DBUS_HASH_TWO_STRINGS as hack to use
	for the interface+member pairs
	(string_hash): change to use g_str_hash algorithm
	(find_direct_function, find_string_function): refactor these to
	share most code.
	
	* dbus/dbus-message.c: port all of this over to support 
	interface/member fields instead of name field

	* dbus/dbus-object-registry.c: port over
	
	* dbus/dbus-string.c (_dbus_string_validate_interface): rename
	from _dbus_string_validate_name

	* bus/dbus-daemon-1.1: change file format for the 
	<deny>/<allow> stuff to match new message naming scheme

	* bus/policy.c: port over

	* bus/config-parser.c: parse new format
	
2003-08-16  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object-registry.c (add_and_remove_objects): remove
	broken assertion

	* glib/dbus-gproxy.c: some hacking

2003-08-15  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-pending-call.c (dbus_pending_call_block): implement

	* dbus/dbus-connection.c
	(dbus_connection_send_with_reply_and_block): factor out internals;
	change to convert any error replies to DBusError instead of 
	returning them as a message

2003-08-15  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c, 
	dbus/dbus-pending-call.c: Finish the pending call stuff

2003-08-14  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-pending-call.c: start on new object that will replace
	DBusMessageHandler and ReplyHandlerData for tracking outstanding
	replies

	* dbus/dbus-gproxy.c: start on proxy object used to communicate
	with remote interfaces

	* dbus/dbus-gidl.c: do the boring boilerplate in here
	
2003-08-12  Havoc Pennington  <hp@pobox.com>

	* bus/dispatch.c (bus_dispatch): make this return proper 
	DBusHandlerResult to avoid DBUS_ERROR_UNKNOWN_METHOD

	* dbus/dbus-errors.c (dbus_set_error): use
	_dbus_string_append_printf_valist

	* dbus/dbus-string.c (_dbus_string_append_printf_valist)
	(_dbus_string_append_printf): new

	* dbus/dbus-errors.h (DBUS_ERROR_UNKNOWN_MESSAGE): change to
	UNKNOWN_METHOD

	* dbus/dbus-connection.c (dbus_connection_dispatch): handle
	DBUS_HANDLER_RESULT_NEED_MEMORY; send default error reply if a
	message is unhandled.

2003-08-11  Havoc Pennington  <hp@pobox.com>

	* bus/test.c (client_disconnect_handler): change to return
	HANDLED (would have been REMOVE_MESSAGE)

	* dbus/dbus-object.h (enum DBusHandlerResult): rename to
	HANDLED/NOT_YET_HANDLED instead of
	REMOVE_MESSAGE/ALLOW_MORE_HANDLERS to make it clearer how it 
	should be used.

2003-08-10  Havoc Pennington  <hp@pobox.com>

	* tools/dbus-send.c (main): add --type argument, for now
	supporting only method_call and signal types.

	* tools/dbus-print-message.c: print message type

	* dbus/dbus-connection.c (_dbus_connection_new_for_transport):
	init connection->objects

	* doc/dbus-specification.sgml: fix sgml

	* bus/*.c: port over to object-instance API changes

	* test/test-service.c: ditto
	
	* dbus/dbus-message.c (dbus_message_create_header): allow #NULL
	name, we will have to fix up the rest of the code to also handle
	this
	(dbus_message_new): generic message-creation call
	(set_string_field): allow appending name field

2003-08-06  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object-registry.c: implement signal connection 
	and dispatch

	* dbus/dbus-connection.c (_dbus_connection_unref_unlocked): new

	* dbus/dbus-internals.c (_dbus_memdup): new function

2003-08-02  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message.c (dbus_message_get_no_reply)
	(dbus_message_set_no_reply): add these and remove
	set_is_error/get_is_error

	* dbus/dbus-protocol.h, doc/dbus-specification.sgml: 
	remove the ERROR flag, since there's now an ERROR type

2003-08-01  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
	implement

	* dbus/dbus-message.c (dbus_message_get_type): new function

	* doc/dbus-specification.sgml: add "type" byte to messages

2003-08-01  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
	a message type enum to distinguish kinds of message
	(DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message 
	that need not be replied to

2003-08-01  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-marshal.c: adapt to DBusObjectID changes
	(unpack_8_octets): fix no-64-bit-int bug

	* dbus/dbus-object-registry.c (validate_id): validate the 
	connection ID bits, not just the instance ID.

	* dbus/dbus-connection.c (_dbus_connection_init_id): initialize
	the connection-global 33 bits of the object ID

	* dbus/dbus-object-registry.c (info_from_entry): fill in 
	object ID in the new way

	* dbus/dbus-objectid.h: rather than high/low bits, specifically 
	define server/client/instance bits.

2003-07-30  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c (dbus_connection_register_object): fix
	build

2003-07-13  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object.h (struct DBusObjectVTable): add padding
	fields to DBusObjectVTable and DBusObjectInfo

2003-07-12  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object-registry.c: implement unit test,
	fix bugs discovered in process

	* dbus/dbus-connection.c: remove handler_table and
	register_handler(), add DBusObjectRegistry usage

	* dbus/dbus-objectid.c (dbus_object_id_is_null)
	(dbus_object_id_set_null): new functions

2003-07-08  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-object.c: implement some of this

	* dbus/dbus-object-registry.c
	(_dbus_object_registry_add_and_unlock): fill in the object_id out
	param
	(_dbus_object_registry_new): handle OOM

2003-07-08  Havoc Pennington  <hp@pobox.com>

	* 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  <hp@pobox.com>

	* 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
	of DBUS_TYPE_UINT64, need to handle the type always.
	(_dbus_marshal_validate_arg): consolidate identical cases, and
	handle DBUS_TYPE_OBJECT_ID

	* dbus/dbus-objectid.c: new file with DBusObjectID data type.

	* dbus/dbus-protocol.h: add DBUS_TYPE_OBJECT_ID

2003-09-28  Havoc Pennington  <hp@pobox.com>

	* real 0.13 release

2003-09-28  Havoc Pennington  <hp@pobox.com>

	* doc/Makefile.am (dbus-specification.html): testing a funky hack
	to work with Debian db2html

2003-09-28  Havoc Pennington  <hp@pobox.com>

	* configure.in: 0.13

	* doc/Makefile.am (dbus-test-plan.html): accept nonexistence of
	stylesheet-images for benefit of Debian
	
	Change back to using filesystem-linked sockets for the system
	bus, so only root can create the default system bus address.
	
	* bus/system.conf.in: change to use
	DBUS_SYSTEM_BUS_DEFAULT_ADDRESS

	* dbus/Makefile.am (INCLUDES): remove DBUS_SYSTEM_BUS_PATH define
	from here.

	* configure.in: define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
	here, and AC_DEFINE DBUS_SYSTEM_PATH

2003-08-09  Anders Carlsson  <andersca@codefactory.se>

	* doc/TODO:
	* doc/busconfig.dtd:
	Add busconfig DTD.
	
2003-08-09  Anders Carlsson  <andersca@codefactory.se>

	* doc/dbus-specification.sgml:
	Add activation reply values.
	
2003-08-05  Havoc Pennington  <hp@redhat.com>

	* configure.in: 0.12

2003-08-05  Anders Carlsson  <andersca@codefactory.se>

	* glib/dbus-gmain.c: (watch_fd_new), (watch_fd_ref),
	(watch_fd_unref), (dbus_gsource_check), (dbus_gsource_dispatch),
	(add_watch), (remove_watch), (create_source):
	Refcount fds, fixes some reentrancy issues.
	
2003-07-30  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-bus.c (init_connections_unlocked): fix default system
	bus address to be abstract if we have abstract sockets

	* NEWS: update

2003-07-28  Havoc Pennington  <hp@redhat.com>

	* bus/messagebus.in: fix to avoid processname/servicename 
	confusion, from Michael Kearey
	https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=100965
	
2003-07-23  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message.c (dbus_message_iter_get_named): 
	fix from Andy Hanton to remove broken "+1"

2003-07-16  Havoc Pennington  <hp@pobox.com>

	* tools/dbus-launch.c (babysit): close stdout/stderr in the
	babysitter process, as suggested by Thomas Leonard, so 
	an "eval `dbus-launch --exit-with-session`" will actually 
	return

2003-07-16  Havoc Pennington  <hp@pobox.com>

	* configure.in: print out EXPANDED_* variables in the summary at
	the end; clean up the code that computes EXPANDED_ variables and
	get the ones using exec_prefix right. Should make things work
	when you build without --prefix

2003-06-29  Havoc Pennington  <hp@pobox.com>

	* mono/Test.cs (class Test): fire up a main loop and run it

	* mono/DBus.cs (DBus): don't g_thread_init since it can only be
	done once, the app has to do it

2003-06-26  Havoc Pennington  <hp@pobox.com>

	* mono/Connection.cs: set up connection with the glib main loop

2003-07-01  Havoc Pennington  <hp@redhat.com>

	* doc/dbus-specification.sgml: clarify the format of a type code,
	change suggested by Jim Blandy

2003-06-29  Miloslav Trmac  <mitr@volny.cz>

	* doc/Makefile.am:
	* tools/Makefile.am: Don't assume srcdir == builddir.

	* dbus/dbus-memory.c (dbus_realloc): Don't check guards after shrinking
	the allocated block.
	(_dbus_memory_test): New function.
	* dbus/dbus-test.h: Add _dbus_memory_test ().
	* dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): Call it.

	* dbus/dbus-message.c (decode_header_data): Use %.4s instead
	of %c%c%c%c.
	(dbus_message_new): Remove obsolete @todo.

	* 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
	hardcode FIELD_REPLY_SERIAL.

	* dbus/dbus-mainloop.c (_dbus_loop_remove_watch)
	(_dbus_loop_remove_timeout): Cast function pointers to (void *) for %p

	* configure.in: Add -D_POSIX_C_SOURCE=199309L -DBSD_SOURCE to CFLAGS
	and disable DBUS_USE_ATOMIC_INT_486 when --enable-ansi is used

2003-06-24  Havoc Pennington  <hp@pobox.com>

	* mono/*.cs: Use IntPtr.Zero instead of ((IntPtr) 0)

2003-06-23  Anders Carlsson  <andersca@codefactory.se>

	* configure.in:
	* gcj/.cvsignore:
	* gcj/Hello.java:
	* gcj/Makefile.am:
	* gcj/TestMessage.java: (TestMessage), (TestMessage.main):
	* gcj/org/.cvsignore:
	* gcj/org/Makefile.am:
	* gcj/org/freedesktop/.cvsignore:
	* gcj/org/freedesktop/Makefile.am:
	* gcj/org/freedesktop/dbus/.cvsignore:
	* gcj/org/freedesktop/dbus/Makefile.am:
	* gcj/org/freedesktop/dbus/Message.java: (Message),
	(Message.Message):
	* gcj/org/freedesktop/dbus/natMessage.cc:
	Fix the build system.

2003-06-22  Havoc Pennington  <hp@pobox.com>

	* mono/Connection.cs: add more bindings

	* dbus/dbus-threads.c (dbus_threads_init): allow calling this
	more than once.

2003-06-22  Havoc Pennington  <hp@pobox.com>

	* mono/Connection.cs, mono/DBus.cs, mono/Error.cs:
	Start wrapping more stuff.

2003-06-22  Havoc Pennington  <hp@pobox.com>

	* mono/Message.cs: implement Message.Wrap() that ensures we only
	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
	(dbus_message_free_data_slot): new
	(dbus_message_set_data): new
	(dbus_message_get_data): new

2003-06-22  Havoc Pennington  <hp@pobox.com>

	* 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
	slot ID variable passed in by address

	* bus/bus.c: convert to new dataslot API

	* dbus/dbus-bus.c: convert to new dataslot API

	* dbus/dbus-connection.c: convert to new dataslot API

	* dbus/dbus-server.c: convert to new dataslot API

	* glib/dbus-gmain.c: ditto

	* bus/test.c: ditto

	* bus/connection.c: ditto

2003-06-22  Anders Carlsson  <andersca@codefactory.se>

	* configure.in: Add AM_PROG_GCJ and move AM_PROG_LIBTOOL
	after the gcj checks so that the correct configuration tags
	will be added to libtool.

	* dbus-glib-1.pc.in: No need to specify any includes since
	dbus-1.pc.in has those.

2003-06-22  Havoc Pennington  <hp@pobox.com>

	* 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  <philb@gnu.org>

	* tools/dbus-monitor.1: Updated.

	* tools/dbus-send.1: Likewise.

2003-06-20  Anders Carlsson  <andersca@codefactory.se>

	* 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.

2003-06-19  Philip Blundell  <philb@gnu.org>

	* 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  <andersca@codefactory.se>

	* glib/dbus-glib.h: Fix so that dbus-glib.h can be used
	from C++ (Patch by Miloslav Trmac).

2003-06-15  Joe Shaw  <joe@assbarn.com>

	* configure.in: Check for socklen_t.

	* dbus/dbus-sysdeps.c: Define socklen_t if it's not defined.

	* test/test-segfault.c: Add #include <sys/time.h>

	* tools/Makefile.am: Add DBUS_X_CFLAGS to the INCLUDES since
	dbus-launch needs it.

2003-06-09  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): don't use
	SUN_LEN, it breaks abstract socket usage

	* dbus/dbus-internals.c (_dbus_verbose_real): only print PID at
	starts of lines.

2003-06-04  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-server.c (dbus_server_listen): allow abstract sockets
	using unix:abstract=/foo, and when listening in a tmpdir
	i.e. unix:tmpdir=/tmp, always use abstract sockets if we can.

	* dbus/dbus-transport.c (_dbus_transport_open): support
	unix:abstract=/foo

	* dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
	support abstract sockets

	* dbus/dbus-transport-unix.c
	(_dbus_transport_new_for_domain_socket): support abstract sockets

	* dbus/dbus-sysdeps.c (_dbus_connect_unix_socket): add "abstract"
	toggle as an argument, implement abstract namespace support
	(_dbus_listen_unix_socket): ditto

	* configure.in: add --enable-abstract-sockets and implement
	a configure check for autodetection of the right value.

2003-06-01  Havoc Pennington  <hp@pobox.com>

	* 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
	subst'ing it

2003-05-28  Colin Walters  <walters@verbum.org>

	* tools/dbus-monitor.c (main): Fix silly typo (s/--session/--system/).

2003-05-18  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-message.c (dbus_message_new): Remove @todo.

2003-05-17  Colin Walters  <walters@gnu.org>

	* 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-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  <hp@pobox.com>

	* bus/config-parser.c (merge_included): merge in policies from
	child configuration file.

	* bus/policy.c (bus_policy_merge): function to merge two policies
	together

2003-05-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c: disable verbose lock spew

	* tools/dbus-send.c: add --print-reply command line option

	* 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
	disconnected, don't try to use the read_watch

	* dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
	so we can find this bug more easily

2003-05-16  Havoc Pennington  <hp@redhat.com>

	* bus/policy.c (free_rule_list_func): avoid a crash when passed
	NULL as DBusHashTable is annoyingly likely to do.

2003-05-16  Colin Walters  <walters@verbum.org>

	* tools/dbus-monitor.c: Add --session argument and usage()
	function.

	* tools/dbus-monitor.1: Update with new --session arg.

	* bus/Makefile.am (install-data-hook): Create
	$(libdir)/dbus-1.0/services so that the session bus is happy.

2003-05-15  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_atomic_dec, _dbus_atomic_inc): work
	on non-x86. ifdef's are evil.

2003-05-15  Havoc Pennington  <hp@redhat.com>

	* configure.in: 0.11

	* NEWS: update

	* bus/Makefile.am (initddir): apparently we are supposed to put
	init scripts in /etc/rc.d/init.d not /etc/init.d

	* bus/Makefile.am: remove the "you must --enable-tests to make
	check" as it broke distcheck

	* bus/Makefile.am (install-data-hook): create /etc/dbus-1/system.d

2003-05-13  James Willcox  <jwillcox@gnome.org>

	* configure.in:
	* bus/activation.c: (bus_activation_service_created),
	(bus_activation_activate_service):
	* bus/driver.c: (bus_driver_send_service_deleted),
	(bus_driver_send_service_created), (bus_driver_send_service_lost),
	(bus_driver_send_service_acquired),
	(bus_driver_send_welcome_message),
	(bus_driver_handle_list_services):
	* bus/session.conf.in:
	* dbus/dbus-bus.c: (dbus_bus_acquire_service),
	(dbus_bus_service_exists), (dbus_bus_activate_service):
	* dbus/dbus-bus.h:

	Add some convenience API which lets you activate a service, and did a
	bunch of s/0/DBUS_TYPE_INVALID/ in calls to dbus_message_append_args()
	and dbus_message_get_args()

2003-05-11  Havoc Pennington  <hp@pobox.com>

	* 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
	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
	instead of acquiring it twice.

	* dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM

	* bus/connection.c (bus_connections_setup_connection): fix access
	to already-freed memory.

	* dbus/dbus-connection.c: keep a little cache of linked list
	nodes, to avoid using the global linked list alloc lock in the
	normal send-message case. Instead we just use the connection lock
	that we already have to take.

	* 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,
	they return value before increment, not after increment.

	* dbus/dbus-string.c (_dbus_string_append_4_aligned)
	(_dbus_string_append_8_aligned): new functions to try to
	microoptimize this operation.
	(reallocate_for_length): break this out of set_length(), to
	improve profile info, and also so we can consider inlining the
	set_length() part.

	* dbus/dbus-message.c (dbus_message_new_empty_header): init data
	strings with some preallocation, cuts down on our calls to realloc
	a fair bit. Though if we can get the "move entire string to empty
	string" optimization below to kick in here, it would be better.

	* 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
	swap the string data instead of doing any reallocs.
	(_dbus_string_init_preallocated): new function

2003-05-11  Havoc Pennington  <hp@pobox.com>

	Write a "test-profile" that does echo client-server with threads;
	profile reveals lock contention, memcpy/realloc of buffers, and
	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/dbus-message.c (struct DBusMessage): declare
	dbus_atomic_t values as volatile

	* configure.in: code to detect ability to use atomic integer
	operations in assembly, from GLib patch

	* 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
	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
	dbus_connection_flush()

2003-05-08  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-spawn.c: s/_exit/exit/ because it was keeping gcov
	data from getting written, and there wasn't a good reason to
	use _exit really.

	* test/decode-gcov.c (mark_inside_dbus_build_tests): don't count
	dbus_verbose lines in test coverage
	(main): add list of functions sorted by # of untested blocks
	to the coverage report

	* dbus/dbus-mempool.c: put some test-only code in DBUS_BUILD_TESTS

	* dbus/dbus-marshal.c (_dbus_marshal_test): extend test coverage

	* dbus/dbus-message-handler.c (_dbus_message_handler_test):
	extend test coverage

	* test/data/auth/cancel.auth-script: test canceling an
	authentication

	* dbus/Makefile.am: remove dbus-server-debug.[hc] for now, as they
	aren't used. in CVS history if we end up needing them.

2003-05-04  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message-handler.c (_dbus_message_handler_test): add
	unit test

	* dbus/dbus-marshal.c (_dbus_demarshal_string_array): fix this
	function, which assumed length was in # of strings, not bytes

	* dbus/dbus-message.c (_dbus_message_test): add tests for some
	missing coverage

	* dbus/dbus-connection.c
	(_dbus_connection_queue_received_message): disable function for
	now, we are only using it in test mode

	* dbus/dbus-message.c (_dbus_message_loader_queue_messages):
	remove a mistaken FIXME

2003-05-04  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c (dbus_connection_preallocate_send):
	unlock mutex on successful return, patch from Anders Gustafsson

2003-05-04  Havoc Pennington  <hp@pobox.com>

	* dbus-glib-1.pc.in (Requires): fix dependencies, from
	Anders Gustafsson

2003-05-04  Havoc Pennington  <hp@pobox.com>

	* tools/dbus-launch.c: implement

	* bus/main.c (main), bus/bus.c (bus_context_new):
	implement --print-pid and --fork

2003-05-03  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-address.c (dbus_parse_address): fix bug when a key in
	the address had no value, and add to test suite. Fix and
	regression test from Miloslav Trmac

2003-05-03  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-watch.c (dbus_watch_handle): warn and return if a
	watch is invalid when handled

	* 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  <hp@pobox.com>

	* bus/Makefile.am, bus/dbus-daemon-1.1.in: man page for the
	daemon; also documents daemon config file, so replaces
	doc/config-file.txt. Corrected some stuff from config-file.txt in
	the process of moving it.

2003-05-03  Havoc Pennington  <hp@pobox.com>

	* tools/Makefile.am, tools/dbus-send.1, tools/dbus-monitor.1:
	add some man pages

2003-05-03  Colin Walters  <walters@verbum.org>

	* dbus/dbus-sysdeps.c (fill_user_info): Test against
	DBUS_UID_UNSET to determine whether to do a uid lookup or not.

	* Makefile.am: Update to use new .pc versioning scheme.

2003-05-02  Havoc Pennington  <hp@redhat.com>

	* bus/system.conf.in: allow send/receive to/from message bus
	service

2003-04-30  Havoc Pennington  <hp@redhat.com>

	* configure.in: print a note when building with unit tests and
	without assertions

2003-04-30  Havoc Pennington  <hp@redhat.com>

	* Makefile.am: add a check-local that complains if you didn't
	configure with --enable-tests

2003-04-29  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gmain.c: docs cleanups

	* dbus/dbus-types.h: add docs on int64 types

	* dbus/dbus-memory.c: fix docs to avoid putting private API in
	public API docs section

2003-04-29  Havoc Pennington  <hp@redhat.com>

	* dbus-1.pc.in, dbus-glib-1.pc.in: rename these from
	dbus-1.0.pc.in, dbus-glib-1.0.pc.in. As these change with the
	parallel install API version, not with the D-BUS package version.

	* HACKING: move some of README over here

	* README: updates, and document API/ABI policy

	* configure.in: reindentation

2003-04-29  Havoc Pennington  <hp@redhat.com>

	* 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  <hp@redhat.com>

	* configure.in: add --enable-docs which by default is auto yes if
	doxygen and db2html found, no otherwise; but can be forced on/off

	* doc/Makefile.am: conditionalize whether to build docs on
	--enable-docs

2003-04-28  Havoc Pennington  <hp@redhat.com>

	* configure.in: 0.10

	* NEWS: update

	* bus/system.conf.in: add <includedir>system.d</includedir>

	* 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
	of the error handling if it's included.

2003-04-27  Havoc Pennington  <hp@pobox.com>

	Unbreak my code...

	* 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

	* bus/connection.c (bus_connection_get_groups): return an error
	explaining the problem

	* 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
	any recipient.

	* bus/connection.c (bus_connection_complete): create the
	BusClientPolicy here instead of on-demand.
	(bus_connection_get_policy): don't return an error

	* dbus/dbus-message.c (dbus_message_new_error_reply): allow NULL
	sender field in message being replied to

	* bus/bus.c (bus_context_check_security_policy): fix silly typo
	causing it to return FALSE always

	* bus/policy.c (bus_client_policy_check_can_send): fix bug where
	we checked sender rather than destination

2003-04-25  Havoc Pennington  <hp@redhat.com>

        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
	connections timeout after we complete each connection.

	* dbus/dbus-mainloop.c (check_timeout): fix this up a bit,
	probably still broken.

	* bus/services.c (bus_registry_acquire_service): implement max
	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

	* bus/activation.c: implement limit on number of pending
	activations

2003-04-25  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-transport.c (_dbus_transport_get_unix_user): fix bug
	where we used >= 0 instead of != DBUS_UID_UNSET.

2003-04-25  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gmain.c (remove_watch): fix for a crash when watches
	were toggled without add/remove, fix from Anders Gustafsson

2003-04-24  Havoc Pennington  <hp@redhat.com>

	* test/data/valid-config-files/basic.conf: add <limit> tags to
	this test

	* bus/config-parser.h, bus/config-parser.c, bus/bus.c: Implement
	<limit> tag in configuration file.

2003-04-24  Havoc Pennington  <hp@redhat.com>

	* bus/dispatch.c: somehow missed some name_is

	* 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
	auth timeout passes.

2003-04-24  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (dbus_message_name_is): rename
	(dbus_message_service_is): rename
	(dbus_message_sender_is): rename
	(dbus_message_get_service): rename

2003-04-24  Havoc Pennington  <hp@redhat.com>

	* configure.in: add --enable-checks

	* dbus/dbus-message.c (dbus_message_new): reverse name/service arguments

	* dbus/dbus-connection.c (dbus_connection_preallocate_send): fix
	to use thread locks.
	(_dbus_connection_handler_destroyed_locked): move some private
	functions into proper docs group

	* dbus/dbus-internals.h: add _dbus_return_if_fail,
	_dbus_return_val_if_fail

	Throughout: use dbus_return_if_fail

2003-04-23  James Willcox  <jwillcox@gnome.org>

	* glib/dbus-glib.h:
	* glib/dbus-gmain.c: (add_timeout), (wakeup_main), (create_source),
	(dbus_connection_setup_with_g_main),
	(dbus_server_setup_with_g_main):
	* glib/test-dbus-glib.c: (main):
	* glib/test-thread-client.c: (main):
	* glib/test-thread-server.c: (new_connection_callback), (main):
	* tools/dbus-monitor.c: (main):

	Added a GMainContext argument to dbus_connection_setup_with_g_main()
	and dbus_server_setup_with_g_main().

2003-04-20  Havoc Pennington  <hp@pobox.com>

	* doc/dbus-specification.sgml: document the restrictions on
	message and service names

2003-04-22  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c, dbus/dbus-marshal.c: add 64-bit integer
	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

	* configure.in: generate dbus-arch-deps.h

	* dbus/dbus-protocol.h (DBUS_TYPE_INT64, DBUS_TYPE_UINT64): add
	64-bit typecodes

2003-04-22  Havoc Pennington  <hp@redhat.com>

	* test/data/valid-messages/opposite-endian.message: fix test
	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
	org.freedesktop.Local. namespace to be invalid.

	* dbus/dbus-string.c (_dbus_string_validate_name): new

2003-04-19  Havoc Pennington  <hp@pobox.com>

	* 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
	connections, and a count of each. Maintain count of completed
	connections per user. Implement code to check connection limits.

	* dbus/dbus-list.c (_dbus_list_unlink): export

	* bus/bus.c (bus_context_check_security_policy): enforce a maximum
	number of bytes in the message queue for a connection

2003-04-18  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-auth.c (record_mechanisms): memleak fixes

	* dbus/dbus-sysdeps.c (_dbus_string_save_to_file): fix some
	memleaks

	* 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
	offset to avoid writing to unallocated memory

	* dbus/dbus-auth.c (process_rejected): return FALSE if we fail to
	try the next mechanism, so we properly handle OOM

	* dbus/dbus-keyring.c (_dbus_keyring_new_homedir): fix double-free
	on OOM.
	(_dbus_keyring_new): fix OOM bug
	(_dbus_keyring_new_homedir): always set error; impose a maximum
	number of keys we'll load from the file, mostly to speed up the
	test suite and make its OOM checks more useful, but also for
	general sanity.

	* dbus/dbus-auth.c (process_error_server): reject authentication
	if we get an error from the client
	(process_cancel): on cancel, send REJECTED, per the spec
	(process_error_client): send CANCEL if we get an error from the
	server.

2003-04-18  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-mainloop.c (_dbus_loop_iterate): fix UMR in verbose
	debug spew

	* dbus/dbus-auth.c (handle_client_data_cookie_sha1_mech): fix OOM
	handling problem

	* dbus/dbus-keyring.c (_dbus_keyring_new_homedir): only whine
	about DBUS_TEST_HOMEDIR once

	* 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

	Throughout: assorted docs improvements

2003-04-18  Havoc Pennington  <hp@pobox.com>

	* glib/dbus-gmain.c: adapt to watch changes

	* bus/bus.c, bus/activation.c, etc.: adjust to watch changes

	* dbus/dbus-server.h: remove dbus_server_handle_watch

	* dbus/dbus-connection.h: remove dbus_connection_handle_watch

	* dbus/dbus-watch.c (dbus_watch_handle): change DBusWatch to work
	like DBusTimeout, so we don't need dbus_connection_handle_watch
	etc.

2003-04-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-userdb.c, dbus/dbus-sysdeps.c: redo all the passwd
	database usage so it all goes via the DBusUserDatabase cache.

2003-04-17  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-mainloop.c (_dbus_loop_iterate): fix logic so that if
	there was an OOM watch we skipped, we always return TRUE so we
	iterate again to have a look at it again. Fixes test suite hang.
	Code rearrangement also lets us lose some memset and only iterate
	over callbacks once.

	* bus/driver.c (bus_driver_handle_message): sense of test for
	reply was backward

2003-04-16  Havoc Pennington  <hp@pobox.com>

	* doc/dbus-specification.sgml: make spec say serials are unsigned

	* dbus/dbus-message.h: change message serials to unsigned

	* dbus/dbus-connection.c: adapt to message serials being unsigned

2003-04-15  Havoc Pennington  <hp@pobox.com>

	* 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
	object now does that.

2003-04-16  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-message.c (_dbus_message_add_size_counter): keep a
	list of size counters
	(_dbus_message_loader_putback_message_link): put back a popped link

	* dbus/dbus-connection.c
	(dbus_connection_set_max_live_messages_size): rename
	max_received_size
	(dbus_connection_get_outgoing_size): get size of outgoing
	queue
	(_dbus_connection_set_connection_counter): remove this cruft

2003-04-14  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-userdb.c: user database abstraction, mostly to get
	caching, but at some point we might want to be able to use a
	different database.

	* bus/dispatch.c (bus_dispatch_sha1_test): add a test that uses
	SHA1 conf file to test the sha1 auth mechanism, since the regular
	test always uses EXTERNAL when available.

	* configure.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  <hp@pobox.com>

        * 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  <hp@pobox.com>

	* dbus/dbus-mainloop.c: fix some reentrancy issues by refcounting
	callbacks

	* test/data/valid-config-files/debug-allow-all.conf.in: allow all
	users

	* 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
	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

	* bus/dispatch.c (send_service_nonexistent_error): delete this,
	now we just set the DBusError and it gets converted to an error
	reply.

	* bus/connection.c (allow_user_function): enable code using actual
	data from the config file

	* bus/policy.c (list_allows_user): handle wildcard rules for
	user/group connection perms

2003-04-13  Havoc Pennington  <hp@pobox.com>

	* 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)
	(bus_policy_append_default_rule, bus_policy_append_user_rule)
	(bus_policy_append_group_rule): new functions

2003-04-12  Havoc Pennington  <hp@pobox.com>

	* bus/config-parser.c (bus_config_parser_new): fix a memleak

	* dbus/dbus-sysdeps.c: change DBusCredentials to use longs for
	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
	type code.

2003-04-12  Havoc Pennington  <hp@pobox.com>

	* 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
	match change in how policy works

	* dbus/dbus-internals.h: mark assert_not_reached as
	__attribute((noreturn))__

2003-04-11  Havoc Pennington  <hp@redhat.com>

	* 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  <hp@redhat.com>

	* configure.in: add another directory to look for qt in.

2003-04-11  Havoc Pennington  <hp@redhat.com>

	* AUTHORS: add Colin Walters

2003-04-11  Havoc Pennington  <hp@redhat.com>

	* NEWS: update

	* configure.in: 0.9

2003-04-11  Havoc Pennington  <hp@redhat.com>

	* bus/messagebus.in: remove pid file when stopping the
	message bus, since the bus won't have privileges to remove it
	itself.

2003-04-11  Havoc Pennington  <hp@redhat.com>

	* bus/bus.c (bus_context_new): move credentials change after
	creating pidfile

2003-04-11  Havoc Pennington  <hp@pobox.com>

	* test/decode-gcov.c: add "below average functions" to the
	coverage report, and change how some of the code works.

	* bus/test-main.c: bracket some stuff in DBUS_BUILD_TESTS so it's
	not in the coverage stats.

	* test/test-service.c (main): use _dbus_verbose not fprintf in a
	couple places so running the test suite doesn't result in megaspam.

2003-04-11  Havoc Pennington  <hp@pobox.com>

	* bus/dispatch.c (check_existent_service_activation): accept a no
	memory error in a place we didn't before

	* bus/test.c (bus_test_run_everything): remove hacky "do it twice
	in case the first one failed," since the test suite is less
	broken now.

2003-04-10  Havoc Pennington  <hp@pobox.com>

	* bus/dispatch.c (check_segfault_service_activation): add test
	for launching an executable that just crashes.

	* test/test-segfault.c (main): try setting coredumpsize to 0 so we
	don't leave a million cores. We'll see how portable this is.

2003-04-10  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-spawn.c (_dbus_spawn_async_with_babysitter): move all
	the possible parent failures before we fork, so that we don't
	fail to create a babysitter after creating the child.

	* bus/activation.c (bus_activation_activate_service): kill child
	if we don't successfully complete the activation.

2003-04-10  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-connection.c (dbus_connection_flush): don't spin on
	the connection if it's disconnected

	* bus/activation.c (bus_activation_service_created): use new
	transaction features to roll back removal of pending activation if
	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_list_insert_after_link): new code to facilitate
	services.c fixes

	* dbus/dbus-hash.c (_dbus_hash_table_insert_string_preallocated):
	new functionality, so we can preallocate the ability to insert
	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
	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
	from the secondary queue if we failed to remove the current owner
	from the front of the queue.

2003-04-10  Alexander Larsson  <alexl@redhat.com>

	* doc/dbus-specification.sgml:
	s/org.freedesktop.Broadcast/org.freedesktop.DBus.Broadcast/

2003-04-10  Alexander Larsson  <alexl@redhat.com>

	* 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.
	(dbus_message_iter_get_args_valist):
	Update usage of get_named().
	(dbus_message_iter_append_byte):
	Fix typo
	(dbus_message_iter_append_named)
	Fix typo
	(message_iter_test), (check_message_handling_type), (_dbus_message_test):
	More tests.

2003-04-10  Alexander Larsson  <alexl@redhat.com>

	* 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  <hp@pobox.com>

	* 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
	first address.

	* dbus/dbus-internals.c (_dbus_real_assert_not_reached): include
	pid in assertion failures.

	* dbus/dbus-mainloop.c (_dbus_loop_iterate): use static arrays up
	to some fixed size of file descriptor array. Don't return TRUE
	anytime a timeout exists, that led to lots of busy loop silliness
	in the tests.

2003-04-09  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-mainloop.c (check_timeout): fix timeouts, I thought
	I'd checked this in earlier but hadn't.

2003-04-09  Havoc Pennington  <hp@redhat.com>

	* bus/dispatch.c (bus_dispatch_test): get a bit further through
	the activation test (man this is getting old!)

2003-04-09  Havoc Pennington  <hp@redhat.com>

	* test/test-utils.c: use dispatch status function to fix this up

	* bus/connection.c (connection_watch_callback): don't dispatch
	from here
	(connection_timeout_callback): don't dispatch from here
	(bus_connections_setup_connection): set the dispatch status function
	(bus_connection_disconnected): unset it

	* dbus/dbus-mainloop.c (_dbus_loop_queue_dispatch): new function
	used to add a connection to be dispatched
	(_dbus_loop_iterate): do the dispatching at the end of each
	iteration

	* dbus/dbus-connection.c
	(dbus_connection_set_dispatch_status_function): new function
	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
	whenever this function returns
	(dbus_connection_handle_watch): call DispatchStatusFunction
	(dbus_connection_send_with_reply_and_block): call DispatchStatusFunction
	(reply_handler_timeout): call DispatchStatusFunction
	(dbus_connection_flush): call DispatchStatusFunction

2003-04-09  Havoc Pennington  <hp@redhat.com>

	* 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

	* dbus/dbus-mainloop.c (check_timeout): fix this up

	* dbus/dbus-internals.c (_dbus_verbose_real): include PID in
	verbose output so we can sort out output from different processes,
	e.g. in the activation case.

2003-04-08  Colin Walters  <walters@gnu.org>

 	* 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  <hp@redhat.com>

	* test/data/invalid-messages/array-with-mixed-types.message:
	regression test that fails for the moment

	* dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
	tests for convenience

	* dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
	array of nil, it broke things.

	* test/data/invalid-messages/array-of-nil.message: regression test

	* test/data/valid-messages/array-of-array-of-uint32.message:
	happened to write this so added it to suite

2003-04-08  Havoc Pennington  <hp@redhat.com>

	* bus/driver.c (bus_driver_handle_acquire_service): init
	retval/reply before checking name

	* dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add a
	recursion depth argument

	* dbus/dbus-message.h (struct DBusMessageIter): put some padding
	in the public struct for future extension

	* dbus/dbus-message-builder.c (_dbus_message_data_load): fix
	typo

	* dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix a verbose
	message

	* doc/dbus-specification.sgml: fix typo

2003-04-08  Alexander Larsson  <alexl@redhat.com>

	Implemented recursive types, named types and new-style iters

	* bus/driver.c:
	* glib/test-thread-client.c: (thread_func):
	* 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:
	* dbus/dbus.h
	Remove DBusDict

	* 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
	iters.
	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:
	* test/data/invalid-messages/boolean-array-length-too-long.message-raw:
	* test/data/invalid-messages/boolean-has-no-value.message-raw:
	* test/data/invalid-messages/too-short-dict.message:
	* test/data/valid-messages/dict-simple.message:
	* test/data/valid-messages/dict.message:
	* test/data/valid-messages/emptiness.message:
	* test/data/valid-messages/lots-of-arguments.message:
	* test/data/valid-messages/no-padding.message:
	* 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.

2003-04-07  Havoc Pennington  <hp@pobox.com>

	* bus/driver.c (bus_driver_handle_acquire_service): return an
	error if you try to acquire a service that starts with ':'

2003-04-07  Havoc Pennington  <hp@redhat.com>

	* 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
	work on the activation test; it doesn't fully pass yet...

	* test/test-service.c (main): fix so we don't memleak the
	connection to the message bus
	(filter_func): accept a message asking us to exit

2003-04-06  Havoc Pennington  <hp@pobox.com>

	* qt/Makefile.am (dbusinclude_HEADERS): install dbus-qt.h,
	from Colin Walters

	* configure.in: fixes to Qt detection from Colin Walters

	* doc/Makefile.am: Only remove generated docbook dirs if they
	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
	two well-known array slots.

	* test/Makefile.am: remove a lot of stuff that isn't immediately
	useful, it's in CVS history if we want it.

	* test/test-service.c: use dbus-mainloop instead of that
	watch.[hc] crack

2003-04-06  Havoc Pennington  <hp@pobox.com>

	* dbus/Makefile.am: split lists of sources into stuff that goes in
	the library, util functions that go in the lib and are also used
	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]
	here so it can be used in test binaries also

2003-04-06  Havoc Pennington  <hp@pobox.com>

	* 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
	is less hosed if we fail midway through.

	* 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.

	* configure.in: add --with-system-pid-file and --with-system-socket

2003-04-06  Colin Walters  <walters@verbum.org>

	* configure.in (DBUS_SYSTEM_PID_FILE): New variable.

	* bus/system.conf.in: Declare a pidfile.

	* bus/bus.c (bus_context_new): Test for an existing pid file, and
	create one (if appropriate).

	* bus/config-parser.c (enum ElementType) [ELEMENT_PIDFILE]: New.
	(struct BusConfigParser) [pidfile]: New.
	(element_type_to_name, merge_included, start_busconfig_child)
	(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  <hp@pobox.com>

	* 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
	on the service nonexistent error

	* bus/driver.c (bus_driver_handle_acquire_service): set the
	sender on the AcquireService reply

	* test/data/valid-config-files/debug-allow-all.conf.in: Make test
	server also listen on a UNIX socket so services can connect to it.

2003-04-06  Havoc Pennington  <hp@pobox.com>

	* 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  <hp@pobox.com>

	* dbus/dbus-server-unix.c (_dbus_server_new_for_domain_socket):
	save the domain socket name, and unlink it when we disconnect the
	server. Means that at least when we exit normally, we won't leave
	a bunch of junk in /tmp

	* dbus/dbus-transport-unix.c
	(_dbus_transport_new_for_domain_socket): code cleanup (nicer
	memory management). (I was making a real change here but then
	didn't)

2003-04-06  Havoc Pennington  <hp@pobox.com>

	* bus/bus.c (bus_context_new): fix wrong handling of
	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
	"_dbus_assert (pointer)" doesn't cause a warning

	* bus/main.c (main): accept --print-address option to print out
	the message bus address

	* dbus/dbus-sysdeps.c (_dbus_generate_random_ascii): export this

	* 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
	to unix: address

	* 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
	cleanly. To be used for testing.

	* dbus/dbus-spawn.c (babysit): use _dbus_set_signal_handler()

	* dbus/dbus-sysdeps.c (_dbus_set_signal_handler): new

	* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
	handle trying to call this when there's no servers active

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* NEWS: update

	* configure.in: 0.8

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* 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
	application-specific code as you want it to span all servers etc.

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* bus/Makefile.am (install-data-hook): add missing DESTDIR,
	patch from Colin Walters

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* doc/config-file.txt (Elements): fix docs of <auth> to reflect
	reality; in fact multiple mechanisms are allowed.

	* dbus/dbus-internals.c (_dbus_real_assert)
	(_dbus_real_assert_not_reached): move guts of _dbus_assert() and
	_dbus_assert_not_reached() into functions, so that they don't show
	up in basic block counts for test coverage, and don't use up as
	much disk space. Does mean slower execution speed though, so
	assumes --disable-asserts is the normal production case.

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* test/Makefile.am (dist-hook): also dist *.in files

	* NEWS: update

	* configure.in: 0.7

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* 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  <hp@pobox.com>

	* bus/loop.c (bus_loop_iterate): fix the timeout code, using
	magic from GLib

	* 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

	* bus/activation.c: add code using DBusBabysitter so that we
	handle it when a service fails to start up properly.
	(bus_activation_service_created): don't remove the activation
	entries as we go, just let them get removed when we free the pending
	activation. Unref reply messages after sending them.

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* test/decode-gcov.c (main): print per-directory stats in the report

	* Makefile.am (coverage-report.txt): don't include test/* in gcov stats

2003-04-05  Havoc Pennington  <hp@pobox.com>

	* Makefile.am (coverage-report.txt): add target "coverage-report.txt"

	* 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
	AM_CONDITIONAL when gcov is enabled

2003-04-04  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-spawn.c, dbus/dbus-spawn.h: Change dbus_spawn to
	return a "babysitter" object that is used to monitor the status of
	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,
	used in the test suite.

	* dbus/dbus-sysdeps.c: kill _dbus_errno_to_string()

2003-04-03  Havoc Pennington  <hp@pobox.com>

	* 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  <hp@redhat.com>

	* bus/loop.h, bus/loop.c: make the mainloop an object so we can
	have multiple ones

	* bus/*.[hc]: adapt to mainloop change

2003-04-03  Havoc Pennington  <hp@redhat.com>

	* bus/activation.c (load_directory): fix up memleaks
	(bus_activation_entry_free): free the entry

	* dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if
	we get one from the message bus; fix memleaks.

	* dbus/dbus-message.c (dbus_set_error_from_message): new function

2003-04-03  Havoc Pennington  <hp@pobox.com>

	* 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
	do anything yet.

	* 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 <type> to specify well-known type

	* doc/dbus-specification.sgml: document the env variables to
	locate well-known buses and find service activator

2003-04-02  Havoc Pennington  <hp@redhat.com>

	* 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
	shortly to generate .service files pointing to test binaries.

2003-04-02  Havoc Pennington  <hp@redhat.com>

	* 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,
	don't do the double-allocation stuff, just realloc every time.

2003-04-02  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
	in error messages
	(_dbus_string_get_dirname): new
	(_dbus_sysdeps_test): new
	(_dbus_directory_open): include dirnames in error messages

	* bus/config-parser.c: interpret <include> and <includedir> and
	<servicedir> relative to config file location if the given
	filename is not absolute.

	* dbus/dbus-string.c (_dbus_string_find_byte_backward): new

2003-04-02  Havoc Pennington  <hp@redhat.com>

	* bus/connection.c (bus_transaction_send_error_reply): set sender
	service for the error, and unref the reply on success

	* bus/activation.c: convert to use BusTransaction so OOM can be
	handled correctly
	(bus_activation_service_created): set sender of the message

2003-04-01  Havoc Pennington  <hp@redhat.com>

	* bus/config-parser.c, bus/bus.c: implement <servicedir> and
	<includedir> (at least mostly)

	* dbus/dbus-sysdeps.c (_dbus_change_identity): set the group ID
	first, then the user ID

2003-04-01  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-server.c (dbus_server_set_auth_mechanisms): new
	function

	* dbus/dbus-auth.c (_dbus_auth_set_mechanisms): new

	* dbus/dbus-internals.c (_dbus_dup_string_array): new function

	* dbus/dbus-sysdeps.c (_dbus_listen_unix_socket): chmod the
	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
	restrictions

	* bus/config-parser.c (bus_config_parser_content): add support
	for <fork> option and fill in code for <auth>

	* bus/system.conf.in: add <fork/> to default configuration,
	and limit auth mechanisms to EXTERNAL

	* doc/config-file.txt (Elements): add <fork>

	* dbus/dbus-sysdeps.c (_dbus_become_daemon): new function
	(_dbus_change_identity): new function

2003-03-31  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-sysdeps.c (_dbus_connect_unix_socket)
	(_dbus_listen_unix_socket): fix off-by-one error in null
	termination spotted by Nalin

2003-03-31  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-keyring.c (_dbus_keyring_new_homedir): allow setting
	DBUS_TEST_HOMEDIR when tests are enabled, so we can test without
	having a real home directory available.

2003-03-31  Havoc Pennington  <hp@redhat.com>

	* bus/Makefile.am (install-data-hook): create /var/run/dbus

	* bus/messagebus.in: add init script for Red Hat /etc/init.d

	* configure.in: add support for specifying a style of init script
	to install

2003-03-31  Havoc Pennington  <hp@redhat.com>

        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
	an out param
	(_dbus_string_get_const_data): ditto
	(_dbus_string_get_data_len): ditto
	(_dbus_string_get_const_data_len): ditto

2003-03-31  Havoc Pennington  <hp@redhat.com>

	* bus/main.c (main): fix up the command line arguments to be nicer

2003-03-31  Havoc Pennington  <hp@redhat.com>

	* dbus/Makefile.am (INCLUDES): use EXPANDED_LOCALSTATEDIR to
	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
	XML_Parser variable

	* doc/TODO: remove TODO item for dbus_bus_get()

	* dbus/dbus-bus.c (bus_data_free): add missing lock/unlock

2003-03-31  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket)
	(_dbus_transport_new_for_tcp_socket): these didn't need the "server"
	argument since they are always client side

	* dbus/dbus-server.c (dbus_server_get_address): new function

	* bus/main.c (main): take the configuration file as an argument.

	* 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

	* bus/bus.c (bus_context_new): change this to take a
	configuration file name as argument

	* doc/config-file.txt (Elements): add <servicedir>

	* 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

	* configure.in: create system.conf and session.conf

2003-03-30  Havoc Pennington  <hp@pobox.com>

	* bus/config-parser.c: hacking

	* 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

	* dbus/dbus-list.c (_dbus_list_test): add tests for the
	link-oriented stack routines
	(alloc_link): free the mempool if the first alloc from it fails

	* dbus/dbus-mempool.c (struct DBusMemBlock): fix alignment issue

	* dbus/dbus-string.c (UNICODE_VALID): sync new version of this
	from GLib
	(_dbus_string_skip_white): new

	* doc/config-file.txt (Elements): add <includedir>

2003-03-28  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-string.c (_dbus_string_copy_data_len)
	(_dbus_string_copy_data): new functions

2003-03-28  Anders Carlsson  <andersca@codefactory.se>

	* 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  <hp@pobox.com>

	* 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
	failures that were not being handled.

	* dbus/dbus-auth.c (process_auth): fix a memleak in OOM handling

	* dbus/dbus-memory.c: add ability to set number of mallocs in a
	row that will fail on out-of-memory.

	* dbus/dbus-internals.c (_dbus_test_oom_handling): convenience
	function for testing out-of-memory handling.

	* bus/config-loader-expat.c (memsuite): don't wrap the dbus
	allocation functions, they do map exactly to the expat ones.

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:
	* doc/Makefile.am:
	* doc/dbus-test-plan.sgml:
	Add test plan document.

	* test/Makefile.am:
	Fix distcheck.

2003-02-17  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-message.c: (decode_header_data),
	(_dbus_message_loader_return_buffer):
	Set the header padding amount when loading a message.

2003-02-16  Anders Carlsson  <andersca@codefactory.se>

	* 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.

	* test/Makefile.am:
	* test/bus-test.c: (new_connection_callback), (die),
	(test_hello_client1_handler), (test_hello_client2_handler),
	(test_hello_replies), (main):

	* test/bus-test-loop.[ch]:
	Add these.

2003-02-16  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
	backward conditional

2003-02-16  Alexander Larsson  <alexl@redhat.com>

	* dbus/dbus-connection.c:
	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).

2003-02-16  Alexander Larsson  <alexl@redhat.com>

	* dbus/dbus-hash.c (_dbus_hash_table_unref):
	Actually free keys and values when destroying hashtable.

2003-02-16  Anders Carlsson  <andersca@codefactory.se>

	* 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  <andersca@codefactory.se>

	* 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  <andersca@codefactory.se>

	* bus/activation.c: (load_directory), (bus_activation_init),
	(bus_activation_activate_service):
	* bus/activation.h:
	* 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.

2003-02-16  Havoc Pennington  <hp@pobox.com>

	* 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
	we've been asked not to

2003-02-15  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-list.c: (_dbus_list_append_link),
	(_dbus_list_prepend_link):
	* dbus/dbus-memory.c: (dbus_malloc), (dbus_malloc0),
	(dbus_realloc):
	Warning fixes.

2003-02-15  Anders Carlsson  <andersca@codefactory.se>

	* bus/Makefile.am:
	* bus/activation.c: (bus_activation_entry_free),
	(add_desktop_file_entry), (load_directory), (bus_activation_init):
	* bus/activation.h:
	* bus/main.c: (main):
	Add simple activation support, doesn't work yet though.

2003-02-15   Zack Rusin  <zack@kde.org>

	* qt/dbus-qthread.cpp:  small casting fix

2003-02-15  Anders Carlsson  <andersca@codefactory.se>

	* 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_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  <andersca@codefactory.se>

	* 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.

2003-02-15  Alexander Larsson  <alexl@redhat.com>

	* dbus/dbus-threads.c:
	* 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.
	Export new functions _dbus_list_alloc_link, _dbus_list_free_link,
	_dbus_list_append_link, _dbus_list_prepend_link


	* 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:
	Make threadsafe.
	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.

	* test/watch.c:
	Use disconnect message instead of disconnect callback.

	* bus/connection.c:
	* 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  <hp@pobox.com>

	* dbus/dbus-message.c (dbus_message_new): fool around with the
	docs

2003-02-14  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-mempool.c: fail if the debug functions so indicate

	* dbus/dbus-memory.c: fail if the debug functions indicate we
	should

	* dbus/dbus-internals.c (_dbus_set_fail_alloc_counter)
	(_dbus_decrement_fail_alloc_counter): debug functions to
	simulate memory allocation failures

2003-02-14  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-errors.h (struct DBusError): add a word of padding
	to DBusError

2003-02-13  Anders Carlsson  <andersca@codefactory.se>

	* bus/driver.c: (bus_driver_handle_hello):
	* 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  <andersca@codefactory.se>

	* bus/driver.c: (bus_driver_send_service_deleted),
	(bus_driver_send_service_created), (bus_driver_send_service_lost),
	(bus_driver_send_service_acquired), (bus_driver_handle_hello),
	(bus_driver_send_welcome_message),
	(bus_driver_handle_list_services),
	(bus_driver_handle_acquire_service),
	(bus_driver_handle_service_exists):
	* dbus/dbus-bus.c: (dbus_bus_register_client),
	(dbus_bus_acquire_service), (dbus_bus_service_exists):
	* dbus/dbus-errors.c: (dbus_result_to_string):
	* dbus/dbus-errors.h:
	* dbus/dbus-message.c: (dbus_message_append_args),
	(dbus_message_append_args_valist), (dbus_message_get_args),
	(dbus_message_get_args_valist), (dbus_message_get_args_iter),
	(dbus_message_iter_get_arg_type), (dbus_message_iter_get_string),
	(dbus_message_iter_get_byte_array),
	(dbus_message_iter_get_string_array), (message_iter_test),
	(check_message_handling), (_dbus_message_test):
	* dbus/dbus-message.h:
	* 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  <andersca@codefactory.se>

	* dbus/dbus-errors.c:
	* dbus/dbus-message.c:
	* dbus/dbus-string.c:
	Documentation fixes.

2003-02-13  Anders Carlsson  <andersca@codefactory.se>

	* glib/dbus-gmain.c: (timeout_handler), (add_timeout),
	(remove_timeout):
	Implement support for timeouts in dbus-glib.

2003-02-13  Anders Carlsson  <andersca@codefactory.se>

	* 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  <rhult@codefactory.se>

	* bus/main.c: Fix build.

	* dbus/dbus-errors.h:
	* dbus/dbus-errors.c: Fix copyright for Anders.

2003-02-13  Anders Carlsson  <andersca@codefactory.se>

	* 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),
	(bus_driver_send_service_created), (bus_driver_send_service_lost),
	(bus_driver_send_service_acquired), (bus_driver_handle_hello),
	(bus_driver_send_welcome_message),
	(bus_driver_handle_list_services),
	(bus_driver_handle_acquire_service),
	(bus_driver_handle_service_exists):
	* 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  <andersca@codefactory.se>

	* 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  <andersca@codefactory.se>

	* test/data/valid-messages/standard-acquire-service.message:
	* test/data/valid-messages/standard-hello.message:
	* 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  <andersca@codefactory.se>

	* bus/driver.c: (bus_driver_send_welcome_message),
	(bus_driver_handle_list_services),
	(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
	have a name.

2003-02-13  Anders Carlsson  <andersca@codefactory.se>

	* bus/desktop-file.c: (parse_section_start), (parse_key_value),
	(report_error), (bus_desktop_file_load), (lookup_section),
	(lookup_line), (bus_desktop_file_get_raw),
	(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  <hp@pobox.com>

	* test/data/auth/fail-after-n-attempts.auth-script: new test

	* dbus/dbus-auth.c (send_rejected): shutdown_mech() when we
	reject the client.

2003-02-13  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-auth.c (handle_server_data_external_mech): args to
	dbus_credentials_match were backward

	* 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
	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

	* test/Makefile.am (dist-hook): fix to dist all the test stuff

2003-02-12  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip
	\r off of popped lines

	* dbus/dbus-auth.c (_dbus_auth_test): write code to run auth
	scripts

	* dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a
	SEND, append \r\n

2003-02-12  Havoc Pennington  <hp@pobox.com>

	* dbus/Makefile.am: remove break-loader from the build, since it
	moved.

	* configure.in: add --enable-gcov to turn on coverage profiling
	flags and disable optimization

2003-02-10  Havoc Pennington  <hp@pobox.com>

        * 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
	it off the 266mhz laptop. ;-)

	* dbus/dbus-server-debug.c (_dbus_server_debug_accept_transport):
	fix a memleak in error case

2003-02-12  Anders Carlsson  <andersca@codefactory.se>

	* bus/Makefile.am:
	* bus/desktop-file.c:
	* bus/desktop-file.h:
	Add a desktop file parser.

2003-02-11  Zack Rusin  <zack@kde.org>

	* qt/message.[h|cpp]: sample implementation
	of the KDE wrapper for DBusMessage

2003-02-09  Zack Rusin  <zack@kde.org>

	* test/bus-test.c: make_it_compile
	* doc/dbus-specification.sgml: minimal semantic fix

2003-02-06  Anders Carlsson  <andersca@codefactory.se>

	Release 0.3

	* NEWS: Update

2003-02-06  Anders Carlsson  <andersca@codefactory.se>

	* dbus/Makefile.am:
	* dbus/dbus-break-loader.c:
	* test/Makefile.am:
	* test/break-loader.c:
	Move dbus-break-loader to test/ and rename it to break-loader.

2003-02-02  Havoc Pennington  <hp@pobox.com>

	* 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

	* dbus/dbus-auth.c (get_state): impose a maximum number of tries
	to authenticate, then disconnect the client.

2003-02-03  Alexander Larsson  <alexl@redhat.com>

	* dbus/dbus-message.c (dbus_message_append_fields):
	Correct docs.

2003-02-02  Anders Carlsson  <andersca@codefactory.se>

	* doc/dbus-specification.sgml:
	Update address format section.

2003-02-02  Anders Carlsson  <andersca@codefactory.se>

	* test/Makefile.am:
	* test/bus-test.c: (get_time), (add_timeout), (remove_timeout),
	(message_handler), (new_connection_callback), (loop_quit),
	(loop_run), (main):
	Add bus test.

2003-02-02  Anders Carlsson  <andersca@codefactory.se>

	* bus/driver.c: (bus_driver_handle_service_exists):
	Simplify the code a bit.

	* dbus/dbus-bus.c: (dbus_bus_service_exists):
	Fix a silly.

2003-02-02  Anders Carlsson  <andersca@codefactory.se>

	* bus/Makefile.am:
	Add libdbus-daemon.la and link to it.

2003-02-01  James Willcox  <jwillcox@gnome.org>

	* bus/driver.c: (bus_driver_handle_own_service):
	Actually include the service reply code in the message.

2003-02-02  Anders Carlsson  <andersca@codefactory.se>

	* bus/driver.c: (bus_driver_handle_service_exists):
	Don't unref the incoming message.

2003-02-02  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus.h: Add dbus-address.h and dbus-bus.h

2003-02-02  Anders Carlsson  <andersca@codefactory.se>

	* 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  <alexl@redhat.com>

	* dbus/dbus-watch.c (dbus_watch_get_flags):
	Add note in the docs that ERROR or HANGUP won't be returned
	and are assumed always on.

	* glib/dbus-gmain.c (add_watch):
	Always add IO_ERR | IO_HUP

	* dbus/dbus-message.h:
	Add semicolon after dbus_message_iter_get_string_array().
	Makes qt code build again

2003-02-01  Anders Carlsson  <andersca@codefactory.se>

	* bus/driver.c: (create_unique_client_name),
	(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  <alexl@redhat.com>

	* dbus/dbus-message.c (dbus_message_append_fields):
	Add some more doc comments.

2003-02-01  Havoc Pennington  <hp@pobox.com>

	* 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
	execute bit on saved files

2003-02-01  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-break-loader.c (main): new program to find messages
	that break the loader.

	* dbus/dbus-sysdeps.c (_dbus_string_append_uint): new function
	* 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  <hp@pobox.com>

	* 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  <hp@pobox.com>

	* doc/dbus-specification.sgml: work on the specification

	* 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
	no longer specifies that.
	(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
	"break" for DBUS_TYPE_NIL, remove @todo

2003-01-31  Havoc Pennington  <hp@pobox.com>

	* 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.

2003-01-31  Anders Carlsson  <andersca@codefactory.se>

	* 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  <hp@pobox.com>

	* doc/dbus-specification.sgml: fully specify the header.  Add
	flags and major protocol version, and change header/body len to
	unsigned.

	* dbus/dbus-message-builder.c (append_saved_length): append length
	as uint32

	* dbus/dbus-message.c (dbus_message_create_header): change header
	length and body length to unsigned. Add the new fields from the
	spec
	(_dbus_message_loader_return_buffer): unsigned header/body len

2003-01-30  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-auth.c: rework to use only REJECTED, no
	MECHANISMS

	* doc/dbus-sasl-profile.txt: drop MECHANISMS and just
	use REJECTED, suggested by Mark McLoughlin

2003-01-30  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-server.c (dbus_server_listen): @todo about how we need
	a better way to report errors here. e.g.  "unix address lacks
	path" or something. also "no such file" when the path doesn't
	exist, etc.

	* dbus/dbus-address.c (dbus_address_entries_free): add @todo about
	leaking list nodes
	(dbus_parse_address): add @todo about documenting address format,
	and allowing , and ; to be escaped

2003-01-30  Anders Carlsson  <andersca@codefactory.se>

	* 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.

2003-01-30  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message.c: use message->byte_order instead of
	DBUS_COMPILER_BYTE_ORDER throughout.
	(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
	DBusString arguments.

	* dbus/dbus-message.c (_dbus_message_loader_return_buffer):
	validate message args here, so we don't have to do slow validation
	later, and so we catch bad messages as they are incoming. Also add
	better checks on header_len and body_len. Also fill in
	message->byte_order

	* dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
	implemented properly)
	(_dbus_string_validate_nul): new function to check all-nul

	* 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.

2003-01-29  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message.c (check_message_handling): fix assertion
	failure on set_client_serial

2003-01-28  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-server-debug.c: Add doc section comments

	* dbus/dbus-transport-debug.c: add doc section comments

2003-01-28  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-string.c (_dbus_string_base64_decode): append bytes in
	the reverse order from how I had it
	(_dbus_string_base64_encode): reverse encoding order. I was
	basically byteswapping everything during encoding.

2003-01-28  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-connection-internal.h:
	* 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),
	(dbus_server_set_timeout_functions):
	(_dbus_server_remove_timeout):
	New functions so that a server can add and remove timeouts.

	(dbus_server_listen):
	Add commented out call to dbus_server_debug_new.

	* 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  <hp@pobox.com>

	* dbus/dbus-message.c (check_message_handling): function to check
	on the loaded message, iterates over it etc.

2003-01-28  Havoc Pennington  <hp@pobox.com>

	* test/Makefile.am (dist-hook): fix make distdir

	* dbus/Makefile.am (TESTS_ENVIRONMENT): fix make check

2003-01-27  Havoc Pennington  <hp@pobox.com>

	* 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
	bugfixes

	* test/Makefile.am (dist-hook): add dist-hook for .message files

	* dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
	can be constant or locked.
	(_dbus_string_free): allow freeing a const string as
	documented/intended

	* dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility

	* 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
	argument to this and load all the messages in test/data/
	checking that they can be loaded or not loaded as appropriate.

2003-01-27  Anders Carlsson  <andersca@codefactory.se>

	* 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):
	Add helper functions for sending service related messages.

	(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
	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  <hp@pobox.com>

	* dbus/dbus-message-builder.c: implement, completely untested.

	* 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.

	* dbus/dbus-string.c (_dbus_string_starts_with_c_str): new

2003-01-26  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-sysdeps.c (_dbus_file_get_contents): new function

	* dbus/dbus-errors.c (dbus_result_to_string): add
	file errors

	* dbus/dbus-message-builder.c: new file, will contain code to load
	up messages from files. Not implemented yet.

2003-01-26  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-message.c (dbus_message_set_sender): support deleting
	the sender by setting to NULL

2003-01-26  Havoc Pennington  <hp@pobox.com>

        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
	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
	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
	to string length just not greater than, I think.
	(_dbus_marshal_set_int32): new function
	(_dbus_marshal_set_uint32): new function
	(_dbus_marshal_set_string): new function

	* dbus/dbus-connection.c (_dbus_connection_new_for_transport): fix
	a warning, init timeout_list to NULL
	(dbus_connection_send_message): don't use uninitialized variable
	"serial"

	* dbus/dbus-string.c (_dbus_string_replace_len): new function

2003-01-26  Anders Carlsson  <andersca@codefactory.se>

	* bus/driver.c: (bus_driver_handle_hello),
	(bus_driver_send_welcome_message):
	Plug leaks

2003-01-26  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-auth.c: (process_auth), (_dbus_auth_unref):
	* dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
	(dbus_connection_unref):
	* dbus/dbus-marshal.c: (_dbus_marshal_test):
	* dbus/dbus-message.c: (dbus_message_unref),
	Plug memory leaks.

	(dbus_message_get_fields):
	Remove debugging printout.

	(_dbus_message_loader_return_buffer):
	Don't store the header string.

	(_dbus_message_test):
	Plug leaks.

2003-01-26  Richard Hult  <rhult@codefactory.se>

	* glib/dbus-gmain.c (dbus_connection_dispatch): Traverse a copy of
	the file descriptor list, since it can change under us.

2003-01-25  Anders Carlsson  <andersca@codefactory.se>

	* 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
	GIOChannel so we can catch messages put in the queue while waiting
	for a reply.

2003-01-25  Anders Carlsson  <andersca@codefactory.se>

	* bus/Makefile.am:
	* bus/connection.c: (connection_disconnect_handler),
	(connection_watch_callback), (bus_connection_setup):
	* bus/dispatch.c: (send_one_message),
	(bus_dispatch_broadcast_message), (bus_dispatch_message_handler),
	(bus_dispatch_add_connection), (bus_dispatch_remove_connection):
	* bus/dispatch.h:
	* bus/driver.c: (bus_driver_send_service_deleted),
	(bus_driver_send_service_created), (bus_driver_handle_hello),
	(bus_driver_send_welcome_message),
	(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
	_DBUS_HANDLE_OOM. Also send ServiceDeleted messages when a client
	is disconnected.

2003-01-25  Anders Carlsson  <andersca@codefactory.se>

	* 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  <andersca@codefactory.se>

	* 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
	message if one already exists.

2003-01-24  Havoc Pennington  <hp@pobox.com>

	* 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
	on OOM

2003-01-25  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-list.c: (alloc_link), (free_link):
	Use a memory pool for the links.

2003-01-25  Anders Carlsson  <andersca@codefactory.se>

	* 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  <andersca@codefactory.se>

	* 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_get_fields_valist),
	(dbus_message_iter_get_field_type),
	(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.

2003-01-24  Havoc Pennington  <hp@pobox.com>

	* doc/dbus-specification.sgml: add some stuff

2003-01-22  Havoc Pennington  <hp@pobox.com>

	* doc/dbus-specification.sgml: Start to document the protocol.

2003-01-22  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c
	(dbus_connection_send_message_with_reply_and_block): add some @todo

	* bus/driver.c (bus_driver_add_connection): add a FIXME about memleak

2003-01-21  Havoc Pennington  <hp@pobox.com>

        (patch untested because can't compile)

	* bus/driver.c (create_unique_client_name): make this function
	never recycle client names. Also, caller should initialize
	the DBusString.

	* dbus/dbus-sysdeps.c (_dbus_get_current_time): new function

2003-01-21  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-marshal.c: (_dbus_marshal_double),
	(_dbus_marshal_int32), (_dbus_marshal_uint32),
	(_dbus_marshal_int32_array), (_dbus_marshal_uint32_array),
	(_dbus_marshal_double_array), (_dbus_marshal_string_array),
	(_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
	(_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
	(_dbus_marshal_get_field_end_pos), (_dbus_marshal_test):
	* dbus/dbus-marshal.h:
	* dbus/dbus-protocol.h:
	Add support for marshalling and demarshalling integer, double
	and string arrays.

2003-01-21  Anders Carlsson  <andersca@codefactory.se>

	* 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_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),
	(bus_driver_add_connection), (bus_driver_remove_connection):
	* bus/driver.h:
	* bus/main.c:
	* bus/services.c: (bus_service_free):
	* bus/services.h:
	New file that handles communication and registreation with the bus
	itself.

2003-01-21  Anders Carlsson  <andersca@codefactory.se>

	* 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),
	(dbus_message_new_reply), (decode_header_data),
	(_dbus_message_loader_return_buffer), (_dbus_message_test):
	* 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  <andersca@codefactory.se>

	* dbus/Makefile.am: Add dbus-timeout.[cħ]

	* dbus/dbus-connection.c: (_dbus_connection_new_for_transport):
	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  <andersca@codefactory.se>

	* dbus/dbus-string.c (_dbus_string_move_len): Don't delete all
	of the string, just as long as specified.

2003-01-19  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-connection.c (dbus_connection_get_is_authenticated):
	new function

	* dbus/dbus-server.c (dbus_server_set_max_connections)
	(dbus_server_get_max_connections, dbus_server_get_n_connections):
	keep track of current number of connections, and add API for
	setting a max (but haven't implemented enforcing the max yet)

2003-01-18  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-transport-unix.c (unix_do_iteration): only do the
	reading/writing if read_watch != NULL or write_watch != NULL.

	* dbus/dbus-message.c (_dbus_message_loader_return_buffer): fix
	the message loader code to actually load message->header and
	message->body into the newly-created message.

	* 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_connection_get_max_live_messages_size): implement some
	resource limitation functions

	* dbus/dbus-resources.c: new file implementing some of the
	resource limits stuff

	* dbus/dbus-message.c (dbus_message_iter_get_byte_array): add
	missing docs, add @todo to handle OOM etc.

	* dbus/dbus-marshal.c (_dbus_demarshal_byte_array): add missing
	docs

2003-01-18  Havoc Pennington  <hp@pobox.com>

	* 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,
	replace with DisconnectFunction.

2003-01-18  Havoc Pennington  <hp@pobox.com>

        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.

	* dbus/dbus-internals.h (_dbus_assert): support
	DBUS_DISABLE_ASSERT
	(_dbus_verbose): support DBUS_ENABLE_VERBOSE_MODE

2003-01-18  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-test.c: include config.h so that tests actually run

	* dbus/dbus-string.c: add assertions that stuff is 8-byte aligned,
	so the failure mode when that assumption fails will be plenty
	obvious.

2003-01-18  Havoc Pennington  <hp@pobox.com>

	* configure.in: default --enable-tests to $USE_MAINTAINER_MODE

	* dbus/Makefile.am: fix it up so dubs-test-main.c is included in
	the distribution

	* test/Makefile.am: don't use special variable "TESTS" for echo-*
	since we don't want to use those in make check

2003-01-15  Havoc Pennington  <hp@redhat.com>

        Release 0.2

	* NEWS: update

2003-01-15  Havoc Pennington  <hp@redhat.com>

	* test/Makefile.am: fix so that test source code ends up in the
	distribution on make distcheck

2003-01-15  Havoc Pennington  <hp@redhat.com>

        Release 0.1.

	* NEWS: update

2003-01-15  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus-test.c (dbus_internal_symbol_do_not_use_run_tests):
	fix build when --disable-tests

	* Makefile.am (EXTRA_DIST): put HACKING in here

	* HACKING: document procedure for making a tarball release.

2003-01-14  Anders Carlsson  <andersca@codefactory.se>

	* bus/connection.c: (connection_error_handler),
	(bus_connection_setup):
	* 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),
	(dbus_message_get_fields_valist), (_dbus_message_test):
	* 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  <hp@pobox.com>

	* configure.in: change --enable-test/--enable-ansi action-if-given
	to enable_foo=$enableval instead of enable_foo=yes

2003-01-08  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-string.c (_dbus_string_align_length): new function

	* 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
	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.
	(dbus_message_append_fields): have "first_field_type" arg separate
	from va list, needed for C++ binding that also uses varargs IIRC
	and helps with type safety
	(dbus_message_new): add @todo about using DBusString to store
	service/name internally
	(dbus_message_new): don't leak ->service and ->name on OOM later
	in the function
	(dbus_message_unref): free the service name
	(dbus_message_get_fields): same change to varargs
	i.e. first_field_type
	(_dbus_message_loader_return_buffer): assert that the message data
	is aligned (if not it's a bug in our code). Put in verbose griping
	about why we set corrupted = TRUE.
	(decode_header_data): add FIXME that char* is evil.  Was going to
	add FIXME about evil locale-specific string.h strncmp, but just
	switched to wacky string-as-uint32 optimization. Move check for
	"no room for field name" above get_const_data_len() to avoid
	assertion failure in get_const_data_len if we have trailing 2
	bytes or the like. Check for service and name fields being
	provided twice. Don't leak service/name on error. Require field
	names to be aligned to 4 bytes.

	* dbus/dbus-marshal.c: move byte swap stuff to header
	(_dbus_pack_int32): uscore-prefix
	(_dbus_unpack_int32): uscore-prefix
	(_dbus_unpack_uint32): export
	(_dbus_demarshal_string): add @todo complaining about use of
	memcpy()
	(_dbus_marshal_get_field_end_pos): add @todo about bad error
	handling allowing corrupt data to go unchecked

2003-01-08  Havoc Pennington  <hp@redhat.com>

	* 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)

	* dbus/dbus.h: include dbus/dbus-protocol.h

2003-01-08  Anders Carlsson  <andersca@codefactory.se>

	* dbus/Makefile.am (dbusinclude_HEADERS): Install
	dbus-connection.h

2003-01-08  Anders Carlsson  <andersca@codefactory.se>

	* 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),
	(dbus_message_iter_get_field_type), (dbus_message_iter_get_double),
	(dbus_message_iter_get_byte_array):
	* dbus/dbus-message.h:
	Add new convenience functions for appending and getting message fields.
	Also add demarshalling routines for byte arrays.

2003-01-07  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-connection-internal.h:
	* dbus/dbus-connection.c: (_dbus_connection_new_for_transport),
	(_dbus_connection_get_next_client_serial),
	(dbus_connection_send_message):
	* dbus/dbus-internals.h:
	* dbus/dbus-marshal.c: (unpack_uint32), (dbus_unpack_int32),
	(dbus_pack_int32), (_dbus_marshal_double), (_dbus_marshal_int32),
	(_dbus_marshal_uint32), (_dbus_demarshal_double),
	(_dbus_demarshal_int32), (_dbus_demarshal_uint32),
	(_dbus_demarshal_string), (_dbus_marshal_get_field_end_pos),
	(_dbus_verbose_bytes), (_dbus_marshal_test):
	* dbus/dbus-marshal.h:
	* dbus/dbus-message-internal.h:
	* dbus/dbus-message.c: (_dbus_message_set_client_serial),
	(dbus_message_write_header), (_dbus_message_lock),
	(dbus_message_new), (dbus_message_ref), (dbus_message_unref),
	(dbus_message_get_name), (dbus_message_append_int32),
	(dbus_message_append_uint32), (dbus_message_append_double),
	(dbus_message_append_string), (dbus_message_append_byte_array),
	(dbus_message_get_fields_iter), (dbus_message_iter_ref),
	(dbus_message_iter_unref), (dbus_message_iter_has_next),
	(dbus_message_iter_next), (dbus_message_iter_get_field_type),
	(dbus_message_iter_get_string), (dbus_message_iter_get_int32),
	(dbus_message_iter_get_uint32), (dbus_message_iter_get_double),
	(decode_header_data), (_dbus_message_loader_return_buffer),
	(message_iter_test), (_dbus_message_test):
	* dbus/dbus-message.h:
	* dbus/dbus-protocol.h:
	* dbus/dbus-test.c: (main):
	* dbus/dbus-test.h:
	* glib/test-dbus-glib.c: (message_handler), (main):
	* test/echo-client.c: (main):
	* test/watch.c: (check_messages):
	Make messages sendable and receivable for real.

2003-01-07  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-marshal.c: (_dbus_marshal_double),
	(_dbus_marshal_string), (_dbus_marshal_byte_array):
	* dbus/dbus-message.c: (dbus_message_append_int32),
	(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  <andersca@codefactory.se>

	* dbus/dbus-marshal.c: (_dbus_marshal_string),
	(_dbus_demarshal_string), (_dbus_marshal_test):
	* 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.

2003-01-05  Havoc Pennington  <hp@pobox.com>

	* bus/connection.c: implement routines for handling connections,
	first thing is keeping a list of owned services on each connection
	and setting up watches etc.

	* bus/services.c: implement a mapping from service names to lists
	of connections

	* dbus/dbus-hash.c: add DBUS_HASH_POINTER

	* dbus/dbus-threads.c (dbus_static_mutex_lock): add functions
	to use static mutexes for global data

	* dbus/dbus-connection.c (dbus_connection_set_data): add new
	collection of functions to set/get application-specific data
	on the DBusConnection.

2003-01-04  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-sysdeps.c (_dbus_sleep_milliseconds): new function
	(_dbus_poll): new function

	* dbus/dbus-internals.h (_DBUS_STRUCT_OFFSET): new macro
	copied from GLib

	* bus/loop.c: initial code for the daemon main loop

2003-01-04  Havoc Pennington  <hp@pobox.com>

	* 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
	not sure we have any other meaningful errors)

	* configure.in: check for getpwnam_r

	* dbus/dbus-transport.c, dbus/dbus-transport-unix.c,
	dbus/dbus-auth.c: add credentials support, add EXTERNAL auth
	mechanism as in SASL spec, using socket credentials

	* dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): new function
	(_dbus_send_credentials_unix_socket): new function

	* dbus/dbus-sysdeps.c (_dbus_accept_unix_socket): rename just
	dbus_accept()
	(_dbus_write): only check errno if <0 returned
	(_dbus_write_two): ditto

2003-01-02  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-marshal.c: (_dbus_marshal_utf8_string),
	(_dbus_marshal_byte_array), (_dbus_demarshal_utf8_string),
	(_dbus_marshal_test):
	* 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  <porten@kde.org>

	* configure.in: added check for C++ compiler and a very cheesy
	check for the Qt integration

	* Makefile.am (SUBDIRS): compile qt subdir if support is enabled

	* qt/Makefile.am: added

	* qt/.cvsignore: added

	* qt/dbus-qthread.cc, qt/dbus-qthread.cpp: renamed former to
	latter, added #ifdef QT_THREAD_SUPPORT guard.

	* dbus/Makefile.am: added missing headers for make dist

2002-12-28  Kristian Rietveld  <kris@gtk.org>

	* dbus/Makefile.am: fixup export-symbols-regex.

2002-12-27  Anders Carlsson  <andersca@codefactory.se>

	* acinclude.m4: Add this file and put the
	PKG_CHECK_MODULE macro in it.

2002-12-27  Anders Carlsson  <andersca@codefactory.se>

	* dbus/dbus-marshal.c: (_dbus_marshal_string),
	(_dbus_demarshal_double), (_dbus_demarshal_int32),
	(_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
	discovered.

2002-12-26  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-auth.c: fixes fixes fixes

	* 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
	instead of nuking it.

2002-12-26  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-marshal.h (DBUS_COMPILER_BYTE_ORDER): #ifdef
	WORDS_BIGENDIAN then compiler byte order is DBUS_BIG_ENDIAN,
	doh

	* dbus/dbus-marshal.c: Add macros to do int swapping in-place and
	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

	* dbus/dbus-string.c (_dbus_string_validate_ascii): new function

	* 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,
	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
	avoid reentrancy problems

	* dbus/dbus-transport.c: ditto

	* dbus/dbus-connection.c (dbus_connection_dispatch_message): don't
	leak reference count in no-message case

	* test/watch.c (do_mainloop): handle adding/removing watches
	during iteration over the watches. Also, ref the connection/server
	stored on a watch, so we don't try to mangle a destroyed one.

	* dbus/dbus-transport-unix.c (do_authentication): perform
	authentication

	* dbus/dbus-auth.c (get_state): add a state
	AUTHENTICATED_WITH_UNUSED_BYTES and return it if required
	(_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
	the auth conversation DBusAuth

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd)
	(_dbus_transport_new_for_domain_socket): when creating a
	transport, pass in whether it's a client-side or server-side
	transport so we know which DBusAuth to create

2002-12-03  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-transport-unix.c (unix_finalize): finalize base
	_after_ finalizing the derived members
	(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 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  <andersca@codefactory.se>

	* dbus/dbus-marshal.c: (_dbus_marshal_string),
	(_dbus_demarshal_double), (_dbus_demarshal_int32),
	(_dbus_demarshal_uint32), (_dbus_demarshal_string),
	(_dbus_marshal_test):
	* dbus/dbus-marshal.h:
	Add string marshal functions and have the demarshal functions
	return the new position.

2002-12-25  Havoc Pennington  <hp@pobox.com>

	* 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
	(_dbus_string_base64_decode): new function

2002-12-25  Anders Carlsson  <andersca@codefactory.se>

	* dbus/Makefile.am:
	* dbus/dbus-marshal.c: (swap_bytes), (_dbus_marshal_double),
	(_dbus_marshal_int32), (_dbus_marshal_uint32),
	(_dbus_demarshal_double), (_dbus_demarshal_int32),
	(_dbus_demarshal_uint32), (_dbus_marshal_test):
	* dbus/dbus-marshal.h:
	* dbus/dbus-protocol.h:
	* dbus/dbus-test.c: (main):
	* dbus/dbus-test.h:
	Add un-optimized marshalling/demarshalling routines.

2002-12-25  Harri Porten  <porten@kde.org>

	* qt/dbus-qt.h: adjusted ctor and getter to KDE/Qt conventions

2002-12-24  Zack Rusin  <zack@kde.org>

	* qt/dbus-qthread.cc: adding - integrates QMutex into Dbus
	* qt/dbus-qt.h: skeleton with two sample implemenatation of the
	main loop stuff

2002-12-24  Havoc Pennington  <hp@pobox.com>

	* 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
	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
	that has watch/timeout functions etc. already set up.

	* dbus/dbus-connection.c
	(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

	* dbus/dbus-string.c (_dbus_string_test): free a string that
	wasn't

	* dbus/dbus-hash.c: use memory pools for the hash entries
	(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
	shrink the hash table.

	* dbus/dbus-mempool.h, dbus/dbus-mempool.c: memory pools

	* dbus/dbus-connection.c (dbus_connection_register_handler)
	(dbus_connection_unregister_handler): new functions

	* dbus/dbus-message.c (dbus_message_get_name): new

	* dbus/dbus-list.c: fix docs typo

	* dbus/dbus-message-handler.h, dbus/dbus-message-handler.c:
	an object representing a handler for messages.

2002-12-16  Anders Carlsson  <andersca@codefactory.se>

	* 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  <andersca@codefactory.se>

	* 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),
	(gdbus_connection_check), (gdbus_connection_dispatch),
	(gdbus_add_connection_watch), (gdbus_remove_connection_watch),
	(dbus_connection_gsource_new):
	* glib/dbus-gthread.c: (dbus_gmutex_new), (dbus_gmutex_free),
	(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  <porten@kde.org>

	* autogen.sh: check for libtoolize before attempting to use it

	* dbus/dbus-transport-unix.c: include <sys/time.h> for timeval
	struct.

	* .cvsignore: ignore more stamp files

	* dbus/dbus-watch.c (_dbus_watch_list_new): fixed doc error

	* test/Makefile.am: added -I$(top_srcdir) to be able to compile
	without make install.

2002-12-15  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-threads.c: add thread stubs that a higher library
	layer can fill in. e.g. the GLib wrapper might fill them in with
	GThread stuff. We still need to use this thread API to
	thread-safe-ize the library.

2002-12-12  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
	below new interfaces and include fewer system headers.

	* dbus/dbus-sysdeps.c (_dbus_read): new function
	(_dbus_write): new function
	(_dbus_write_two): new function
	(_dbus_connect_unix_socket): new function
	(_dbus_listen_unix_socket): new function

	* dbus/dbus-message-internal.h: change interfaces to use
	DBusString

2002-12-11  Havoc Pennington  <hp@pobox.com>

	* dbus/dbus-types.h: add dbus_unichar

	* dbus/dbus-internals.c (_dbus_verbose): use _dbus_getenv

	* dbus/dbus-connection.c (dbus_connection_send_message): return
	TRUE on success

	* dbus/dbus-transport.c: include dbus-watch.h

	* dbus/dbus-connection.c: include dbus-message-internal.h

	* HACKING: add file with coding guidelines stuff.

	* dbus/dbus-string.h, dbus/dbus-string.c: Encapsulate all string
	handling here, for security purposes (as in vsftpd). Not actually
	using this class yet.

	* dbus/dbus-sysdeps.h, dbus/dbus-sysdeps.c: Encapsulate all
	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  <hp@pobox.com>

	* dbus/dbus-internals.c (_dbus_verbose): fix to not
	always print the first verbose message.

2002-11-24  Havoc Pennington  <hp@pobox.com>

        * 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
	function

	* dbus/dbus-list.c (_dbus_list_foreach): new function

	* dbus/dbus-internals.c (_dbus_verbose): new function

	* dbus/dbus-server.c, dbus/dbus-server.h: public object
	representing a server that listens for connections.

	* dbus/.cvsignore: create

	* dbus/dbus-errors.h, dbus/dbus-errors.c:
	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
	both client and server.)

	* dbus/dbus-transport.h, dbus/dbus-transport.c:
	Basic abstraction for different kinds of stream
	that we might read/write messages from.

2002-11-23  Havoc Pennington  <hp@pobox.com>

	* 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-test.h as intended

	* 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,
	with docs and tests

	* dbus/dbus-hash.c: add TODO item about shrinking the hash bucket
	array sometimes.

2002-11-23  Havoc Pennington  <hp@pobox.com>

	* Doxyfile.in (INCLUDE_FILE_PATTERNS): expand DBUS_BEGIN_DECLS/
	DBUS_END_DECLS to nothing, that should fix this once and for all

	* Doxyfile.in (JAVADOC_AUTOBRIEF): set to YES

	* dbus/dbus-message.c, dbus/dbus-hash.c:
	add some missing @brief

2002-11-23  Havoc Pennington  <hp@pobox.com>

	* 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
	internals docs

2002-11-23  Havoc Pennington  <hp@pobox.com>

	* configure.in: pile on more warning flags if using gcc

	* 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
	looks nice and attractive

	* 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-hash.c

	* dbus/dbus-internals.h: file to hold some internal utility stuff

2002-11-22  Havoc Pennington  <hp@redhat.com>

	* 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

2002-11-22  Havoc Pennington  <hp@redhat.com>

	* dbus/dbus.h: fixups for doc warnings

	* Doxyfile.in (FILE_PATTERNS): we need to scan .h to pick up
	macros
	(QUIET): make it quiet so we can see warnings

	* dbus/dbus-memory.c: teach D-BUS to allocate and free memory

2002-11-22  Havoc Pennington  <hp@redhat.com>

	* Makefile.am: include "Doxyfile" target in all-local

	* configure.in: generate the Doxyfile

	* 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  <hp@redhat.com>

	* dbus/dbus-message.c: move inline docs into .c file

	* 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,
	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  <hp@pobox.com>

	* 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  <zack@kde.org>

	* 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)

	* dbus/dbus.h : Adding sample docs

2002-11-21  Havoc Pennington  <hp@redhat.com>

	* 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
	via dbus.h

	* dbus/dbus-macros.h: new file with macros for extern "C",
	TRUE/FALSE, NULL, etc.

	* doc/file-boilerplate.c: put include guards in here

2002-11-21  Havoc Pennington  <hp@redhat.com>

	* doc/file-boilerplate.c: include both AFL and GPL boilerplate.

	* COPYING: include the GPL as well, and license code
	under both AFL and GPL.

2002-11-21  Havoc Pennington  <hp@redhat.com>

	* acconfig.h: get rid of this

	* autogen.sh (run_configure): add --no-configure option

	* configure.in: remove AC_ARG_PROGRAM to make
	autoconf complain less. add AC_PREREQ.
	add AC_DEFINE third arg.

2002-11-21  Anders Carlsson  <andersca@codefactory.se>

	* doc/Makefile.am:
	Fix references so we can distcheck.

2002-11-21  Havoc Pennington  <hp@redhat.com>

	* Initial module creation

