Commit graph

3027 commits

Author SHA1 Message Date
Scott James Remnant
ecea18c7b2 Don't allocate DBusTimeout for pending call when passed INT_MAX
* dbus/dbus-pending-call.c (_dbus_pending_call_new_unlocked): When passed
  INT_MAX, do not clamp the value and do not allocate a timeout for the call
  (_dbus_pending_call_get_timeout_unlocked): Document that this may return
  NULL.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
(cherry picked from commit 92dd55c903)
2009-07-14 15:37:32 -04:00
Scott James Remnant
1617081d91 Allow a pending call to block forever
* dbus/dbus-connection.c (_dbus_connection_block_pending_call): Allow the
  pending call to have no timeout, in which case we simply block until we
  complete, have data or get disconnected.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
(cherry picked from commit e5eb472d11)
2009-07-14 15:36:25 -04:00
Scott James Remnant
dd63302d72 Make sure a pending call timeout isn't assumed.
* dbus/dbus-connection.c (_dbus_connection_attach_pending_call_unlocked):
  Don't assume that the pending call has a timeout.
  (connection_timeout_and_complete_all_pending_call_unlocked): check that
  the timeout was actually added before removing it; this safeguards us
  if the pending call doesn't have a timeout.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
(cherry picked from commit ba22606c3b)
2009-07-14 15:36:03 -04:00
Colin Walters
70c5285eb4 Cope with dbus-launch not being in DBUS_BINDIR
This is a temporary hack for systems which use DBUS_BINDIR=/bin,
but then move dbus-launch back into /usr/bin.  Longer term,
we should explicitly support this in upstream code, or even better
figure out how to move dbus-launch into /bin (e.g. dynamically
load libX11 if available), or have a --with-x11-tools configure
option.
2009-07-14 11:43:54 -04:00
Hasso Tepper
7bf132c7d1 Bug 19432 - Fix handling of HAVE_CMSGCRED case (FreeBSD)
Fixes dbus on FreeBSD and DragonFly systems.

The patch is obtained from FreeBSD ports tree.

Signed-off-by: Colin Walters <walters@verbum.org>
2009-07-13 14:26:05 -04:00
Daniel Reed
e4b271e242 Bug 2432 - Support --address option for dbus-monitor
Signed-off-by: Colin Walters <walters@verbum.org>
2009-07-13 14:06:41 -04:00
Grzegorz Dąbrowski
97c58ace43 Bug 19446 - HaikuOS support
Signed-off-by: Colin Walters <walters@verbum.org>
2009-07-13 13:53:38 -04:00
Paul Bolle
249f89181c Bug 16688 - typo in dbus-monitor.1
s/dbus_bus_add_watch/dbus_bus_add_match/

Signed-off-by: Colin Walters <walters@verbum.org>
2009-07-13 13:35:48 -04:00
Colin Walters
f908daed82 Bug 22415 - COYPING file should note we allow later versions of GPL
The canonical copyright information in the source file says we
allow later versions of the GPL.  So note that in COPYING too.
2009-07-13 13:11:20 -04:00
Colin Walters
0e36cdd549 Bug 896 - Avoid race conditions reading message from exited process
Patch based on extensive work from Michael Meeks <michael.meeks@novell.com>,
thanks to Dafydd Harries <dafydd.harries@collabora.co.uk>,
Kimmo Hämäläinen <kimmo.hamalainen@nokia.com> and others.

The basic idea with this bug is that we effectively ignore errors
on write.  Only when we're done reading from a connection do we
close down a connection.  This avoids a race condition where
if a process (such as dbus-send) exited while we still had
data to read in the buffer, we'd miss that data.
2009-07-13 13:07:12 -04:00
Colin Walters
6b163e95e7 Bug 14259 - Refactor _dbus_get_autolaunch_address
Split out the process-launching code, which can be reused for
other applications; in particular, a forthcoming patch to parse
output from launchd for MacOS X.
2009-07-13 13:02:21 -04:00
Colin Walters
6478ec6949 Bug 14259 - Make session address lookup system-dependent
On some platforms such as MacOS X and Windows, we can't depend
on an environment variable to determine the address of the
session bus.  Create a sysdep function dbus_lookup_session_address
which can be filled in with platform-specific code.
2009-07-13 12:47:19 -04:00
Benjamin Reed
c71403ddde Bug 14259 - Work around broken getgrouplist on MacOS X
We don't get the number of groups, so allocate an arbitrary
larger array.

Signed-off-by: Colin Walters <walters@space-ghost.verbum.org>
2009-07-13 11:21:08 -04:00
Kimmo Hämäläinen
ccfa8e5154 Bug 12484 - Ensure initialized variable in dbus_connection_remove_filter
Signed-off-by: Colin Walters <walters@space-ghost.verbum.org>
2009-07-13 06:31:35 -04:00
Colin Walters
ae24bb35e2 Bug 18121 - Use a monotonic clock for pthread timeouts
Patch based on one from Keith Mok <ek9852@gmail.com>, some
followup work from Janne Karhunen <Janne.Karhunen@gmail.com>.

We don't want condition variable timeouts to be affected by the system clock.
Use the POSIX CLOCK_MONOTONIC if available.
2009-07-10 22:57:08 -04:00
Matthias Clasen
f4e15893e5 Bug 22516 - Ensure inotify fd is set close on exec
This prevents it leaking into spawned child processes.

Signed-off-by: Colin Walters <walters@verbum.org>
2009-07-10 20:11:22 -04:00
Colin Walters
98bbe8c794 Bug 21545 - Move CFLAGS modification towards the end of configure
This prevents the flags from screwing up autoconf tests.
2009-07-10 20:07:34 -04:00
Will Thompson
9f825271f9 Ensure messages are locked while marshalling.
Locking a message has the side-effect of updating the message's length
header. Previously, if dbus_message_marshal() was called on an unlocked
message, it could yield an invalid message (as discovered by Ben
Schwartz in <http://bugs.freedesktop.org/show_bug.cgi?id=19723>).
2009-07-10 19:43:37 -04:00
Christian Persch (GNOME)
fe86222d10 Bug 21657 - Fix configure checks for va_list in maintainer mode
Include the right headers.
2009-07-10 19:40:00 -04:00
Tobias Mueller
5baf2f856a Bug 21161 - Update the FSF address
No comment.

Signed-off-by: Colin Walters <walters@verbum.org>
2009-07-10 19:32:38 -04:00
Colin Walters
1f6ac4deef Bug 21646 - Fix a signed char comparison
Original suggested patch from Marc-Andre Lureau <marcandre.lureau@gmail.com>

Explicitly cast to unsigned char before we do comparisons.
2009-07-10 19:26:52 -04:00
Colin Walters
e5310abd6c Add missing include for unistd.h in test-service.c
We use usleep here.
2009-07-10 19:22:54 -04:00
Kurt Miller
644fc38b24 Bug 21347 - Don't fail autolaunching if process has SIGCHLD handler
If other code in the process set a global SIGCHLD handler, it
will make autolaunching fail spuriously due to waitpid() failing.

This fix will temporarily block SIGCHLD delivery.

Signed-off-by: Colin Walters <walters@verbum.org>
2009-07-10 19:19:28 -04:00
Scott James Remnant
3f07008823 dbus_message_append_args_valist - abandon container
In case of OOM when constructing an array, we should abandon the
container to free the resources.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-07-09 16:35:13 +01:00
Scott James Remnant
e57a368c44 bfo22316 - add dbus_message_iter_abandon_container()
It's not currently possible to abandon creation of a container without
either hitting asserts or leaking memory.  This new function allows
that.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-07-09 16:34:54 +01:00
Scott James Remnant
4bea3ca2b0 Add test case for assert when unwinding a container.
* dbus/dbus-message-util.c: when constructing an array of structures,
it's not possible to unwind in case of an error part-way through.
This test will therefore assert.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-07-09 16:28:29 +01:00
Scott James Remnant
0ee5d8e155 Bump configure.in for GIT
Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-07-09 16:23:43 +01:00
Scott James Remnant
c1f165261a Add tests for pending call timeouts
* test/test-service.c (handle_delay_echo, path_message_func): Add a
  variant of the Echo method which sleeps for a short time.
* test/name-test/test-pending-call-timeout.c: Run tests with default,
  specified and infinite timeout to make sure we get the reply.
* test/name-test/run-test.sh: Run the new test
* test/name-test/Makefile.am: Build the new test

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:38 +02:00
Scott James Remnant
bd2063e17e Unrestrict session bus timeout.
* bus/session.conf.in: Remove the reply_timeout stanza, previously
  intended to increase the reply timeout, this now reduces it.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:37 +02:00
Scott James Remnant
8f1d2a2fa8 Change default reply timeout.
* bus/config-parser.c (bus_config_parser_new): change the default reply
  timeout to "never"

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:36 +02:00
Scott James Remnant
d672d03206 Expire list timeout may be negative for no expiry.
* bus/expirelist.c (do_expiration_with_current_time): Don't check for
  expiry if expire_after is negative, will just disable the expiry timer
  after the call.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:35 +02:00
Scott James Remnant
d33cfec625 Explicitly check for zero time fields.
* bus/expirelist.c (do_expiration_with_current_time): If the item added
  time fields are both zero, always expire.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:35 +02:00
Scott James Remnant
7398ad7374 Remove 6 hour timeout restriction.
* dbus/dbus-pending-call.c (_dbus_pending_call_new_unlocked): Now that
  the timeout math won't overflow, don't clamp to six hours.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:34 +02:00
Scott James Remnant
1faa92114f Fix issue where timeouts can overflow.
* dbus/dbus-connection.c (_dbus_connection_block_pending_call): Rework
  the timeout math so instead of calculating an end time, which may
  overflow, we instead calculate the elapsed time which is always
  smaller than the boundaries.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:33 +02:00
Scott James Remnant
ce0d932d9b Update documentation now that INT_MAX means no timeout.
* dbus/dbus-connection.c (dbus_connection_send_with_reply): Fix
  documentation now that INT_MAX will not be clamped.
  (dbus_connection_send_with_reply_and_block): Update documentation too.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:32 +02:00
Scott James Remnant
92dd55c903 Don't allocate DBusTimeout for pending call when passed INT_MAX
* dbus/dbus-pending-call.c (_dbus_pending_call_new_unlocked): When passed
  INT_MAX, do not clamp the value and do not allocate a timeout for the call
  (_dbus_pending_call_get_timeout_unlocked): Document that this may return
  NULL.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:31 +02:00
Scott James Remnant
e5eb472d11 Allow a pending call to block forever
* dbus/dbus-connection.c (_dbus_connection_block_pending_call): Allow the
  pending call to have no timeout, in which case we simply block until we
  complete, have data or get disconnected.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:30 +02:00
Scott James Remnant
ba22606c3b Make sure a pending call timeout isn't assumed.
* dbus/dbus-connection.c (_dbus_connection_attach_pending_call_unlocked):
  Don't assume that the pending call has a timeout.
  (connection_timeout_and_complete_all_pending_call_unlocked): check that
  the timeout was actually added before removing it; this safeguards us
  if the pending call doesn't have a timeout.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-05-28 11:47:21 +02:00
Lennart Poettering
89f70b1949 bus: don't forward messages with unix fds on connections that don't support it
This simply verifies that we forward unix fds only on connection that
support it. We willr eturn an error if a client attempts to send a
message with unix fds to another client that cannot do it.
2009-05-21 01:21:35 +02:00
Lennart Poettering
724adb2f61 doxygen: document that we don't support reading/writing arrays of unix fds in once piece right now 2009-05-20 23:48:46 +02:00
Lennart Poettering
869291ea5a doc: document Unix FD passing in the specification 2009-05-20 03:01:37 +02:00
Lennart Poettering
64ad844967 bus: make use of new unix fd limits
Create configuration settings and enforce message unix fd limits the
same way we do for allocated message memory.
2009-05-20 02:10:17 +02:00
Lennart Poettering
bfad32422f unix-fd: add logic to count unix fds the same way as allocated memory
This make all counters count both bytes of memory and unix fds.
2009-05-20 02:09:32 +02:00
Lennart Poettering
ec901d786f byteswap: make use of glibc specific bytswap primitives
glibc knows three bswap_{16|32|64}() calls that internally make use of a
gcc extension to implement faster byteswapping. We should make use of it
if we can.
2009-05-20 02:09:32 +02:00
Lennart Poettering
9293e82376 atomic: implement atomic operations based on gcc's __sync extension
Newer gccs and intel ccs support a __sync extension for making use of
atomic operations. This patch replaces the handcrafted x86 atomic
operation support with usage of __sync.

__sync is supported by more processors and by more compilers than the
old assembler code. Also, this extension has been available on gcc for
quite a while now for x86, so replacing the old assembler code should
only be a loss when very old compiilers are used.
2009-05-20 02:09:32 +02:00
Lennart Poettering
74bff5af80 git: enable whitespace checking commit hook during in autogen.sh
Trailing whitespace sucks. This change modifies autogen.sh to activate
the example pre-commit that ships with git. It will make sure that from
then on no further commits with trailing whitespace can be made
2009-05-20 02:09:32 +02:00
Lennart Poettering
cbf0874f01 memset: replace memset() by _DBUS_ZERO where applicable 2009-05-20 02:09:31 +02:00
Lennart Poettering
c200e0304d auth: add fd passing negotiation support
This adds two new directives to the auth protocol:

NEGOTIATE_UNIX_FD is sent by the client after the authentication was
sucessful, i.e. OK was received.

AGREE_UNIX_FD is then sent by the server if it can do unix fd passing as
well.

ERROR is returned when the server cannot or is unwilling to do unix fd
passing.

This should be compatible with existing D-Bus implementations which will
naturally return ERROR on NEGOTIATE_UNIX_FD.
2009-05-20 02:09:31 +02:00
Lennart Poettering
89318bbeb4 cloexec: set all sockets that are created with SOCK_CLOEXEC
Since all socket users enable FD_CLOEXEC anyway we can just do that in
_dbus_open_socket() and be done with it for all cases. By side effect
this allows us to use SOCK_CLOEXEC and hence close the CLOEXEC race.
2009-05-20 02:09:31 +02:00
Lennart Poettering
3c319c7193 cloexec: make use of pipe2(O_CLOEXEC) when available
This should fix another CLOEXEC race.
2009-05-20 02:09:31 +02:00