Browse Source

use SUN_LEN to calculate length of unix address @ FreeBSD.

v0.7.4-release
Vanilla Hsu 15 years ago
committed by Ryan Dahl
parent
commit
6c5c808569
  1. 18
      deps/evcom/evcom.c

18
deps/evcom/evcom.c

@ -849,21 +849,27 @@ static inline socklen_t
address_length (struct sockaddr *address) address_length (struct sockaddr *address)
{ {
struct sockaddr_un* unix_address = (struct sockaddr_un*)address; struct sockaddr_un* unix_address = (struct sockaddr_un*)address;
int length = 0;
switch (address->sa_family) { switch (address->sa_family) {
case AF_INET: case AF_INET:
return sizeof(struct sockaddr_in); length = sizeof(struct sockaddr_in);
break;
case AF_INET6: case AF_INET6:
return sizeof(struct sockaddr_in6); length = sizeof(struct sockaddr_in6);
break;
case AF_UNIX: 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: default:
assert(0 && "Unsupported socket family"); assert(0 && "Unsupported socket family");
} }
return 0; return length;
} }
int int

Loading…
Cancel
Save