From f1d1447e104c4f609c0e8c528b56ea6afa540b95 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Sat, 9 Jan 2010 11:55:15 +0200 Subject: daemon: Don't autospawn if a server address is explicitly configured. --- src/Makefile.am | 12 ++++++------ src/daemon/main.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 0224cb3f..1e488bd7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -627,6 +627,12 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) libpulsecommon_@PA_MAJORMINORMICRO@_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version libpulsecommon_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBWRAP_LIBS) $(WINSOCK_LIBS) $(LTLIBICONV) $(LIBSNDFILE_LIBS) +if HAVE_X11 +libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES += pulse/client-conf-x11.c pulse/client-conf-x11.h +libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS += $(X11_CFLAGS) +libpulsecommon_@PA_MAJORMINORMICRO@_la_LDFLAGS += $(X11_LIBS) +endif + # proplist-util.h uses these header files, but not the library itself! libpulsecommon_@PA_MAJORMINORMICRO@_la_CFLAGS += $(GLIB20_CFLAGS) $(GTK20_CFLAGS) @@ -767,12 +773,6 @@ libpulse_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) libpulse_la_LIBADD = $(AM_LIBADD) $(WINSOCK_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse_la_LDFLAGS = $(AM_LDFLAGS) $(VERSIONING_LDFLAGS) -version-info $(LIBPULSE_VERSION_INFO) -if HAVE_X11 -libpulse_la_SOURCES += pulse/client-conf-x11.c pulse/client-conf-x11.h -libpulse_la_CFLAGS += $(X11_CFLAGS) -libpulse_la_LDFLAGS += $(X11_LIBS) -endif - libpulse_simple_la_SOURCES = pulse/simple.c pulse/simple.h libpulse_simple_la_CFLAGS = $(AM_CFLAGS) libpulse_simple_la_LIBADD = $(AM_LIBADD) libpulse.la libpulsecommon-@PA_MAJORMINORMICRO@.la diff --git a/src/daemon/main.c b/src/daemon/main.c index e6568364..5ccda779 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -63,6 +63,10 @@ #include #endif +#include +#ifdef HAVE_X11 +#include +#endif #include #include #include @@ -343,6 +347,24 @@ static void set_all_rlimits(const pa_daemon_conf *conf) { } #endif +static char *check_configured_address(void) { + char *default_server = NULL; + pa_client_conf *c = pa_client_conf_new(); + + pa_client_conf_load(c, NULL); +#ifdef HAVE_X11 + pa_client_conf_from_x11(c, NULL); +#endif + pa_client_conf_env(c); + + if (c->default_server && *c->default_server) + default_server = pa_xstrdup(c->default_server); + + pa_client_conf_free(c); + + return default_server; +} + #ifdef HAVE_DBUS static pa_dbus_connection *register_dbus_name(pa_core *c, DBusBusType bus, const char* name) { DBusError error; @@ -383,6 +405,7 @@ int main(int argc, char *argv[]) { pa_daemon_conf *conf = NULL; pa_mainloop *mainloop = NULL; char *s; + char *configured_address; int r = 0, retval = 1, d = 0; pa_bool_t valid_pid_file = FALSE; pa_bool_t ltdl_init = FALSE; @@ -649,6 +672,13 @@ int main(int argc, char *argv[]) { goto finish; } + if (conf->cmd == PA_CMD_START && (configured_address = check_configured_address())) { + pa_log_notice(_("User-configured server at %s, not autospawning."), configured_address); + pa_xfree(configured_address); + retval = 0; + goto finish; + } + if (conf->system_instance && !conf->disallow_exit) pa_log_warn(_("Running in system mode, but --disallow-exit not set!")); -- cgit