diff options
Diffstat (limited to 'src/util/common_logging.c')
-rw-r--r-- | src/util/common_logging.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/util/common_logging.c b/src/util/common_logging.c index 73a374f46..c06aadc2f 100644 --- a/src/util/common_logging.c +++ b/src/util/common_logging.c | |||
@@ -510,7 +510,9 @@ GNUNET_a2s (const struct sockaddr *addr, socklen_t addrlen) | |||
510 | static char buf[INET6_ADDRSTRLEN + 8]; | 510 | static char buf[INET6_ADDRSTRLEN + 8]; |
511 | static char b2[6]; | 511 | static char b2[6]; |
512 | const struct sockaddr_in *v4; | 512 | const struct sockaddr_in *v4; |
513 | const struct sockaddr_un *un; | ||
513 | const struct sockaddr_in6 *v6; | 514 | const struct sockaddr_in6 *v6; |
515 | unsigned int off; | ||
514 | 516 | ||
515 | if (addr == NULL) | 517 | if (addr == NULL) |
516 | return _("unknown address"); | 518 | return _("unknown address"); |
@@ -535,6 +537,17 @@ GNUNET_a2s (const struct sockaddr *addr, socklen_t addrlen) | |||
535 | sprintf (b2, "%u", ntohs (v6->sin6_port)); | 537 | sprintf (b2, "%u", ntohs (v6->sin6_port)); |
536 | strcat (buf, b2); | 538 | strcat (buf, b2); |
537 | return buf; | 539 | return buf; |
540 | case AF_UNIX: | ||
541 | un = (const struct sockaddr_un*) addr; | ||
542 | off = 0; | ||
543 | if (un->sun_path[0] == '\0') off++; | ||
544 | snprintf (buf, | ||
545 | sizeof (buf), | ||
546 | "%s%.*s", | ||
547 | (off == 1) ? "@" : "", | ||
548 | addrlen - sizeof (sa_family_t) - 1 - off, | ||
549 | &un->sun_path[off]); | ||
550 | return buf; | ||
538 | default: | 551 | default: |
539 | return _("invalid address"); | 552 | return _("invalid address"); |
540 | } | 553 | } |