summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--avahi-client/Makefile.am2
-rw-r--r--avahi-client/client.c39
-rw-r--r--configure.ac45
3 files changed, 67 insertions, 19 deletions
diff --git a/avahi-client/Makefile.am b/avahi-client/Makefile.am
index cdc4442..75e18a2 100644
--- a/avahi-client/Makefile.am
+++ b/avahi-client/Makefile.am
@@ -39,7 +39,7 @@ libavahi_client_la_SOURCES = \
browser.c \
resolver.c
-libavahi_client_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
+libavahi_client_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) -DDBUS_SYSTEM_BUS_DEFAULT_ADDRESS=\"$(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)\"
libavahi_client_la_LIBADD = $(AM_LDADD) $(DBUS_LIBS) ../avahi-common/libavahi-common.la ../avahi-common/libdbus-common-pic.la
libavahi_client_la_LDFLAGS = $(AM_LDFLAGS) -export-dynamic -version-info 1:0:1
diff --git a/avahi-client/client.c b/avahi-client/client.c
index bb623c0..27f7462 100644
--- a/avahi-client/client.c
+++ b/avahi-client/client.c
@@ -232,6 +232,43 @@ fail:
return e;
}
+/* This function acts like dbus_bus_get but creates a private
+ * connection instead */
+static DBusConnection*
+avahi_dbus_bus_get (DBusBusType type, DBusError *error)
+{
+ DBusConnection *conn;
+ char *env_addr;
+
+ env_addr = getenv ("DBUS_SYSTEM_BUS_ADDRESS");
+
+ if (env_addr == NULL || (strcmp (env_addr, "") == 0))
+ {
+ env_addr = DBUS_SYSTEM_BUS_DEFAULT_ADDRESS;
+ }
+
+ conn = dbus_connection_open_private (env_addr, error);
+
+ if (!conn)
+ {
+ printf ("Failed to open private connection: %s\n", error->message);
+ return NULL;
+ }
+
+ dbus_connection_set_exit_on_disconnect (conn, TRUE);
+
+ if (!dbus_bus_register (conn, error))
+ {
+ printf ("Failed to register connection\n");
+ dbus_connection_close (conn);
+ dbus_connection_unref (conn);
+
+ return NULL;
+ }
+
+ return conn;
+}
+
AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientCallback callback, void *userdata, int *ret_error) {
AvahiClient *client = NULL;
DBusError error;
@@ -261,7 +298,7 @@ AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientCallback cal
AVAHI_LLIST_HEAD_INIT(AvahiServiceTypeBrowser, client->service_type_browsers);
AVAHI_LLIST_HEAD_INIT(AvahiServiceResolver, client->service_resolvers);
- if (!(client->bus = dbus_bus_get(DBUS_BUS_SYSTEM, &error)) ||
+ if (!(client->bus = avahi_dbus_bus_get(DBUS_BUS_SYSTEM, &error)) ||
dbus_error_is_set (&error))
goto fail;
diff --git a/configure.ac b/configure.ac
index 2eca925..d53dc76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -184,8 +184,8 @@ if test "x$HAVE_GTK" = "xyes" ; then
AC_SUBST(GLADE20_CFLAGS)
AC_SUBST(GLADE20_LIBS)
- interfacesdir="${datadir}/${PACKAGE}/interfaces/"
- AC_SUBST(interfacesdir)
+ interfacesdir="${datadir}/${PACKAGE}/interfaces/"
+ AC_SUBST(interfacesdir)
fi
AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
@@ -202,21 +202,31 @@ AC_ARG_ENABLE(dbus,
[HAVE_DBUS=yes])
AC_ARG_WITH(dbus-sys, AS_HELP_STRING([--with-dbus-sys=<dir>], [where D-BUS system.d directory is]))
+AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-address=<address>], [where the dbus system socket is, you probably want to put unix:path= at the start]))
if test "x$HAVE_DBUS" = "xyes" ; then
- AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-BUS or not])
+ AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-BUS or not])
PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 0.30 ])
DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
AC_SUBST(DBUS_CFLAGS)
- AC_SUBST(DBUS_LIBS)
-
- if ! test -z "$with_dbus_sys" ; then
- DBUS_SYS_DIR="$with_dbus_sys"
- else
- DBUS_SYS_DIR="${sysconfdir}/dbus-1/system.d"
- fi
- AC_SUBST(DBUS_SYS_DIR)
+ AC_SUBST(DBUS_LIBS)
+
+ if ! test -z "$with_dbus_sys" ; then
+ DBUS_SYS_DIR="$with_dbus_sys"
+ else
+ DBUS_SYS_DIR="${sysconfdir}/dbus-1/system.d"
+ fi
+ AC_SUBST(DBUS_SYS_DIR)
+
+ if ! test -z "$with_dbus_system_address" ; then
+ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="$with_dbus_system_address"
+ else
+ # Note this default path is hardcoded in D-BUS and should
+ # not use $localstatedir
+ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
+ fi
+ AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
fi
AM_CONDITIONAL(HAVE_DBUS, test "x$HAVE_DBUS" = "xyes")
@@ -265,12 +275,12 @@ AM_CONDITIONAL(HAVE_LIBDAEMON, test "x$HAVE_LIBDAEMON" = "xyes")
# Python stuff
#
AC_ARG_ENABLE(python,
- AS_HELP_STRING([--disable-python], [Disable scripts that depends on python]),
- [case "${enableval}" in
- yes) HAVE_PYTHON=yes ;;
- no) HAVE_PYTHON=no ;;
- *) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
- esac],[HAVE_PYTHON=yes])
+ AS_HELP_STRING([--disable-python], [Disable scripts that depends on python]),
+ [case "${enableval}" in
+ yes) HAVE_PYTHON=yes ;;
+ no) HAVE_PYTHON=no ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
+ esac],[HAVE_PYTHON=yes])
if test "x$HAVE_PYTHON" = "xyes" ; then
AM_PATH_PYTHON([2.4])
@@ -380,6 +390,7 @@ echo "
sysconfdir: ${sysconfdir}
dbus-1 system.d dir: ${DBUS_SYS_DIR}
dbus-1 version: `pkg-config dbus-1 --modversion`
+ dbus-1 system socket ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
compiler: ${CC}
cflags: ${CFLAGS}
Enable GLIB: ${HAVE_GLIB}