summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2004-07-21 23:43:47 +0000
committerRoger Dingledine <arma@torproject.org>2004-07-21 23:43:47 +0000
commit3c2c8ed42bdcc26edebb73531e0d6a22ab2fff07 (patch)
tree3dde6d847997ab4c2dc8a9641c1dff89694c2ffa
parentf82a36508df3d1bb6517b94c8e86325c6f6d1360 (diff)
downloadtor-3c2c8ed42bdcc26edebb73531e0d6a22ab2fff07.tar.gz
tor-3c2c8ed42bdcc26edebb73531e0d6a22ab2fff07.zip
0.0.8 ORs should autoconnect to authdirservers and 0.0.7 servers
svn:r2091
-rw-r--r--src/or/main.c7
-rw-r--r--src/or/router.c8
2 files changed, 12 insertions, 3 deletions
diff --git a/src/or/main.c b/src/or/main.c
index 759487c0ae..640edffe75 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -353,7 +353,7 @@ void directory_has_arrived(void) {
has_fetched_directory=1;
- if(clique_mode()) { /* connect to them all */
+ if(server_mode()) { /* connect to the appropriate routers */
router_retry_connections();
}
}
@@ -541,7 +541,10 @@ static void run_scheduled_events(time_t now) {
if(authdir_mode()) {
/* We're a directory; dump any old descriptors. */
dirserv_remove_old_servers();
- /* dirservers try to reconnect, in case connections have failed */
+ }
+ if(server_mode()) {
+ /* dirservers try to reconnect, in case connections have failed;
+ * and normal servers try to reconnect to dirservers */
router_retry_connections();
}
diff --git a/src/or/router.c b/src/or/router.c
index f28778f0e3..475742c22c 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -347,18 +347,24 @@ int init_keys(void) {
* Clique maintenance
*/
-/** OR only: try to open connections to all of the other ORs we know about.
+/** OR only: if in clique mode, try to open connections to all of the
+ * other ORs we know about. Otherwise, open connections to those we
+ * think are in clique mode.
*/
void router_retry_connections(void) {
int i;
routerinfo_t *router;
routerlist_t *rl;
+ tor_assert(server_mode());
+
router_get_routerlist(&rl);
for (i=0;i < smartlist_len(rl->routers);i++) {
router = smartlist_get(rl->routers, i);
if(router_is_me(router))
continue;
+ if(!clique_mode() && !router_is_clique_mode(router))
+ continue;
if(!connection_get_by_identity_digest(router->identity_digest,
CONN_TYPE_OR)) {
/* not in the list */