system/resolver: return path of UNIX domain sockets
getnameinfo() doesn't work well - it always returns "localhost".
This commit is contained in:
parent
eab1a77683
commit
7adfea8ca2
2
NEWS
2
NEWS
|
@ -1,6 +1,8 @@
|
||||||
ver 0.18.1 (2013/11/??)
|
ver 0.18.1 (2013/11/??)
|
||||||
* protocol:
|
* protocol:
|
||||||
- always ignore whitespace at the end of the line
|
- always ignore whitespace at the end of the line
|
||||||
|
* networking:
|
||||||
|
- log UNIX domain path names instead of "localhost"
|
||||||
* filter:
|
* filter:
|
||||||
- autoconvert: fix "volume_normalization" with mp3 files
|
- autoconvert: fix "volume_normalization" with mp3 files
|
||||||
* add missing files to source tarball
|
* add missing files to source tarball
|
||||||
|
|
|
@ -32,6 +32,10 @@
|
||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_UN
|
||||||
|
#include <sys/un.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@ -40,6 +44,17 @@ const Domain resolver_domain("resolver");
|
||||||
char *
|
char *
|
||||||
sockaddr_to_string(const struct sockaddr *sa, size_t length, Error &error)
|
sockaddr_to_string(const struct sockaddr *sa, size_t length, Error &error)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_UN
|
||||||
|
if (sa->sa_family == AF_UNIX) {
|
||||||
|
/* return path of UNIX domain sockets */
|
||||||
|
const sockaddr_un &s_un = *(const sockaddr_un *)sa;
|
||||||
|
if (length < sizeof(s_un) || s_un.sun_path[0] == 0)
|
||||||
|
return g_strdup("local");
|
||||||
|
|
||||||
|
return g_strdup(s_un.sun_path);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_IPV6) && defined(IN6_IS_ADDR_V4MAPPED)
|
#if defined(HAVE_IPV6) && defined(IN6_IS_ADDR_V4MAPPED)
|
||||||
const struct sockaddr_in6 *a6 = (const struct sockaddr_in6 *)sa;
|
const struct sockaddr_in6 *a6 = (const struct sockaddr_in6 *)sa;
|
||||||
struct sockaddr_in a4;
|
struct sockaddr_in a4;
|
||||||
|
@ -70,13 +85,6 @@ sockaddr_to_string(const struct sockaddr *sa, size_t length, Error &error)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_UN
|
|
||||||
if (sa->sa_family == AF_UNIX)
|
|
||||||
/* "serv" contains corrupt information with unix
|
|
||||||
sockets */
|
|
||||||
return g_strdup(host);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_IPV6
|
#ifdef HAVE_IPV6
|
||||||
if (strchr(host, ':') != NULL)
|
if (strchr(host, ':') != NULL)
|
||||||
return g_strconcat("[", host, "]:", serv, NULL);
|
return g_strconcat("[", host, "]:", serv, NULL);
|
||||||
|
|
Loading…
Reference in New Issue