Commit graph

3271 commits

Author SHA1 Message Date
Simon McVittie
1d8abcd4d2 Remove declaration of _dbus_type_is_fixed, no longer exists
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=46095
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
2012-02-21 14:51:05 +00:00
Simon McVittie
1e0f4b52bf _dbus_verbose_real: tidy conditional prototype to not break nesting
The mismatched opening parenthesis caused vim syntax highlighting to
consider every subsequent brace in the file to be an error, which was
pretty annoying.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=46095
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
2012-02-21 14:50:39 +00:00
Simon McVittie
bed34738fc Remove _dbus_condvar_wake_all and both of its implementations
Neither was used, and the Windows version could lead to live-locks.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=43744
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=44609
Reviewed-by: Thiago Macieira <thiago@kde.org>
2012-02-21 14:41:44 +00:00
Simon McVittie
8d2b313158 Never use non-libdbus threading primitives
This lets us simplify considerably, by assuming that we always have both
recursive and suitable-for-condition-variable mutexes.

The Windows implementation has been compiled (on 32-bit mingw-w64)
but not tested. Justification for the approach used on Windows,
and in particular, using the existing "non-recursive" locks as if
they were recursive:

* We've been using them in conjunction with condition variables all
  along, so they'd better be suitable

* On fd.o #36204, Ralf points out that mutexes created via CreateMutex
  are, in fact, recursive

* Havoc's admonitions about requiring "Java-style" recursive locking
  (waiting for a condition variable while holding a recursive lock
  requires releasing that lock n times) turn out not to apply to
  either of our uses of DBusCondVar in DBusConnection, because the
  lock is only held for a short time, without calling into user code;
  indeed, our Unix implementation isn't recursive anyway, so if
  the Windows implementation reaches the deadlocking situation
  somehow (waiting for condition variable while locked more than once),
  the Unix implementation would already have deadlocked on the same
  code path (trying to lock more than once)

One possible alternative to a CreateMutex mutex for use with condition
variables would be a CRITICAL_SECTION. I'm not going to implement this,
but Windows developers are welcome to do so.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36204
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=43744
Reviewed-by: Thiago Macieira <thiago@kde.org>
2012-02-21 14:41:40 +00:00
Simon McVittie
0be00e6c56 dbus-threads: improve documentation
This reinstates documentation for _dbus_mutex_new() and
_dbus_mutex_free(), and fixes some typos spotted during review.
It also documents the newly-introduced functions.

Reviewed-by: Thiago Macieira <thiago@kde.org>
2012-02-21 14:41:33 +00:00
Simon McVittie
f025158dd9 Use actual recursive pthreads mutexes, rather than NIH'ing them, wrong
Very loosely based on a patch from Sigmund Augdal.

For the moment, we make PTHREAD_MUTEX_RECURSIVE a hard requirement:
it's required by POSIX 2008 Base and SUSv2.

If your (non-Windows) platform doesn't have PTHREAD_MUTEX_RECURSIVE,
please report a bug on freedesktop.org bugzilla with details of the
platform in question.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=43744
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2012-02-21 14:41:31 +00:00
Simon McVittie
f85ca5fac1 Allow both recursive and non-recursive mutexes to be supplied
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=43744
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2012-02-21 14:41:28 +00:00
Simon McVittie
8a58250acf Distinguish between two flavours of mutex
dbus-threads.h warns that recursive pthreads mutexes are not compatible
with our expectations for condition variables. However, the only two
condition variables we actually use only have their corresponding
mutexes locked briefly (and we don't call out to user code from there),
so the mutexes don't need to be recursive anyway. That's just as well,
because it turns out our implementation of recursive mutexes on
pthreads is broken!

The goal here is to be able to distinguish between "cmutexes" (mutexes
compatible with a condition variable) and "rmutexes" (mutexes which
are recursive if possible, to avoid deadlocking if we hold them while
calling user code).

This is complicated by the fact that callers are not guaranteed to have
provided us with both versions of mutexes, so we might have to implement
one by using the other (in particular, DBusRMutex *aims to be*
recursive, it is not *guaranteed to be* recursive).

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=43744
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2012-02-21 14:41:25 +00:00
Simon McVittie
4d4da20ce7 Make _dbus_mutex_new, _dbus_mutex_free static
They're only called within their module.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=43744
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2012-02-21 14:41:05 +00:00
Ralf Habacker
e90b160011 Fixed runtime error caused by using uninitialized variable detected with msvc build.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=46335
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2012-02-20 12:47:55 +00:00
Simon McVittie
1eba10ad37 Merge branch 'dbus-1.4'
Conflicts:
	NEWS
2012-02-20 11:32:44 +00:00
Simon McVittie
302c35b03f NEWS for 1.4 2012-02-20 11:31:53 +00:00
Marc Mutz
51b88b4c79 dbus-protocol.h: compile under C++11
C++11 compilers have a feature called 'user-defined string literals' which
allow arbitrary string suffixes to have user-defined meaning.

This makes code that concatenates macros with string literals without
intervening whitespace illegal under C++11. Fortunately, string literal
concatenation has allowed intervening whitespace since the dawn of time,
so the solution is to simply pad with spaces.

Tested (header) with GCC 4.7 (trunk).

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=46147
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2012-02-20 11:23:15 +00:00
Simon McVittie
41116034b2 NEWS 2012-02-14 16:31:39 +00:00
Simon McVittie
2e15443744 dbus-send.1: document --reply-timeout
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=14005
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-14 16:16:01 +00:00
Simon McVittie
666344fc67 dbus-send.1, dbus-send: document --print-reply=literal consistently
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=14005
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-14 16:15:59 +00:00
Simon McVittie
f5c7892c66 dbus-send.1: use bold and italic type consistently
According to man-pages(7)

* bold is for literal text, the name of the thing being documented,
  or the name of another man page

* italic is for replaceable text, usually in all-caps

* normal type (in the SYNOPSIS) is for special syntax like the []
  indicating optional things

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=14005
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-14 16:15:42 +00:00
Simon McVittie
a4d68a7687 more NEWS 2012-02-13 17:57:23 +00:00
Simon McVittie
9a654d2529 add and use _dbus_connection_trace_ref
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:56 +00:00
Simon McVittie
0136f318f0 add and use _dbus_server_trace_ref
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:54 +00:00
Simon McVittie
7ba7b9a931 add and use _dbus_pending_call_trace_ref
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:52 +00:00
Simon McVittie
926496567a Add and use _dbus_message_trace_ref
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:50 +00:00
Simon McVittie
566a841664 Provide a hook to allow refcounting to be traced
This is designed to be used from a wrapper function, partly to supply
the same arguments every time for a particular class of object, and partly
to provide a more specific gdb breakpoint. It has several purposes:

* when under gdb, provide a function which can be used in breakpoints
* when not under valgrind and DBUS_MESSAGE_TRACE=1 is set, emit a
  _dbus_verbose when a message's refcount changes
* when under valgrind and DBUS_MESSAGE_TRACE=1 is set, emit a
  VALGRIND_PRINTF_BACKTRACE when a message's refcount changes,
  which lets you see the complete history of each message to track down
  reference leaks

Compile-time support is currently conditional on DBUS_ENABLE_VERBOSE_MODE,
but could be separated out if desired.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:46 +00:00
Simon McVittie
d571e70a53 dbus_message_cache_or_finalize: allow message cache to be disabled at runtime
This should make it easier to diagnose message-related ref leaks,
use-after-free, etc. with Valgrind: for optimal results (and pessimal
performance), we want to avoid re-using memory blocks for as long as
possible.

For now this is conditional on DBUS_BUILD_TESTS. It could get its own
conditional if desired.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:37 +00:00
Simon McVittie
01e3c41d75 DBusMemPool: inform valgrind what we're up to
If we tell valgrind what we're doing, it can give better diagnostics.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:34 +00:00
Simon McVittie
b3f2ee5c6b Add support for inserting (a subset of) Valgrind client requests
If valgrind support is disabled, we define stub versions of the
Valgrind client requests I plan to use, so the actual code doesn't
need #ifdef hell.

[With unnecessary AC_SUBST removed as per Lennart's review -smcv]

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:54:21 +00:00
Simon McVittie
05cc2c3348 Replace a series of booleans, all (apparently) alike, with flags
This makes it a bit clearer what's going on.

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:39:16 +00:00
Simon McVittie
267dbff1ea NEWS 2012-02-13 17:37:56 +00:00
Simon McVittie
b69119c1e2 _dbus_string_append_double, _dbus_string_parse_double: remove
They're unused, except by their own regression tests.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:37:39 +00:00
Simon McVittie
7a33565d3f _dbus_string_append_unichar, _dbus_string_get_unichar: remove
These are unused (except by their regression test!) and not visible to
external callers.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:37:32 +00:00
Simon McVittie
75e6fdc4e2 _dbus_list_pop_last_link: remove, unused
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-13 17:37:02 +00:00
Simon McVittie
e70eea5715 Merge branch 'dbus-1.4'
Conflicts:
	NEWS
	configure.ac
2012-02-13 17:36:51 +00:00
Simon McVittie
88f5a6ed15 Back to development status 2012-02-13 17:19:13 +00:00
Simon McVittie
e6338646c1 Release D-Bus 1.4.18 2012-02-13 16:23:50 +00:00
Pavel Strashkin
fc124e6ab0 dbus-daemon: fix forgotten counter increase while copying configured auth mechanisms
Previously, only one auth mechanism was used.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45106
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2012-02-13 16:19:14 +00:00
Simon McVittie
92e7b08b19 Revert "dbus-daemon: fix forgotten counter increase while copying configured auth mechanisms"
This reverts commit 26b57efe43.
It was incorrectly attributed.
2012-02-13 16:18:11 +00:00
Simon McVittie
26cc04e2fa _dbus_connection_queue_received_message: remove, unused
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 14:37:44 +00:00
Simon McVittie
471bf90599 DBUS_HASH_TWO_STRINGS, DBUS_HASH_POINTER: remove, unused
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 14:37:44 +00:00
Simon McVittie
10143a9c96 _dbus_list_insert_before: remove, unused
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 14:37:44 +00:00
Simon McVittie
597d5ad06e _dbus_header_field_to_string: remove, unused
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 14:37:44 +00:00
Simon McVittie
54bf2bd92c Remove unused _dbus_string_append_4_aligned, _dbus_string_append_8_aligned
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 14:37:41 +00:00
Simon McVittie
0fe2583e71 _dbus_getgid: remove, unused
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39759
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 14:37:05 +00:00
Simon McVittie
b1cff7e6eb NEWS 2012-02-10 13:49:00 +00:00
Lennart Poettering
6056a3d662 spec: document systemd transport
This adds a short section about the systemd transport to the
specification.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=35232
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2012-02-10 13:44:20 +00:00
Simon McVittie
a4805aac4f NEWS for recently-merged branches 2012-02-10 10:28:59 +00:00
Simon McVittie
21c8094040 Merge branch 'system-search-paths-21620'
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=21620
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 10:10:38 +00:00
Simon McVittie
349260f245 Merge branch 'doc-search-paths-35306'
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=35306
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 10:10:17 +00:00
Simon McVittie
818e62f15f Merge branch 'reversed-dns-37095'
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37095
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2012-02-10 10:09:38 +00:00
Lennart Poettering
a8423067ce bus: introduce --nopidfile switch to disable writing of PID files
When used with init systems such as systemd (where PID files are
redundant) this allows us to disable PID files even if a path is
configured for them in the normal bus configuration files.

Make use of this new switch in the systemd unit file.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45520
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2012-02-10 10:07:24 +00:00
Ralf Habacker
dd4038156d Windows compile fix
BUG: https://bugs.freedesktop.org/show_bug.cgi?id=45832
2012-02-09 14:58:43 +01:00