mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-02 09:01:46 -05:00
Trying to listen on an IPv6 socket by default and only do IPv4 if that fails
(which it doesn't most of the time) is terribly confusing. What the user most likely wants is for it to listen to both IPv4 and IPv6 and gracefully continue if only of them succeed. git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@633 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
90d6a919fa
commit
64571374b3
3 changed files with 145 additions and 60 deletions
|
|
@ -314,46 +314,57 @@ fail:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ip_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
|
||||
pa_socket_server *s;
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ipv4_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
|
||||
assert(m);
|
||||
assert(port > 0);
|
||||
|
||||
return pa_socket_server_new_ipv4(m, INADDR_LOOPBACK, port, tcpwrap_service);
|
||||
}
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ipv6_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
|
||||
assert(m);
|
||||
assert(port > 0);
|
||||
|
||||
return pa_socket_server_new_ipv6(m, in6addr_loopback.s6_addr, port, tcpwrap_service);
|
||||
}
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ipv4_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
|
||||
assert(m);
|
||||
assert(port > 0);
|
||||
|
||||
if (!(s = pa_socket_server_new_ipv6(m, in6addr_loopback.s6_addr, port, tcpwrap_service)))
|
||||
s = pa_socket_server_new_ipv4(m, INADDR_LOOPBACK, port, tcpwrap_service);
|
||||
|
||||
return s;
|
||||
return pa_socket_server_new_ipv4(m, INADDR_ANY, port, tcpwrap_service);
|
||||
}
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ip_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
|
||||
pa_socket_server *s;
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ipv6_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service) {
|
||||
assert(m);
|
||||
assert(port > 0);
|
||||
|
||||
if (!(s = pa_socket_server_new_ipv6(m, in6addr_any.s6_addr, port, tcpwrap_service)))
|
||||
s = pa_socket_server_new_ipv4(m, INADDR_ANY, port, tcpwrap_service);
|
||||
|
||||
return s;
|
||||
return pa_socket_server_new_ipv6(m, in6addr_any.s6_addr, port, tcpwrap_service);
|
||||
}
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ip_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service) {
|
||||
struct in6_addr ipv6;
|
||||
pa_socket_server* pa_socket_server_new_ipv4_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service) {
|
||||
struct in_addr ipv4;
|
||||
|
||||
assert(m);
|
||||
assert(name);
|
||||
assert(port > 0);
|
||||
|
||||
if (inet_pton(AF_INET, name, &ipv4) > 0)
|
||||
return pa_socket_server_new_ipv4(m, ntohl(ipv4.s_addr), port, tcpwrap_service);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pa_socket_server* pa_socket_server_new_ipv6_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service) {
|
||||
struct in6_addr ipv6;
|
||||
|
||||
assert(m);
|
||||
assert(name);
|
||||
assert(port > 0);
|
||||
|
||||
if (inet_pton(AF_INET6, name, &ipv6) > 0)
|
||||
return pa_socket_server_new_ipv6(m, ipv6.s6_addr, port, tcpwrap_service);
|
||||
|
||||
if (inet_pton(AF_INET, name, &ipv4) > 0)
|
||||
return pa_socket_server_new_ipv4(m, ntohl(ipv4.s_addr), port, tcpwrap_service);
|
||||
|
||||
pa_log_warn(__FILE__": failed to parse '%s'.", name);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,9 +34,12 @@ pa_socket_server* pa_socket_server_new(pa_mainloop_api *m, int fd);
|
|||
pa_socket_server* pa_socket_server_new_unix(pa_mainloop_api *m, const char *filename);
|
||||
pa_socket_server* pa_socket_server_new_ipv4(pa_mainloop_api *m, uint32_t address, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t address[16], uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ip_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ip_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ip_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ipv4_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ipv6_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ipv4_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ipv6_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ipv4_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service);
|
||||
pa_socket_server* pa_socket_server_new_ipv6_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service);
|
||||
|
||||
void pa_socket_server_unref(pa_socket_server*s);
|
||||
pa_socket_server* pa_socket_server_ref(pa_socket_server *s);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue