[pulseaudio-discuss] [PATCH 2/4] roap-client: Fix loop searching for port number

Peter Meerwald-Stadler pmeerw at pmeerw.net
Thu Feb 23 07:16:39 UTC 2017


do...while not reachable, loop should try different ports in case EADDRINUSE is returned
Coverity ID: #1398161

Signed-off-by: Peter Meerwald-Stadler <pmeerw at pmeerw.net>
---
 src/modules/raop/raop-client.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/modules/raop/raop-client.c b/src/modules/raop/raop-client.c
index 94342d2..e39663d 100644
--- a/src/modules/raop/raop-client.c
+++ b/src/modules/raop/raop-client.c
@@ -799,13 +799,16 @@ static int open_bind_udp_socket(pa_raop_client *c, uint16_t *actual_port) {
     }
 
     do {
-        *sa_port = htons(port);
+        int ret;
 
-        if (bind(fd, sa, salen) < 0 && errno != EADDRINUSE) {
-            pa_log("bind_socket() failed: %s", pa_cstrerror(errno));
+        *sa_port = htons(port);
+        ret = bind(fd, sa, salen);
+        if (!ret)
+            break;
+        if (ret < 0 && errno != EADDRINUSE) {
+            pa_log("bind() failed: %s", pa_cstrerror(errno));
             goto fail;
         }
-        break;
     } while (++port > 0);
 
     pa_log_debug("Socket bound to port %d (SOCK_DGRAM)", port);
-- 
2.7.4



More information about the pulseaudio-discuss mailing list