From 6c5c8085693ebf3105caa3b41f683a9aaa2c09e3 Mon Sep 17 00:00:00 2001 From: Vanilla Hsu Date: Wed, 13 Jan 2010 11:23:21 +0800 Subject: [PATCH] use SUN_LEN to calculate length of unix address @ FreeBSD. --- deps/evcom/evcom.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/deps/evcom/evcom.c b/deps/evcom/evcom.c index ed9e2b5215..9490168921 100644 --- a/deps/evcom/evcom.c +++ b/deps/evcom/evcom.c @@ -849,21 +849,27 @@ static inline socklen_t address_length (struct sockaddr *address) { struct sockaddr_un* unix_address = (struct sockaddr_un*)address; + int length = 0; switch (address->sa_family) { case AF_INET: - return sizeof(struct sockaddr_in); - + length = sizeof(struct sockaddr_in); + break; case AF_INET6: - return sizeof(struct sockaddr_in6); - + length = sizeof(struct sockaddr_in6); + break; case AF_UNIX: - return strlen(unix_address->sun_path) + sizeof(unix_address->sun_family); +#ifdef SUN_LEN + length = SUN_LEN(unix_address); +#else + length = strlen(unix_address->sun_path) + sizeof(unix_address->sun_family); +#endif + break; default: assert(0 && "Unsupported socket family"); } - return 0; + return length; } int