From df9cda67d2041adad7a43a48435f473eb1143337 Mon Sep 17 00:00:00 2001 From: Peter Meerwald-Stadler Date: Wed, 22 Feb 2017 15:02:43 +0100 Subject: raop: Fix loop searching for port number do...while not reachable, loop should try different ports in case EADDRINUSE is returned Coverity ID: #1398161 Signed-off-by: Peter Meerwald-Stadler --- src/modules/raop/raop-client.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/modules/raop/raop-client.c b/src/modules/raop/raop-client.c index 94342d24..e39663db 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); -- cgit v1.2.3