From 497febf2f1961b79f5cb3806bcf16614db428eb6 Mon Sep 17 00:00:00 2001 From: David Svensson Fors Date: Fri, 11 Nov 2016 13:57:46 +0100 Subject: [PATCH] node: check links list in get_free_port() When searching for an unused port, look for an empty links list. --- pinos/server/node.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pinos/server/node.c b/pinos/server/node.c index 2701f15d3..cdde53ea9 100644 --- a/pinos/server/node.c +++ b/pinos/server/node.c @@ -602,7 +602,7 @@ PinosPort * pinos_node_get_free_port (PinosNode *node, PinosDirection direction) { - unsigned int free_port, n_ports, max_ports; + unsigned int n_ports, max_ports; SpaList *ports; PinosPort *port = NULL, *p; @@ -615,22 +615,22 @@ pinos_node_get_free_port (PinosNode *node, n_ports = node->transport->area->n_outputs; ports = &node->output_ports; } - free_port = 0; - pinos_log_debug ("node %p: direction %d max %u, n %u, free_port %u", node, direction, max_ports, n_ports, free_port); + pinos_log_debug ("node %p: direction %d max %u, n %u", node, direction, max_ports, n_ports); spa_list_for_each (p, ports, link) { - if (free_port < p->port_id) { + if (spa_list_is_empty (&p->links)) { port = p; break; } - free_port = p->port_id + 1; } - if (free_port >= max_ports && !spa_list_is_empty (ports)) { - port = spa_list_first (ports, PinosPort, link); - } else - return NULL; + if (port == NULL) { + if (!spa_list_is_empty (ports)) + port = spa_list_first (ports, PinosPort, link); + else + return NULL; + } return port;