From 7627af52a37f21c184937fed8b0851973def70e9 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Wed, 9 Mar 2011 15:13:52 +0000 Subject: [PATCH] try to cover AF_LOCAL in libwebsockets_get_peer_addresses Signed-off-by: Andy Green --- lib/libwebsockets.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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 +#include #endif #ifdef LWS_OPENSSL_SUPPORT @@ -371,6 +372,7 @@ libwebsockets_get_peer_addresses(int fd, char *name, int name_len, char ip[128]; unsigned char *p; int n; + struct sockaddr_un *un; rip[0] = '\0'; name[0] = '\0'; @@ -400,11 +402,17 @@ libwebsockets_get_peer_addresses(int fd, char *name, int name_len, 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'; -- 2.7.4