mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-09-20 21:16:22 +02:00
Merge branch 'remove_old_ver_checks'
This commit is contained in:
commit
bf71866da0
4
changes/remove_old_ver_checks
Normal file
4
changes/remove_old_ver_checks
Normal file
@ -0,0 +1,4 @@
|
||||
o Removed features:
|
||||
- Now that all versions before 0.2.2.x are disallowed, we no longer
|
||||
need to work around their missing features. This allows us to remove
|
||||
a bunch of compatibility code.
|
@ -5475,9 +5475,8 @@ launch_direct_bridge_descriptor_fetch(bridge_info_t *bridge)
|
||||
address = tor_dup_addr(&bridge->addr);
|
||||
|
||||
directory_initiate_command(address, &bridge->addr,
|
||||
bridge->port, 0,
|
||||
0, /* does not matter */
|
||||
1, bridge->identity,
|
||||
bridge->port, 0/*no dirport*/,
|
||||
bridge->identity,
|
||||
DIR_PURPOSE_FETCH_SERVERDESC,
|
||||
ROUTER_PURPOSE_BRIDGE,
|
||||
0, "authority.z", NULL, 0, 0);
|
||||
|
@ -58,7 +58,6 @@
|
||||
static void directory_send_command(dir_connection_t *conn,
|
||||
int purpose, int direct, const char *resource,
|
||||
const char *payload, size_t payload_len,
|
||||
int supports_conditional_consensus,
|
||||
time_t if_modified_since);
|
||||
static int directory_handle_command(dir_connection_t *conn);
|
||||
static int body_is_plausible(const char *body, size_t body_len, int purpose);
|
||||
@ -89,8 +88,6 @@ static void directory_initiate_command_rend(const char *address,
|
||||
const tor_addr_t *addr,
|
||||
uint16_t or_port,
|
||||
uint16_t dir_port,
|
||||
int supports_conditional_consensus,
|
||||
int supports_begindir,
|
||||
const char *digest,
|
||||
uint8_t dir_purpose,
|
||||
uint8_t router_purpose,
|
||||
@ -227,16 +224,9 @@ router_supports_extrainfo(const char *identity_digest, int is_authority)
|
||||
if (node && node->ri) {
|
||||
if (node->ri->caches_extra_info)
|
||||
return 1;
|
||||
if (is_authority && node->ri->platform &&
|
||||
tor_version_as_new_as(node->ri->platform,
|
||||
"Tor 0.2.0.0-alpha-dev (r10070)"))
|
||||
return 1;
|
||||
}
|
||||
if (is_authority) {
|
||||
const routerstatus_t *rs =
|
||||
router_get_consensus_status_by_id(identity_digest);
|
||||
if (rs && rs->version_supports_extrainfo_upload)
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -431,8 +421,6 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
* the behavior supported by our oldest bridge; see for example
|
||||
* any_bridges_dont_support_microdescriptors().
|
||||
*/
|
||||
/* XXX024 Not all bridges handle conditional consensus downloading,
|
||||
* so, for now, never assume the server supports that. -PP */
|
||||
const node_t *node = choose_random_entry(NULL);
|
||||
if (node && node->ri) {
|
||||
/* every bridge has a routerinfo. */
|
||||
@ -440,9 +428,8 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
routerinfo_t *ri = node->ri;
|
||||
node_get_addr(node, &addr);
|
||||
directory_initiate_command(ri->address, &addr,
|
||||
ri->or_port, 0,
|
||||
0, /* don't use conditional consensus url */
|
||||
1, ri->cache_info.identity_digest,
|
||||
ri->or_port, 0/*no dirport*/,
|
||||
ri->cache_info.identity_digest,
|
||||
dir_purpose,
|
||||
router_purpose,
|
||||
0, resource, NULL, 0, if_modified_since);
|
||||
@ -596,8 +583,6 @@ directory_initiate_command_routerstatus_rend(const routerstatus_t *status,
|
||||
|
||||
directory_initiate_command_rend(address, &addr,
|
||||
status->or_port, status->dir_port,
|
||||
status->version_supports_conditional_consensus,
|
||||
status->version_supports_begindir,
|
||||
status->identity_digest,
|
||||
dir_purpose, router_purpose,
|
||||
anonymized_connection, resource,
|
||||
@ -855,16 +840,14 @@ directory_command_should_use_begindir(const or_options_t *options,
|
||||
void
|
||||
directory_initiate_command(const char *address, const tor_addr_t *_addr,
|
||||
uint16_t or_port, uint16_t dir_port,
|
||||
int supports_conditional_consensus,
|
||||
int supports_begindir, const char *digest,
|
||||
const char *digest,
|
||||
uint8_t dir_purpose, uint8_t router_purpose,
|
||||
int anonymized_connection, const char *resource,
|
||||
const char *payload, size_t payload_len,
|
||||
time_t if_modified_since)
|
||||
{
|
||||
directory_initiate_command_rend(address, _addr, or_port, dir_port,
|
||||
supports_conditional_consensus,
|
||||
supports_begindir, digest, dir_purpose,
|
||||
digest, dir_purpose,
|
||||
router_purpose, anonymized_connection,
|
||||
resource, payload, payload_len,
|
||||
if_modified_since, NULL);
|
||||
@ -889,8 +872,7 @@ is_sensitive_dir_purpose(uint8_t dir_purpose)
|
||||
static void
|
||||
directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
|
||||
uint16_t or_port, uint16_t dir_port,
|
||||
int supports_conditional_consensus,
|
||||
int supports_begindir, const char *digest,
|
||||
const char *digest,
|
||||
uint8_t dir_purpose, uint8_t router_purpose,
|
||||
int anonymized_connection,
|
||||
const char *resource,
|
||||
@ -901,8 +883,7 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
|
||||
dir_connection_t *conn;
|
||||
const or_options_t *options = get_options();
|
||||
int socket_error = 0;
|
||||
int use_begindir = supports_begindir &&
|
||||
directory_command_should_use_begindir(options, _addr,
|
||||
int use_begindir = directory_command_should_use_begindir(options, _addr,
|
||||
or_port, router_purpose, anonymized_connection);
|
||||
tor_addr_t addr;
|
||||
|
||||
@ -979,7 +960,6 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
|
||||
/* queue the command on the outbuf */
|
||||
directory_send_command(conn, dir_purpose, 1, resource,
|
||||
payload, payload_len,
|
||||
supports_conditional_consensus,
|
||||
if_modified_since);
|
||||
connection_watch_events(TO_CONN(conn), READ_EVENT | WRITE_EVENT);
|
||||
/* writable indicates finish, readable indicates broken link,
|
||||
@ -1024,7 +1004,6 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
|
||||
/* queue the command on the outbuf */
|
||||
directory_send_command(conn, dir_purpose, 0, resource,
|
||||
payload, payload_len,
|
||||
supports_conditional_consensus,
|
||||
if_modified_since);
|
||||
|
||||
connection_watch_events(TO_CONN(conn), READ_EVENT|WRITE_EVENT);
|
||||
@ -1074,8 +1053,7 @@ _compare_strs(const void **a, const void **b)
|
||||
* If 'resource' is provided, it is the name of a consensus flavor to request.
|
||||
*/
|
||||
static char *
|
||||
directory_get_consensus_url(int supports_conditional_consensus,
|
||||
const char *resource)
|
||||
directory_get_consensus_url(const char *resource)
|
||||
{
|
||||
char *url = NULL;
|
||||
const char *hyphen, *flavor;
|
||||
@ -1087,7 +1065,7 @@ directory_get_consensus_url(int supports_conditional_consensus,
|
||||
hyphen = "-";
|
||||
}
|
||||
|
||||
if (supports_conditional_consensus) {
|
||||
{
|
||||
char *authority_id_list;
|
||||
smartlist_t *authority_digests = smartlist_new();
|
||||
|
||||
@ -1112,9 +1090,6 @@ directory_get_consensus_url(int supports_conditional_consensus,
|
||||
SMARTLIST_FOREACH(authority_digests, char *, cp, tor_free(cp));
|
||||
smartlist_free(authority_digests);
|
||||
tor_free(authority_id_list);
|
||||
} else {
|
||||
tor_asprintf(&url, "/tor/status-vote/current/consensus%s%s.z",
|
||||
hyphen, flavor);
|
||||
}
|
||||
return url;
|
||||
}
|
||||
@ -1126,7 +1101,6 @@ static void
|
||||
directory_send_command(dir_connection_t *conn,
|
||||
int purpose, int direct, const char *resource,
|
||||
const char *payload, size_t payload_len,
|
||||
int supports_conditional_consensus,
|
||||
time_t if_modified_since)
|
||||
{
|
||||
char proxystring[256];
|
||||
@ -1189,8 +1163,7 @@ directory_send_command(dir_connection_t *conn,
|
||||
/* resource is optional. If present, it's a flavor name */
|
||||
tor_assert(!payload);
|
||||
httpcommand = "GET";
|
||||
url = directory_get_consensus_url(supports_conditional_consensus,
|
||||
resource);
|
||||
url = directory_get_consensus_url(resource);
|
||||
log_info(LD_DIR, "Downloading consensus from %s using %s",
|
||||
hoststring, url);
|
||||
break;
|
||||
|
@ -51,8 +51,7 @@ int connection_dir_finished_connecting(dir_connection_t *conn);
|
||||
void connection_dir_about_to_close(dir_connection_t *dir_conn);
|
||||
void directory_initiate_command(const char *address, const tor_addr_t *addr,
|
||||
uint16_t or_port, uint16_t dir_port,
|
||||
int supports_conditional_consensus,
|
||||
int supports_begindir, const char *digest,
|
||||
const char *digest,
|
||||
uint8_t dir_purpose, uint8_t router_purpose,
|
||||
int anonymized_connection,
|
||||
const char *resource,
|
||||
|
@ -2435,8 +2435,6 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
|
||||
int listbaddirs, int vote_on_hsdirs)
|
||||
{
|
||||
const or_options_t *options = get_options();
|
||||
int unstable_version =
|
||||
!tor_version_as_new_as(ri->platform,"0.1.1.16-rc-cvs");
|
||||
uint32_t routerbw = router_get_advertised_bandwidth(ri);
|
||||
|
||||
memset(rs, 0, sizeof(routerstatus_t));
|
||||
@ -2448,8 +2446,7 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
|
||||
rs->is_exit = node->is_exit;
|
||||
rs->is_stable = node->is_stable =
|
||||
router_is_active(ri, node, now) &&
|
||||
!dirserv_thinks_router_is_unreliable(now, ri, 1, 0) &&
|
||||
!unstable_version;
|
||||
!dirserv_thinks_router_is_unreliable(now, ri, 1, 0);
|
||||
rs->is_fast = node->is_fast =
|
||||
router_is_active(ri, node, now) &&
|
||||
!dirserv_thinks_router_is_unreliable(now, ri, 0, 1);
|
||||
|
@ -1530,13 +1530,7 @@ routerstatus_has_changed(const routerstatus_t *a, const routerstatus_t *b)
|
||||
a->is_bad_exit != b->is_bad_exit ||
|
||||
a->is_bad_directory != b->is_bad_directory ||
|
||||
a->is_hs_dir != b->is_hs_dir ||
|
||||
a->version_known != b->version_known ||
|
||||
a->version_supports_begindir != b->version_supports_begindir ||
|
||||
a->version_supports_extrainfo_upload !=
|
||||
b->version_supports_extrainfo_upload ||
|
||||
a->version_supports_conditional_consensus !=
|
||||
b->version_supports_conditional_consensus ||
|
||||
a->version_supports_v3_dir != b->version_supports_v3_dir;
|
||||
a->version_known != b->version_known;
|
||||
}
|
||||
|
||||
/** Notify controllers of any router status entries that changed between
|
||||
|
11
src/or/or.h
11
src/or/or.h
@ -1854,16 +1854,7 @@ typedef struct routerstatus_t {
|
||||
* included.) We'll replace all these with a big tor_version_t or a char[]
|
||||
* if the number of traits we care about ever becomes incredibly big. */
|
||||
unsigned int version_known:1;
|
||||
/** True iff this router is a version that supports BEGIN_DIR cells. */
|
||||
unsigned int version_supports_begindir:1;
|
||||
/** True iff this router is a version that supports conditional consensus
|
||||
* downloads (signed by list of authorities). */
|
||||
unsigned int version_supports_conditional_consensus:1;
|
||||
/** True iff this router is a version that we can post extrainfo docs to. */
|
||||
unsigned int version_supports_extrainfo_upload:1;
|
||||
/** True iff this router is a version that, if it caches directory info,
|
||||
* we can get v3 downloads from. */
|
||||
unsigned int version_supports_v3_dir:1;
|
||||
|
||||
/** True iff this router is a version that, if it caches directory info,
|
||||
* we can get microdescriptors from. */
|
||||
unsigned int version_supports_microdesc_cache:1;
|
||||
|
@ -954,8 +954,7 @@ consider_testing_reachability(int test_or, int test_dir)
|
||||
/* ask myself, via tor, for my server descriptor. */
|
||||
directory_initiate_command(me->address, &addr,
|
||||
me->or_port, me->dir_port,
|
||||
0, /* does not matter */
|
||||
0, me->cache_info.identity_digest,
|
||||
me->cache_info.identity_digest,
|
||||
DIR_PURPOSE_FETCH_SERVERDESC,
|
||||
ROUTER_PURPOSE_GENERAL,
|
||||
1, "authority.z", NULL, 0, 0);
|
||||
|
@ -995,7 +995,7 @@ router_get_my_share_of_directory_requests(double *v2_share_out,
|
||||
}
|
||||
}
|
||||
|
||||
if (rs->version_supports_v3_dir) {
|
||||
{
|
||||
sl_last_total_weighted_bw = 0;
|
||||
router_pick_directory_server(V3_DIRINFO, pds_flags);
|
||||
if (sl_last_total_weighted_bw != 0) {
|
||||
@ -1127,12 +1127,6 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags)
|
||||
continue;
|
||||
if (requireother && router_digest_is_me(node->identity))
|
||||
continue;
|
||||
if (type & V3_DIRINFO) {
|
||||
if (!(status->version_supports_v3_dir ||
|
||||
router_digest_is_trusted_dir_type(node->identity,
|
||||
V3_DIRINFO)))
|
||||
continue;
|
||||
}
|
||||
is_trusted = router_digest_is_trusted_dir(node->identity);
|
||||
if ((type & V2_DIRINFO) && !(node->rs->is_v2_dir || is_trusted))
|
||||
continue;
|
||||
@ -1155,7 +1149,6 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags)
|
||||
is_overloaded = status->last_dir_503_at + DIR_503_TIMEOUT > now;
|
||||
|
||||
if (prefer_tunnel &&
|
||||
status->version_supports_begindir &&
|
||||
(!fascistfirewall ||
|
||||
fascist_firewall_allows_address_or(&addr, status->or_port)))
|
||||
smartlist_add(is_trusted ? trusted_tunnel :
|
||||
@ -4159,11 +4152,6 @@ add_trusted_dir_server(const char *nickname, const char *address,
|
||||
ent->fake_status.dir_port = ent->dir_port;
|
||||
ent->fake_status.or_port = ent->or_port;
|
||||
|
||||
if (ent->or_port)
|
||||
ent->fake_status.version_supports_begindir = 1;
|
||||
|
||||
ent->fake_status.version_supports_conditional_consensus = 1;
|
||||
|
||||
smartlist_add(trusted_dir_servers, ent);
|
||||
router_dir_info_changed();
|
||||
return ent;
|
||||
|
@ -2146,20 +2146,9 @@ routerstatus_parse_entry_from_string(memarea_t *area,
|
||||
tor_assert(tok->n_args == 1);
|
||||
rs->version_known = 1;
|
||||
if (strcmpstart(tok->args[0], "Tor ")) {
|
||||
rs->version_supports_begindir = 1;
|
||||
rs->version_supports_extrainfo_upload = 1;
|
||||
rs->version_supports_conditional_consensus = 1;
|
||||
rs->version_supports_microdesc_cache = 1;
|
||||
rs->version_supports_optimistic_data = 1;
|
||||
} else {
|
||||
rs->version_supports_begindir =
|
||||
tor_version_as_new_as(tok->args[0], "0.2.0.1-alpha");
|
||||
rs->version_supports_extrainfo_upload =
|
||||
tor_version_as_new_as(tok->args[0], "0.2.0.0-alpha-dev (r10070)");
|
||||
rs->version_supports_v3_dir =
|
||||
tor_version_as_new_as(tok->args[0], "0.2.0.8-alpha");
|
||||
rs->version_supports_conditional_consensus =
|
||||
tor_version_as_new_as(tok->args[0], "0.2.1.1-alpha");
|
||||
rs->version_supports_microdesc_cache =
|
||||
tor_version_supports_microdescriptors(tok->args[0]);
|
||||
rs->version_supports_optimistic_data =
|
||||
|
Loading…
Reference in New Issue
Block a user