diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2009-02-08 19:21:28 +0100 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2009-02-08 19:21:28 +0100 |
| commit | cf5f386df1bda0a98e27b5df4fd411549d240196 (patch) | |
| tree | 39d1581283c522092feacf6988c4605accf45453 | |
| parent | d3c57e7d14d2728bb51217e892ff57a078fb11a9 (diff) | |
| download | btpd-cf5f386df1bda0a98e27b5df4fd411549d240196.tar.gz btpd-cf5f386df1bda0a98e27b5df4fd411549d240196.zip | |
Use the correct address length for connect.
The incorrect length caused problems on MacOs X.
| -rw-r--r-- | btpd/peer.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/btpd/peer.c b/btpd/peer.c index 2d31dd7..5415d1f 100644 --- a/btpd/peer.c +++ b/btpd/peer.c @@ -358,13 +358,15 @@ peer_create_out_compact(struct net *n, int family, const char *compact) struct sockaddr_storage addr; struct sockaddr_in *a4; struct sockaddr_in6 *a6; - + socklen_t addrlen; + switch (family) { case AF_INET: if (!net_ipv4) return; a4 = (struct sockaddr_in *)&addr; a4->sin_family = AF_INET; + addrlen = sizeof(*a4); bcopy(compact, &a4->sin_addr.s_addr, 4); bcopy(compact + 4, &a4->sin_port, 2); break; @@ -373,14 +375,14 @@ peer_create_out_compact(struct net *n, int family, const char *compact) return; a6 = (struct sockaddr_in6 *)&addr; a6->sin6_family = AF_INET6; + addrlen = sizeof(*a6); bcopy(compact, &a6->sin6_addr, 16); bcopy(compact + 16, &a6->sin6_port, 2); break; default: abort(); } - if (net_connect_addr(family, (struct sockaddr *)&addr, - sizeof(addr), &sd) != 0) + if (net_connect_addr(family, (struct sockaddr *)&addr, addrlen, &sd) != 0) return; p = peer_create_common(sd); |