(I have also looked at previous patches in the series, but have no comments about them)

04.12.2014 23:44, Tanu Kaskinen wrote:
+void pa_tunnel_manager_remote_server_new(pa_tunnel_manager *manager, 
pa_tunnel_manager_remote_server_config *config) {

Why void? There are some failure conditions (such as bad address).

+    int r;
+    pa_parsed_address parsed_address;
+    pa_tunnel_manager_remote_server *server = NULL;
+
+    pa_assert(manager);
+    pa_assert(config);
+
+    if (!config->address) {
+        pa_log("No address configured for remote server %s.", config->name);
+        return;
+    }
+
+    r = pa_parse_address(config->address->value, &parsed_address);
+    if (r < 0) {
+        pa_log("[%s:%u] Invalid address: \"%s\"", config->address->filename, 
config->address->lineno, config->address->value);
+        return;
+    }
+
+    pa_xfree(parsed_address.path_or_host);
+
+    server = pa_xnew0(pa_tunnel_manager_remote_server, 1);
+    server->manager = manager;
+    server->name = pa_xstrdup(config->name);
+    server->address = pa_xstrdup(config->address->value);
+    server->devices = pa_hashmap_new(pa_idxset_string_hash_func, 
pa_idxset_string_compare_func);
+    server->device_stubs = pa_hashmap_new(NULL, NULL);
+
+    pa_assert_se(pa_hashmap_put(manager->remote_servers, server->name, server) 
>= 0);
+
+    pa_log_debug("Created remote server %s.", server->name);
+    pa_log_debug("    Address: %s", server->address);
+    pa_log_debug("    Failed: %s", pa_boolean_to_string(server->failed));

How can server->failed become true here? Maybe you meant this debug output to be placed after set_up_connection()?

+
+    set_up_connection(server);
+}

<snip>

+static void set_up_connection(pa_tunnel_manager_remote_server *server) {
+    pa_assert(server);
+    pa_assert(!server->context);
+
+    server->context = pa_context_new(server->manager->core->mainloop, 
"PulseAudio");
+    if (server->context) {
+        int r;
+
+        r = pa_context_connect(server->context, server->address, 
PA_CONTEXT_NOFLAGS, NULL);
+        if (r >= 0)
+            pa_context_set_state_callback(server->context, context_state_cb, 
server);
+        else {
+            pa_log("[%s] pa_context_connect() failed: %s", server->name, 
pa_strerror(pa_context_errno(server->context)));
+            pa_tunnel_manager_remote_server_set_failed(server, true);
+        }
+    } else {
+        pa_log("[%s] pa_context_new() failed.", server->name);
+        pa_tunnel_manager_remote_server_set_failed(server, true);
+    }
+}

Here one can reduce the need for "else" statements and thus increase readability by handling the error cases first. I.e.: if (!server->context) { ... ; return; }

--
Alexander E. Patrakov
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to