[pulseaudio-discuss] [PATCH v2 03/10] raop: Fix loop searching for port number
Georg Chini
georg at chini.tk
Mon Mar 6 20:51:14 UTC 2017
On 06.03.2017 08:43, Peter Meerwald-Stadler wrote:
> 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);
>
You should also fail if port is 0 after the loop.
> pa_log_debug("Socket bound to port %d (SOCK_DGRAM)", port);
More information about the pulseaudio-discuss
mailing list