Commit graph

1525 commits

Author SHA1 Message Date
John (J5) Palmieri
a107da8489 * 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-26 15:55:44 +00:00
Sjoerd Simons
36608068cf 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-25 16:42:37 +00:00
David Zeuthen
2a78603b0e 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 21:28:57 +00:00
Thiago Macieira
9bb44a470f * 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-24 20:25:01 +00:00
David Zeuthen
cb905b58f0 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-23 17:25:52 +00:00
Havoc Pennington
8ea5a53324 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-22 15:03:10 +00:00
Havoc Pennington
8de13aed87 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-22 00:31:08 +00:00
Havoc Pennington
24083e8f07 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 23:38:11 +00:00
Havoc Pennington
bf172ce4c5 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 23:09:18 +00:00
Havoc Pennington
58a0d2759a 2006-10-21 Havoc Pennington <hp@redhat.com>
* More documentation - all public API now documented according to
	Doxygen
2006-10-21 21:57:31 +00:00
Havoc Pennington
fed8880c6f 2006-10-21 Havoc Pennington <hp@redhat.com>
* Document a bunch of undocumented stuff
2006-10-21 18:51:30 +00:00
Havoc Pennington
e19ebac55d 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 18:17:02 +00:00
Havoc Pennington
716059087d 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 17:43:30 +00:00
Havoc Pennington
174c63f176 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 17:21:45 +00:00
Havoc Pennington
afa4ffbd85 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-21 17:08:08 +00:00
Havoc Pennington
ebb239648b 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-20 05:16:58 +00:00
Havoc Pennington
2a895edf6b 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-20 03:42:03 +00:00
Havoc Pennington
15ef0ef6fb 2006-10-19 Havoc Pennington <hp@redhat.com>
* Fix a pile of Doxygen warnings and missing docs
2006-10-20 03:05:00 +00:00
John (J5) Palmieri
fe1f793a4f * 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 19:43:05 +00:00
John (J5) Palmieri
eb357c5ff9 * bus/messagebus.in, bus/rc.messagebus.in: run dbus-uuidgen --ensure
when starting the system bus
2006-10-19 15:34:47 +00:00
John (J5) Palmieri
fa38150865 * configure.in: More fixups for cross compile (Patch from
Marco Pracucci <development at pracucci dot com>)
2006-10-18 20:28:26 +00:00
Havoc Pennington
89d97b4779 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 22:31:16 +00:00
Havoc Pennington
a947713c35 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 21:04:12 +00:00
Havoc Pennington
f1ca9b89e9 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-17 20:52:13 +00:00
John (J5) Palmieri
3026a5ed19 * configure.in: Released 1.0 RC 2(0.94)
Add check for -fPIC and enable it if available
2006-10-14 17:38:56 +00:00
John (J5) Palmieri
2dd42bd7f5 * doc/TODO: Remove the check TODO item 2006-10-14 16:25:53 +00:00
John (J5) Palmieri
100bcd1212 * 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 21:12:24 +00:00
John (J5) Palmieri
92222fc5f9 * configure.in: when checking for posix getpwnam_r assume true
for cross compiles
2006-10-13 20:32:48 +00:00
John (J5) Palmieri
f602dcb89a * configure.in: Check for gethostbyname first before we check for it
in libnsl.  On gnu systems it is implemeneted
2006-10-13 20:01:16 +00:00
Havoc Pennington
2f2a3334de 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-13 16:26:47 +00:00
John (J5) Palmieri
6d34310b42 * configure.in: use AC_TRY_COMPILE for dirfd instead of AC_TRY_RUN 2006-10-12 01:05:16 +00:00
John (J5) Palmieri
2db06dbf18 * test/name-test/Makefile.am: don't link against both libdbus and
libdbus-convenience
2006-10-11 17:30:58 +00:00
John (J5) Palmieri
77aab542eb * configure.in: check for dirfd even if it is a macro
(Patch from Timothy Redaelli <drizzt at gufi dot org>)
2006-10-11 17:29:01 +00:00
John (J5) Palmieri
c6465198ec * 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-08 16:56:50 +00:00
John (J5) Palmieri
ff99239bd4 * 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 18:45:27 +00:00
John (J5) Palmieri
254524928a * 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 15:43:48 +00:00
Thiago Macieira
c6e066ff82 * 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 22:21:30 +00:00
Havoc Pennington
10fe37f582 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 20:05:39 +00:00
Havoc Pennington
7020b57376 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 17:21:03 +00:00
Havoc Pennington
eb1e11babd 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 16:11:24 +00:00
Havoc Pennington
a2129f7ccc 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-10-01 15:36:19 +00:00
Havoc Pennington
eef10bc3c4 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-10-01 03:34:21 +00:00
Havoc Pennington
d8155bf51b 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-10-01 03:18:47 +00:00
Thiago Macieira
f6fa010403 * 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-30 19:38:34 +00:00
John (J5) Palmieri
5f292c611f * tools/Makefile.am: use @EXPANDED_DATADIR@ instead of @DATADIRNAME@ 2006-09-18 17:17:41 +00:00
Havoc Pennington
1ececca7e1 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-17 17:11:31 +00:00
Havoc Pennington
fe4715b656 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 19:24:08 +00:00
Havoc Pennington
e001455a03 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 18:46:48 +00:00
Havoc Pennington
8027efc97b voc 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 17:38:24 +00:00
Havoc Pennington
d0971c53df 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 15:49:27 +00:00