Support IPv6 address in pa_socket_client_new_string()

pa_socket_client_new_string() did 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 then 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]"). [1]

This patch fixes pa_socket_client_new_string() so that it internally
adds brackets to an IPv6 address. This decision is based on a
discussion at [2].

[1]: http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-October/022010.html
[2]: http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-November/022401.html

Reviewed-by: Anton Lundin <glance@acc.umu.se>
This commit is contained in:
Hajime Fujita 2016-01-31 22:15:58 -06:00 committed by Tanu Kaskinen
parent 84952e6a09
commit 017ed3e7fa
3 changed files with 32 additions and 2 deletions

View file

@ -41,4 +41,6 @@ int pa_parse_address(const char *a, pa_parsed_address *ret_p);
bool pa_is_ip_address(const char *a);
bool pa_is_ip6_address(const char *a);
#endif