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