Skip to content
Snippets Groups Projects
Commit 8eb422e7 authored by Nick Mathewson's avatar Nick Mathewson :game_die:
Browse files

Don't use the cache when changing an IP address because of an exit policy

parent 593b235c
No related branches found
No related tags found
No related merge requests found
......@@ -706,6 +706,7 @@ connection_ap_process_end_not_open(
case END_STREAM_REASON_EXITPOLICY:
if (rh->length >= 5) {
tor_addr_t addr;
int ttl = -1;
tor_addr_make_unspec(&addr);
if (rh->length == 5 || rh->length == 9) {
......@@ -745,6 +746,16 @@ connection_ap_process_end_not_open(
client_dns_set_addressmap(conn,
conn->socks_request->address, &addr,
conn->chosen_exit_name, ttl);
{
char new_addr[TOR_ADDR_BUF_LEN];
tor_addr_to_str(new_addr, &addr, sizeof(new_addr), 1);
if (strcmp(conn->socks_request->address, new_addr)) {
strlcpy(conn->socks_request->address, new_addr,
sizeof(conn->socks_request->address));
control_event_stream_status(conn, STREAM_EVENT_REMAP, 0);
}
}
}
/* check if he *ought* to have allowed it */
if (exitrouter &&
......@@ -757,19 +768,7 @@ connection_ap_process_end_not_open(
node_describe(exitrouter));
policies_set_node_exitpolicy_to_reject_all(exitrouter);
}
/* rewrite it to an IP if we learned one. */
{
unsigned rewrite_flags = 0;
if (conn->use_cached_ipv4_answers)
rewrite_flags |= AMR_FLAG_USE_IPV4_DNS;
if (conn->use_cached_ipv6_answers)
rewrite_flags |= AMR_FLAG_USE_IPV6_DNS;
if (addressmap_rewrite(conn->socks_request->address,
sizeof(conn->socks_request->address),
rewrite_flags, NULL, NULL)) {
control_event_stream_status(conn, STREAM_EVENT_REMAP, 0);
}
}
if (conn->chosen_exit_optional ||
conn->chosen_exit_retries) {
/* stop wanting a specific exit */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment