mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-05 13:29:57 -05:00
Fallbacks for systems that do not have getaddrinfo(). Does not handle
IPv6 though. git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/ossman@369 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
3f2ac7eb8c
commit
70223bac46
3 changed files with 37 additions and 5 deletions
|
|
@ -166,8 +166,8 @@ AC_CHECK_LIB([m], [pow])
|
||||||
AC_FUNC_FORK
|
AC_FUNC_FORK
|
||||||
AC_FUNC_GETGROUPS
|
AC_FUNC_GETGROUPS
|
||||||
AC_FUNC_SELECT_ARGTYPES
|
AC_FUNC_SELECT_ARGTYPES
|
||||||
AC_CHECK_FUNCS([ftruncate getgrgid_r getpwuid_r gettimeofday getuid \
|
AC_CHECK_FUNCS([getaddrinfo ftruncate getgrgid_r getpwuid_r gettimeofday \
|
||||||
inet_ntop mkfifo nanosleep sigaction sleep])
|
getuid inet_ntop mkfifo nanosleep sigaction sleep])
|
||||||
|
|
||||||
AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")
|
AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -426,8 +426,9 @@ struct pa_socket_client* pa_socket_client_new_string(struct pa_mainloop_api *m,
|
||||||
assert(c->asyncns_query);
|
assert(c->asyncns_query);
|
||||||
start_timeout(c);
|
start_timeout(c);
|
||||||
}
|
}
|
||||||
#else
|
#else /* HAVE_LIBASYNCNS */
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_GETADDRINFO
|
||||||
int ret;
|
int ret;
|
||||||
struct addrinfo *res = NULL;
|
struct addrinfo *res = NULL;
|
||||||
|
|
||||||
|
|
@ -442,8 +443,33 @@ struct pa_socket_client* pa_socket_client_new_string(struct pa_mainloop_api *m,
|
||||||
}
|
}
|
||||||
|
|
||||||
freeaddrinfo(res);
|
freeaddrinfo(res);
|
||||||
|
#else /* HAVE_GETADDRINFO */
|
||||||
|
struct hostent *host = NULL;
|
||||||
|
struct sockaddr_in s;
|
||||||
|
|
||||||
|
/* FIXME: PF_INET6 support */
|
||||||
|
if (hints.ai_family != PF_INET)
|
||||||
|
goto finish;
|
||||||
|
|
||||||
|
host = gethostbyname(a.path_or_host);
|
||||||
|
if (!host) {
|
||||||
|
unsigned int addr = inet_addr(a.path_or_host);
|
||||||
|
if (addr != INADDR_NONE)
|
||||||
|
host = gethostbyaddr((char*)&addr, 4, AF_INET);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
if (!host)
|
||||||
|
goto finish;
|
||||||
|
|
||||||
|
s.sin_family = AF_INET;
|
||||||
|
memcpy(&s.sin_addr, host->h_addr, sizeof(struct in_addr));
|
||||||
|
s.sin_port = port;
|
||||||
|
|
||||||
|
if ((c = pa_socket_client_new_sockaddr(m, &s, sizeof(s))))
|
||||||
|
start_timeout(c);
|
||||||
|
#endif /* HAVE_GETADDRINFO */
|
||||||
|
}
|
||||||
|
#endif /* HAVE_LIBASYNCNS */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -831,11 +831,14 @@ size_t pa_parsehex(const char *p, uint8_t *d, size_t dlength) {
|
||||||
/* Return the fully qualified domain name in *s */
|
/* Return the fully qualified domain name in *s */
|
||||||
char *pa_get_fqdn(char *s, size_t l) {
|
char *pa_get_fqdn(char *s, size_t l) {
|
||||||
char hn[256];
|
char hn[256];
|
||||||
|
#ifdef HAVE_GETADDRINFO
|
||||||
struct addrinfo *a, hints;
|
struct addrinfo *a, hints;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pa_get_host_name(hn, sizeof(hn)))
|
if (!pa_get_host_name(hn, sizeof(hn)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
#ifdef HAVE_GETADDRINFO
|
||||||
memset(&hints, 0, sizeof(hints));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_family = AF_UNSPEC;
|
hints.ai_family = AF_UNSPEC;
|
||||||
hints.ai_flags = AI_CANONNAME;
|
hints.ai_flags = AI_CANONNAME;
|
||||||
|
|
@ -846,6 +849,9 @@ char *pa_get_fqdn(char *s, size_t l) {
|
||||||
pa_strlcpy(s, a->ai_canonname, l);
|
pa_strlcpy(s, a->ai_canonname, l);
|
||||||
freeaddrinfo(a);
|
freeaddrinfo(a);
|
||||||
return s;
|
return s;
|
||||||
|
#else
|
||||||
|
return pa_strlcpy(s, hn, l);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns nonzero when *s starts with *pfx */
|
/* Returns nonzero when *s starts with *pfx */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue