[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r12864: Fix some xxx020 items. (in tor/trunk: . src/or)
Author: nickm
Date: 2007-12-18 18:45:24 -0500 (Tue, 18 Dec 2007)
New Revision: 12864
Modified:
tor/trunk/
tor/trunk/ChangeLog
tor/trunk/src/or/directory.c
tor/trunk/src/or/dirvote.c
tor/trunk/src/or/main.c
tor/trunk/src/or/or.h
tor/trunk/src/or/router.c
tor/trunk/src/or/routerlist.c
Log:
r17246@catbus: nickm | 2007-12-18 18:45:17 -0500
Fix some xxx020 items.
Property changes on: tor/trunk
___________________________________________________________________
svk:merge ticket from /tor/trunk [r17246] on 8246c3cf-6607-4228-993b-4d95d33730f1
Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog 2007-12-18 23:45:19 UTC (rev 12863)
+++ tor/trunk/ChangeLog 2007-12-18 23:45:24 UTC (rev 12864)
@@ -76,6 +76,8 @@
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
Modified: tor/trunk/src/or/directory.c
===================================================================
--- tor/trunk/src/or/directory.c 2007-12-18 23:45:19 UTC (rev 12863)
+++ tor/trunk/src/or/directory.c 2007-12-18 23:45:24 UTC (rev 12864)
@@ -2703,7 +2703,7 @@
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) ?
Modified: tor/trunk/src/or/dirvote.c
===================================================================
--- tor/trunk/src/or/dirvote.c 2007-12-18 23:45:19 UTC (rev 12863)
+++ tor/trunk/src/or/dirvote.c 2007-12-18 23:45:24 UTC (rev 12864)
@@ -46,8 +46,10 @@
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;
Modified: tor/trunk/src/or/main.c
===================================================================
--- tor/trunk/src/or/main.c 2007-12-18 23:45:19 UTC (rev 12863)
+++ tor/trunk/src/or/main.c 2007-12-18 23:45:24 UTC (rev 12864)
@@ -1295,7 +1295,7 @@
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 */
Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h 2007-12-18 23:45:19 UTC (rev 12863)
+++ tor/trunk/src/or/or.h 2007-12-18 23:45:24 UTC (rev 12864)
@@ -3718,7 +3718,7 @@
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);
Modified: tor/trunk/src/or/router.c
===================================================================
--- tor/trunk/src/or/router.c 2007-12-18 23:45:19 UTC (rev 12863)
+++ tor/trunk/src/or/router.c 2007-12-18 23:45:24 UTC (rev 12864)
@@ -834,13 +834,22 @@
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 @@
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.
Modified: tor/trunk/src/or/routerlist.c
===================================================================
--- tor/trunk/src/or/routerlist.c 2007-12-18 23:45:19 UTC (rev 12863)
+++ tor/trunk/src/or/routerlist.c 2007-12-18 23:45:24 UTC (rev 12864)
@@ -2624,7 +2624,7 @@
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 @@
}
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 @@
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.",