try to cover AF_LOCAL in libwebsockets_get_peer_addresses
Signed-off-by: Andy Green <andy@warmcat.com>
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index 40d25a8..d4e5435 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -25,6 +25,7 @@
#else
#include <ifaddrs.h>
+#include <sys/un.h>
#endif
#ifdef LWS_OPENSSL_SUPPORT
@@ -371,6 +372,7 @@
char ip[128];
unsigned char *p;
int n;
+ struct sockaddr_un *un;
rip[0] = '\0';
name[0] = '\0';
@@ -400,11 +402,17 @@
p = (unsigned char *)host1->h_addr_list[n++];
if (p == NULL)
continue;
- if (host1->h_addrtype != AF_INET)
+ if ((host1->h_addrtype != AF_INET) &&
+ (host1->h_addrtype != AF_LOCAL))
continue;
- sprintf(ip, "%u.%u.%u.%u",
- p[0], p[1], p[2], p[3]);
+ if (host1->h_addrtype == AF_INET)
+ sprintf(ip, "%u.%u.%u.%u", p[0], p[1], p[2], p[3]);
+ else {
+ un = (struct sockaddr_un *)p;
+ strncpy(ip, un->sun_path, sizeof(ip) -1);
+ ip[sizeof(ip) - 1] = '\0';
+ }
p = NULL;
strncpy(rip, ip, rip_len);
rip[rip_len - 1] = '\0';