[pulseaudio-discuss] incomplete IPv6 support in pa_socket_client_new_string()

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Tue Oct 28 02:20:08 PDT 2014


On Tue, 2014-10-21 at 00:49 -0500, Hajime Fujita wrote:
> Hello,
> 
> I'm currently working on IPv6 support for the raop module [1].
> 
> During the work I found a potential issue in 
> pa_socket_client_new_string() (in pulsecore/socket-client.c) as pointed 
> out in [1].
> 
> It does not work as expected when an IPv6 address string like 
> "2001:db8::1" is passed as the "name" parameter. This is because the 
> name parameter is passed to pa_parse_address(), which thinks the last 
> colon as a separator between hostname (or address) and a port number. To 
> prevent pa_parse_address() from doing this, an IPv6 address must be 
> bracketed with "[]" (e.g. "[2001:db8::1]").
> 
> I'm wondering what would be the best solution for this situation.
> a. Modify callers: callers of pa_socket_client_new_string() must add 
> brackets to IPv6 addresses.
> b. Modify pa_socket_client_new_string(): if an IPv6 address is given as 
> the name parameter, it will be bracketed before being passed to 
> pa_parse_address().
> 
> Any opinions or suggestions?

I think it makes more sense to fix this in the callers of
pa_socket_client_new_string(). It would be good to also add a comment in
socket-client.h saying that the name parameter can include also the port
using the usual syntax, and for that reason IPv6 addresses must be
enclosed in brackets.

-- 
Tanu



More information about the pulseaudio-discuss mailing list