about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard Nyberg <rnyberg@murmeldjur.se>2009-02-08 19:21:28 +0100
committerRichard Nyberg <rnyberg@murmeldjur.se>2009-02-08 19:21:28 +0100
commitcf5f386df1bda0a98e27b5df4fd411549d240196 (patch)
tree39d1581283c522092feacf6988c4605accf45453
parentd3c57e7d14d2728bb51217e892ff57a078fb11a9 (diff)
downloadbtpd-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.c8
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);