unknown [Mon, 22 Mar 2010 09:38:38 +0000 (10:38 +0100)]
Make the windows binaries and build match the linux one with cmake buildsystem.
This is performed by including the files from the client lib in the internal one
and by removing the linking to dbus-1 for targets using the internal library.
Ralf Habacker [Sat, 20 Mar 2010 21:30:16 +0000 (22:30 +0100)]
CMake dbus libraries usage cleanup.
Renamed DBUS_LIBRARIES to DBUS_INTERNAL_LIBRARIES and moved to top level CMakeLists.txt.
Removed obsolate references of dbus-internal library.
Added DBUS_LIBRARIES definition which contains only the dbus library.
Will Thompson [Thu, 4 Feb 2010 20:24:54 +0000 (20:24 +0000)]
Dispatch post-activation messages to anyone interested
Previously, if a method call activated a service, it would only be
delivered to that service, and not to other services with match rules
which should match. This patch replaces the improperly-duplicated
dispatch code in activation.c with a call back into the normal dispatch
code, fixing this bug (fd.o#26427).
(Additionally, were one to service-activate a service that doesn't
understand file descriptors with a message containing a file descriptor,
the previous code would send it anyway, and the service's dbus library
would blow up. This is also fixed here, since the normal dispatch code
checks this correctly.)
Previously we detected glibc support at compile time and used
it unconditionally; better to try it and fall back, this way
we continue to run on older kernels when compiled for newer ones.
Previously, the watch handler would block until the I/O path was available.
However, if another non-main thread was doing a synchronous call, this would
cause the main thread to block on that thread, a highly undesirable
thing because it's important for the main thread to remain responsive
for user interfaces.
Signed-off-by: Colin Walters <walters@verbum.org> Signed-off-by: Thiago Macieira <thiago@kde.org>
Colin Walters [Thu, 18 Feb 2010 20:33:28 +0000 (15:33 -0500)]
Monitor service directories for changes
It's not expected to have to manually SIGHUP the bus after installing
a new .service file. Since our directory monitoring is already set
up to queue a full reload which includes service activation, simply
monitor the servicedirs too.
Ralf Habacker [Wed, 10 Feb 2010 08:26:52 +0000 (09:26 +0100)]
fixed xml doc generating for cmake build system - supported docbook generator is currently kde's meinproc4, xmlto may also work but need still some checks
Ralf Habacker [Tue, 9 Feb 2010 07:37:50 +0000 (08:37 +0100)]
fixed bug on win32 not been able to use session bus with --config-file option
Internal setup of session bus type was bound to the presence of the --session
command line parameter which prevents to use the --config-file parameter for
session bus setup.
add the LIBRARY header in the .def file, but for mingw only, msvc doesn't support it anymore. It's still needed when creating a .lib from a mingw-built dll
now fix the build for the tests; turns out we need another set of exports, since some tests are compiled in the client lib and some are in the internal lib...
refactor the cmake build to match with autotools: only export client symbols in dbus-1 and use and internal library for the rest. Currently this library is statically linked to the apps but it can be made dynamic if wanted
Colin Walters [Tue, 2 Feb 2010 17:37:17 +0000 (12:37 -0500)]
Fix inotify shutdown
We were incorrectly passing NULL for a DBusList when the usage expected
is a pointer to a NULL DBusList pointer. Also during dbus_shutdown
we need to actually close the inotify fd, and remove our watch.
Move the shutdown handler out of bus.c and into inotify where we
can do all of this cleanly.
(cherry picked from commit 90fe96b1875350f86a4a773d4a0a22009950dd4d)
Colin Walters [Wed, 3 Feb 2010 07:36:38 +0000 (08:36 +0100)]
Fix compilation in --disable-selinux case
_dbus_change_to_daemon_user moved into selinux.c for the --with-selinux
(and audit) case because that's where all of the relevant libcap headers
were being used. However in the --disable-selinux case this didn't
compile and wasn't very clean.
If we don't have libaudit, use the legacy direct setgid/setuid bits
we had before in dbus-sysdeps-util-unix.c.
Colin Walters [Tue, 2 Feb 2010 19:57:47 +0000 (14:57 -0500)]
Fix compilation in --disable-selinux case
_dbus_change_to_daemon_user moved into selinux.c for the --with-selinux
(and audit) case because that's where all of the relevant libcap headers
were being used. However in the --disable-selinux case this didn't
compile and wasn't very clean.
If we don't have libaudit, use the legacy direct setgid/setuid bits
we had before in dbus-sysdeps-util-unix.c.
Colin Walters [Tue, 2 Feb 2010 17:37:17 +0000 (12:37 -0500)]
Fix inotify shutdown
We were incorrectly passing NULL for a DBusList when the usage expected
is a pointer to a NULL DBusList pointer. Also during dbus_shutdown
we need to actually close the inotify fd, and remove our watch.
Move the shutdown handler out of bus.c and into inotify where we
can do all of this cleanly.
Tom Hughes [Sun, 13 Dec 2009 21:30:09 +0000 (13:30 -0800)]
Use monotonic clock for _dbus_get_current_time() if it's available.
_dbus_get_current_time() is used for timeouts, but uses gettimeofday(), which
relies on the wall clock time, which can change. If the time is changed forwards
or backwards, the timeouts are no longer valid, so the monotonic clock must be used.
Colin Walters [Thu, 28 Jan 2010 21:26:39 +0000 (16:26 -0500)]
Clean up inotify watch handling
Substantially based on a patch by Matthias Clasen <mclasen@redhat.com>
kqueue implementation by Joe Marcus Clarke <marcus@freebsd.org>
Previously, when we detected a configuration change (which included
the set of config directories to monitor for changes), we would
simply drop all watches, then readd them.
The problem with this is that it introduced a race condition where
we might not be watching one of the config directories for changes.
Rather than dropping and readding, change the OS-dependent monitoring
API to simply take a new set of directories to monitor. Implicit
in this is that the OS-specific layer needs to keep track of the
previously monitored set.