|
@@ -1025,13 +1025,12 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr)
|
|
|
{
|
|
|
int sock=-1, r=-1;
|
|
|
struct sockaddr_storage my_addr, target_addr;
|
|
|
- socklen_t my_addr_len;
|
|
|
+ socklen_t addr_len;
|
|
|
|
|
|
tor_assert(addr);
|
|
|
|
|
|
memset(addr, 0, sizeof(tor_addr_t));
|
|
|
memset(&target_addr, 0, sizeof(target_addr));
|
|
|
- my_addr_len = (socklen_t)sizeof(my_addr);
|
|
|
/* Use the "discard" service port */
|
|
|
((struct sockaddr_in*)&target_addr)->sin_port = 9;
|
|
|
/* Don't worry: no packets are sent. We just need to use a real address
|
|
@@ -1039,13 +1038,13 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr)
|
|
|
if (family == AF_INET6) {
|
|
|
struct sockaddr_in6 *sin6 = (struct sockaddr_in6*)&target_addr;
|
|
|
sock = tor_open_socket(PF_INET6,SOCK_DGRAM,IPPROTO_UDP);
|
|
|
- my_addr_len = (socklen_t)sizeof(struct sockaddr_in6);
|
|
|
+ addr_len = (socklen_t)sizeof(struct sockaddr_in6);
|
|
|
sin6->sin6_family = AF_INET6;
|
|
|
S6_ADDR16(sin6->sin6_addr)[0] = htons(0x2002); /* 2002:: */
|
|
|
} else if (family == AF_INET) {
|
|
|
struct sockaddr_in *sin = (struct sockaddr_in*)&target_addr;
|
|
|
sock = tor_open_socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
|
|
|
- my_addr_len = (socklen_t)sizeof(struct sockaddr_in);
|
|
|
+ addr_len = (socklen_t)sizeof(struct sockaddr_in);
|
|
|
sin->sin_family = AF_INET;
|
|
|
sin->sin_addr.s_addr = htonl(0x12000001); /* 18.0.0.1 */
|
|
|
} else {
|
|
@@ -1058,14 +1057,13 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr)
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
- if (connect(sock,(struct sockaddr *)&target_addr,
|
|
|
- (socklen_t)sizeof(target_addr))<0) {
|
|
|
+ if (connect(sock,(struct sockaddr *)&target_addr, addr_len) < 0) {
|
|
|
int e = tor_socket_errno(sock);
|
|
|
log_fn(severity, LD_NET, "connect() failed: %s", tor_socket_strerror(e));
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
- if (getsockname(sock,(struct sockaddr*)&my_addr, &my_addr_len)) {
|
|
|
+ if (getsockname(sock,(struct sockaddr*)&my_addr, &addr_len)) {
|
|
|
int e = tor_socket_errno(sock);
|
|
|
log_fn(severity, LD_NET, "getsockname() to determine interface failed: %s",
|
|
|
tor_socket_strerror(e));
|