summaryrefslogtreecommitdiff
path: root/src/or/main.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-11-21 17:23:25 -0500
committerNick Mathewson <nickm@torproject.org>2016-11-30 14:42:53 -0500
commitdbbaa515183e250e20c40fa7b4c00df9487058fa (patch)
treead7047ded85f1c231ff158e6aad8201824a72148 /src/or/main.c
parentde617a471442342fc2abafdde4e250fd31eb45ac (diff)
downloadtor-dbbaa515183e250e20c40fa7b4c00df9487058fa.tar.gz
tor-dbbaa515183e250e20c40fa7b4c00df9487058fa.zip
Use the new guard notification/selection APIs throughout Tor
This patch doesn't cover every case; omitted cases are marked with "XXXX prop271", as usual. It leaves both the old interface and the new interface for guard status notification, since they don't actually work in the same way: the new API wants to be told when a circuit has failed or succeeded, whereas the old API wants to know when a channel has failed or succeeded. I ran into some trouble with directory guard stuff, since when we pick the directory guard, we don't actually have a circuit to associate it with. I solved that by allowing guard states to be associated with directory connections, not just circuits.
Diffstat (limited to 'src/or/main.c')
-rw-r--r--src/or/main.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/or/main.c b/src/or/main.c
index a508003f97..65d1c1fd79 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -979,7 +979,7 @@ directory_info_has_arrived(time_t now, int from_cache, int suppress_logs)
/* if we have enough dir info, then update our guard status with
* whatever we just learned. */
- entry_guards_compute_status(options, now);
+ guards_update_all();
/* Don't even bother trying to get extrainfo until the rest of our
* directory info is up-to-date */
if (options->DownloadExtraInfo)
@@ -1376,6 +1376,9 @@ run_scheduled_events(time_t now)
/* 0c. If we've deferred log messages for the controller, handle them now */
flush_pending_log_callbacks();
+ /* Maybe enough time elapsed for us to reconsider a circuit. */
+ circuit_upgrade_circuits_from_guard_wait();
+
if (options->UseBridges && !options->DisableNetwork) {
fetch_bridge_descriptors(options, now);
}