mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 10:12:15 +01:00
Use DirPort for uploading descriptors.
When we converted the horrible set of options that previously
controlled "use ORPort or DirPort? Anonymously or Non-anonymouly?" to
a single 'indirection' argument, we missed
directory_post_to_dirservers.
The problematic code was introduced in 5cbeb6080
, which went into
0.2.4.3-alpha. This is a fix for bug 11469.
This commit is contained in:
parent
411c622906
commit
1badef5cec
6
changes/bug11469
Normal file
6
changes/bug11469
Normal 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.
|
@ -279,7 +279,7 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
|
|||||||
size_t payload_len, size_t extrainfo_len)
|
size_t payload_len, size_t extrainfo_len)
|
||||||
{
|
{
|
||||||
const or_options_t *options = get_options();
|
const or_options_t *options = get_options();
|
||||||
int post_via_tor;
|
dir_indirection_t indirection;
|
||||||
const smartlist_t *dirservers = router_get_trusted_dir_servers();
|
const smartlist_t *dirservers = router_get_trusted_dir_servers();
|
||||||
int found = 0;
|
int found = 0;
|
||||||
const int exclude_self = (dir_purpose == DIR_PURPOSE_UPLOAD_VOTE ||
|
const int exclude_self = (dir_purpose == DIR_PURPOSE_UPLOAD_VOTE ||
|
||||||
@ -319,11 +319,19 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
|
|||||||
(int) extrainfo_len);
|
(int) extrainfo_len);
|
||||||
}
|
}
|
||||||
tor_addr_from_ipv4h(&ds_addr, ds->addr);
|
tor_addr_from_ipv4h(&ds_addr, ds->addr);
|
||||||
post_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose) ||
|
if (purpose_needs_anonymity(dir_purpose, router_purpose)) {
|
||||||
!fascist_firewall_allows_address_dir(&ds_addr, ds->dir_port);
|
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,
|
directory_initiate_command_routerstatus(rs, dir_purpose,
|
||||||
router_purpose,
|
router_purpose,
|
||||||
post_via_tor,
|
indirection,
|
||||||
NULL, payload, upload_len, 0);
|
NULL, payload, upload_len, 0);
|
||||||
} SMARTLIST_FOREACH_END(ds);
|
} SMARTLIST_FOREACH_END(ds);
|
||||||
if (!found) {
|
if (!found) {
|
||||||
|
Loading…
Reference in New Issue
Block a user