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

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Wed Nov 5 23:49:00 PST 2014


On Wed, 2014-11-05 at 22:29 -0600, Hajime Fujita wrote:
> Hi Tanu,
> 
> Thank you for your comment and sorry for the late reply.
> 
> Tanu Kaskinen wrote:
> > 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.
> >
> 
> Do you have any justification behind this?

Yes, sorry for leaving it out from my answer. The justification: I think
you can't actually implement suggestion b, because there's no way you
can figure out in pa_socket_client_new_string() whether
"1234::1234:1234" contains only an IP address or an IP address and a
port.

-- 
Tanu



More information about the pulseaudio-discuss mailing list