From 76089b11eb27675bad4d929d34cc43639f0e54ee Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 14 Jan 2010 00:13:13 +0100 Subject: native: fallback to another port if the default port is taken Unless the port number is explicitly configured we will now fallback to a kernel picked port if the one we'd like by default we cannot get. http://pulseaudio.org/ticket/773 --- src/modules/module-protocol-stub.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/modules/module-protocol-stub.c') diff --git a/src/modules/module-protocol-stub.c b/src/modules/module-protocol-stub.c index 5b351d19..e0e7aa1f 100644 --- a/src/modules/module-protocol-stub.c +++ b/src/modules/module-protocol-stub.c @@ -246,6 +246,7 @@ int pa__init(pa_module*m) { #if defined(USE_TCP_SOCKETS) uint32_t port = IPV4_PORT; + pa_bool_t port_fallback = TRUE; const char *listen_on; #else int r; @@ -293,6 +294,10 @@ int pa__init(pa_module*m) { #endif #if defined(USE_TCP_SOCKETS) + + if (pa_modargs_get_value(ma, "port", NULL)) + port_fallback = FALSE; + if (pa_modargs_get_value_u32(ma, "port", &port) < 0 || port < 1 || port > 0xFFFF) { pa_log("port= expects a numerical argument between 1 and 65535."); goto fail; @@ -302,14 +307,14 @@ int pa__init(pa_module*m) { if (listen_on) { # ifdef HAVE_IPV6 - u->socket_server_ipv6 = pa_socket_server_new_ipv6_string(m->core->mainloop, listen_on, (uint16_t) port, TCPWRAP_SERVICE); + u->socket_server_ipv6 = pa_socket_server_new_ipv6_string(m->core->mainloop, listen_on, (uint16_t) port, port_fallback, TCPWRAP_SERVICE); # endif - u->socket_server_ipv4 = pa_socket_server_new_ipv4_string(m->core->mainloop, listen_on, (uint16_t) port, TCPWRAP_SERVICE); + u->socket_server_ipv4 = pa_socket_server_new_ipv4_string(m->core->mainloop, listen_on, (uint16_t) port, port_fallback, TCPWRAP_SERVICE); } else { # ifdef HAVE_IPV6 - u->socket_server_ipv6 = pa_socket_server_new_ipv6_any(m->core->mainloop, (uint16_t) port, TCPWRAP_SERVICE); + u->socket_server_ipv6 = pa_socket_server_new_ipv6_any(m->core->mainloop, (uint16_t) port, port_fallback, TCPWRAP_SERVICE); # endif - u->socket_server_ipv4 = pa_socket_server_new_ipv4_any(m->core->mainloop, (uint16_t) port, TCPWRAP_SERVICE); + u->socket_server_ipv4 = pa_socket_server_new_ipv4_any(m->core->mainloop, (uint16_t) port, port_fallback, TCPWRAP_SERVICE); } # ifdef HAVE_IPV6 -- cgit