mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 05:03:43 +01:00
r17246@catbus: nickm | 2007-12-18 18:45:17 -0500
Fix some xxx020 items. svn:r12864
This commit is contained in:
parent
076097281d
commit
d07122ba47
@ -76,6 +76,8 @@ Changes in version 0.2.0.13-alpha - 2007-12-??
|
||||
in really weird results on platforms whose sys/types.h files define
|
||||
nonstandard integer types.
|
||||
- Fix compilation with --disable-threads set.
|
||||
- Authorities decide whether they're authoritative for a given router
|
||||
based on the router's purpose.
|
||||
|
||||
o Minor features:
|
||||
- On USR1, when dmalloc is in use, log the top 10 memory
|
||||
|
@ -2703,7 +2703,7 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (authdir_mode_handles_descs(options) &&
|
||||
if (authdir_mode_handles_descs(options, -1) &&
|
||||
!strcmp(url,"/tor/")) { /* server descriptor post */
|
||||
const char *msg = NULL;
|
||||
uint8_t purpose = authdir_mode_bridge(options) ?
|
||||
|
@ -46,8 +46,10 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key,
|
||||
MAX_NICKNAME_LEN+BASE64_DIGEST_LEN*2+ISO_TIME_LEN+INET_NTOA_BUF_LEN+ \
|
||||
5*2 /* ports */ + 10 /* punctuation */ + \
|
||||
/* second line */ \
|
||||
(LONGEST_STATUS_FLAG_NAME_LEN+1)*N_STATUS_FLAGS + 2)
|
||||
/* XXX020 RS_ENTRY_LEN should probably include space for v lines */
|
||||
(LONGEST_STATUS_FLAG_NAME_LEN+1)*N_STATUS_FLAGS + 2 + \
|
||||
/* v line. XXXX020 not accurate! */ \
|
||||
80 \
|
||||
)
|
||||
|
||||
size_t len;
|
||||
char *status = NULL;
|
||||
|
@ -1295,7 +1295,7 @@ do_hup(void)
|
||||
return -1;
|
||||
}
|
||||
options = get_options(); /* they have changed now */
|
||||
if (authdir_mode_handles_descs(options)) {
|
||||
if (authdir_mode_handles_descs(options, -1)) {
|
||||
/* reload the approved-routers file */
|
||||
if (dirserv_load_fingerprint_file() < 0) {
|
||||
/* warnings are logged from dirserv_load_fingerprint_file() directly */
|
||||
|
@ -3718,7 +3718,7 @@ int authdir_mode(or_options_t *options);
|
||||
int authdir_mode_v1(or_options_t *options);
|
||||
int authdir_mode_v2(or_options_t *options);
|
||||
int authdir_mode_v3(or_options_t *options);
|
||||
int authdir_mode_handles_descs(or_options_t *options);
|
||||
int authdir_mode_handles_descs(or_options_t *options, int purpose);
|
||||
int authdir_mode_publishes_statuses(or_options_t *options);
|
||||
int authdir_mode_tests_reachability(or_options_t *options);
|
||||
int authdir_mode_bridge(or_options_t *options);
|
||||
|
@ -834,13 +834,22 @@ authdir_mode_any_nonhidserv(or_options_t *options)
|
||||
options->V2AuthoritativeDir ||
|
||||
options->V3AuthoritativeDir);
|
||||
}
|
||||
/** Return true iff we are an authoritative directory server that
|
||||
* is willing to receive or serve descriptors on its dirport.
|
||||
*/
|
||||
/** Return true iff we are an authoritative directory server that is
|
||||
* authoritative about receiving and serving descriptors of type
|
||||
* <b>purpose</b> its dirport. Use -1 for "any purpose". */
|
||||
int
|
||||
authdir_mode_handles_descs(or_options_t *options)
|
||||
authdir_mode_handles_descs(or_options_t *options, int purpose)
|
||||
{
|
||||
return authdir_mode_any_nonhidserv(options);
|
||||
if (purpose < 0)
|
||||
return authdir_mode_any_nonhidserv(options);
|
||||
else if (purpose == ROUTER_PURPOSE_GENERAL)
|
||||
return (options->V1AuthoritativeDir ||
|
||||
options->V2AuthoritativeDir ||
|
||||
options->V3AuthoritativeDir);
|
||||
else if (purpose == ROUTER_PURPOSE_BRIDGE)
|
||||
return (options->BridgeAuthoritativeDir);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
/** Return true iff we are an authoritative directory server that
|
||||
* publishes its own network statuses.
|
||||
@ -858,7 +867,7 @@ authdir_mode_publishes_statuses(or_options_t *options)
|
||||
int
|
||||
authdir_mode_tests_reachability(or_options_t *options)
|
||||
{
|
||||
return authdir_mode_handles_descs(options);
|
||||
return authdir_mode_handles_descs(options, -1);
|
||||
}
|
||||
/** Return true iff we believe ourselves to be a bridge authoritative
|
||||
* directory server.
|
||||
|
@ -2624,7 +2624,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
|
||||
int from_cache, int from_fetch)
|
||||
{
|
||||
const char *id_digest;
|
||||
int authdir = authdir_mode(get_options());
|
||||
int authdir = authdir_mode_handles_descs(get_options(), router->purpose);
|
||||
int authdir_believes_valid = 0;
|
||||
routerinfo_t *old_router;
|
||||
networkstatus_vote_t *consensus = networkstatus_get_latest_consensus();
|
||||
@ -2706,7 +2706,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
|
||||
}
|
||||
|
||||
if (router->purpose == ROUTER_PURPOSE_GENERAL &&
|
||||
consensus && !in_consensus && !authdir_mode(get_options())) {
|
||||
consensus && !in_consensus && !authdir) {
|
||||
/* If it's a general router not listed in the consensus, then don't
|
||||
* consider replacing the latest router with it. */
|
||||
if (!from_cache && should_cache_old_descriptors())
|
||||
@ -3830,9 +3830,8 @@ update_consensus_router_descriptor_downloads(time_t now)
|
||||
smartlist_add(downloadable, rs->descriptor_digest);
|
||||
});
|
||||
|
||||
if (!authdir_mode_handles_descs(options) && smartlist_len(no_longer_old)) {
|
||||
/* XXX020 Nick: where do authorities decide never to put stuff in old?
|
||||
* We should make sure bridge descriptors do that too. */
|
||||
if (!authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)
|
||||
&& smartlist_len(no_longer_old)) {
|
||||
routerlist_t *rl = router_get_routerlist();
|
||||
log_info(LD_DIR, "%d router descriptors listed in consensus are "
|
||||
"currently in old_routers; making them current.",
|
||||
|
Loading…
Reference in New Issue
Block a user