Merge branch 'maint-0.2.4' into release-0.2.4
This commit is contained in:
commit
4a1d9726f4
|
@ -0,0 +1,6 @@
|
||||||
|
o Minor bugfixes:
|
||||||
|
- When evaluating whether to use a connection that we haven't
|
||||||
|
decided is canonical using a recent link protocol version,
|
||||||
|
decide that it's canonical only if it used address _does_
|
||||||
|
match the desired address. Fixes bug 9309; bugfix on
|
||||||
|
0.2.4.4-alpha. Reported by skruffy.
|
|
@ -0,0 +1,4 @@
|
||||||
|
o Major bugfixes (DNS):
|
||||||
|
- Avoid an assertion failure when processing DNS replies without the
|
||||||
|
answer types we expected. Fixes bug 9337; bugfix on 0.2.4.7-alpha.
|
||||||
|
|
|
@ -3037,7 +3037,7 @@ channel_get_for_extend(const char *digest,
|
||||||
if (chan->state != CHANNEL_STATE_OPEN) {
|
if (chan->state != CHANNEL_STATE_OPEN) {
|
||||||
/* If the address matches, don't launch a new connection for this
|
/* If the address matches, don't launch a new connection for this
|
||||||
* circuit. */
|
* circuit. */
|
||||||
if (!channel_matches_target_addr_for_extend(chan, target_addr))
|
if (channel_matches_target_addr_for_extend(chan, target_addr))
|
||||||
++n_inprogress_goodaddr;
|
++n_inprogress_goodaddr;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -4053,7 +4053,7 @@ channel_matches_extend_info(channel_t *chan, extend_info_t *extend_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a channel matches a given target address
|
* Check if a channel matches a given target address; return true iff we do.
|
||||||
*
|
*
|
||||||
* This function calls into the lower layer and asks if this channel thinks
|
* This function calls into the lower layer and asks if this channel thinks
|
||||||
* it matches a given target address for circuit extension purposes.
|
* it matches a given target address for circuit extension purposes.
|
||||||
|
|
|
@ -546,7 +546,7 @@ channel_tls_matches_extend_info_method(channel_t *chan,
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if we match a target address
|
* Check if we match a target address; return true iff we do.
|
||||||
*
|
*
|
||||||
* This implements the matches_target method for channel_tls t_; the upper
|
* This implements the matches_target method for channel_tls t_; the upper
|
||||||
* layer wants to know if this channel matches a target address when extending
|
* layer wants to know if this channel matches a target address when extending
|
||||||
|
@ -563,8 +563,7 @@ channel_tls_matches_target_method(channel_t *chan,
|
||||||
tor_assert(target);
|
tor_assert(target);
|
||||||
tor_assert(tlschan->conn);
|
tor_assert(tlschan->conn);
|
||||||
|
|
||||||
return tor_addr_compare(&(tlschan->conn->real_addr),
|
return tor_addr_eq(&(tlschan->conn->real_addr), target);
|
||||||
target, CMP_EXACT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -437,8 +437,8 @@ cached_resolve_add_answer(cached_resolve_t *resolve,
|
||||||
if (resolve->res_status_ipv4 != RES_STATUS_INFLIGHT)
|
if (resolve->res_status_ipv4 != RES_STATUS_INFLIGHT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (dns_result == DNS_ERR_NONE && answer_addr) {
|
if (dns_result == DNS_ERR_NONE && answer_addr &&
|
||||||
tor_assert(tor_addr_family(answer_addr) == AF_INET);
|
tor_addr_family(answer_addr) == AF_INET) {
|
||||||
resolve->result_ipv4.addr_ipv4 = tor_addr_to_ipv4h(answer_addr);
|
resolve->result_ipv4.addr_ipv4 = tor_addr_to_ipv4h(answer_addr);
|
||||||
resolve->res_status_ipv4 = RES_STATUS_DONE_OK;
|
resolve->res_status_ipv4 = RES_STATUS_DONE_OK;
|
||||||
} else {
|
} else {
|
||||||
|
@ -450,8 +450,8 @@ cached_resolve_add_answer(cached_resolve_t *resolve,
|
||||||
if (resolve->res_status_ipv6 != RES_STATUS_INFLIGHT)
|
if (resolve->res_status_ipv6 != RES_STATUS_INFLIGHT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (dns_result == DNS_ERR_NONE && answer_addr) {
|
if (dns_result == DNS_ERR_NONE && answer_addr &&
|
||||||
tor_assert(tor_addr_family(answer_addr) == AF_INET6);
|
tor_addr_family(answer_addr) == AF_INET6) {
|
||||||
memcpy(&resolve->result_ipv6.addr_ipv6,
|
memcpy(&resolve->result_ipv6.addr_ipv6,
|
||||||
tor_addr_to_in6(answer_addr),
|
tor_addr_to_in6(answer_addr),
|
||||||
sizeof(struct in6_addr));
|
sizeof(struct in6_addr));
|
||||||
|
|
Loading…
Reference in New Issue