Merge remote-tracking branch 'public/bug11469_024'

This commit is contained in:
Nick Mathewson 2014-05-15 13:35:08 -04:00
commit 2d21a8f4d6
2 changed files with 18 additions and 4 deletions

6
changes/bug11469 Normal file
View File

@ -0,0 +1,6 @@
o Major bugfixes (relay):
- When uploading to the directory authorities, use a direct dirport
connection if we are a uploading an ordinary, non-anonymous directory
object. Previously, relays would used tunnel connections under a
fairly wide variety of circumstances. Fixes bug 11469; bugfix on
0.2.4.3-alpha.

View File

@ -261,7 +261,7 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
size_t payload_len, size_t extrainfo_len)
{
const or_options_t *options = get_options();
int post_via_tor;
dir_indirection_t indirection;
const smartlist_t *dirservers = router_get_trusted_dir_servers();
int found = 0;
const int exclude_self = (dir_purpose == DIR_PURPOSE_UPLOAD_VOTE ||
@ -305,11 +305,19 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
(int) extrainfo_len);
}
tor_addr_from_ipv4h(&ds_addr, ds->addr);
post_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose) ||
!fascist_firewall_allows_address_dir(&ds_addr, ds->dir_port);
if (purpose_needs_anonymity(dir_purpose, router_purpose)) {
indirection = DIRIND_ANONYMOUS;
} else if (!fascist_firewall_allows_address_dir(&ds_addr,ds->dir_port)) {
if (fascist_firewall_allows_address_or(&ds_addr,ds->or_port))
indirection = DIRIND_ONEHOP;
else
indirection = DIRIND_ANONYMOUS;
} else {
indirection = DIRIND_DIRECT_CONN;
}
directory_initiate_command_routerstatus(rs, dir_purpose,
router_purpose,
post_via_tor,
indirection,
NULL, payload, upload_len, 0);
} SMARTLIST_FOREACH_END(ds);
if (!found) {