allow nofail mode only when no server string was specified
authorLennart Poettering <lennart@poettering.net>
Mon, 30 Mar 2009 20:31:03 +0000 (20:31 +0000)
committerLennart Poettering <lennart@poettering.net>
Mon, 30 Mar 2009 20:31:03 +0000 (20:31 +0000)
src/pulse/context.c
src/pulse/internal.h

index 13b6d57..28d1719 100644 (file)
@@ -144,7 +144,6 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
     if (name)
         pa_proplist_sets(c->proplist, PA_PROP_APPLICATION_NAME, name);
 
-    c->no_fail = FALSE;
     c->system_bus = c->session_bus = NULL;
     c->mainloop = mainloop;
     c->client = NULL;
@@ -170,6 +169,8 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
 
     c->do_shm = FALSE;
 
+    c->server_specified = FALSE;
+    c->no_fail = FALSE;
     c->do_autospawn = FALSE;
     memset(&c->spawn_api, 0, sizeof(c->spawn_api));
 
@@ -799,7 +800,7 @@ static int try_next_connection(pa_context *c) {
             }
 #endif
 
-            if (c->no_fail) {
+            if (c->no_fail && !c->server_specified) {
                 if (!c->system_bus)
                     track_pulseaudio_on_dbus(c, DBUS_BUS_SYSTEM, &c->system_bus);
                 if (!c->session_bus)
@@ -917,6 +918,7 @@ int pa_context_connect(
     pa_context_ref(c);
 
     c->no_fail = flags & PA_CONTEXT_NOFAIL;
+    c->server_specified = !!server;
     pa_assert(!c->server_list);
 
     if (server) {
index 8c24294..da94faa 100644 (file)
@@ -51,7 +51,6 @@
 struct pa_context {
     PA_REFCNT_DECLARE;
 
-    pa_bool_t no_fail:1;
     pa_dbus_wrap_connection *system_bus;
     pa_dbus_wrap_connection *session_bus;
 
@@ -83,7 +82,8 @@ struct pa_context {
 
     pa_bool_t is_local:1;
     pa_bool_t do_shm:1;
-
+    pa_bool_t server_specified:1;
+    pa_bool_t no_fail:1;
     pa_bool_t do_autospawn:1;
     pa_spawn_api spawn_api;