diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-11-09 09:20:55 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-11-09 09:20:55 -0500 |
commit | 552218437ccbe8fc13ad431fbe2167331b886497 (patch) | |
tree | 8a7f7f55cc0752d4499b4b7392ee8a0827b3a696 /src/or | |
parent | 06260315645945ca9e08b5a19b67c8adad65a698 (diff) | |
parent | 0c6eabf08898e0c9f2faa397f2c2bb5fb80b78b9 (diff) | |
download | tor-552218437ccbe8fc13ad431fbe2167331b886497.tar.gz tor-552218437ccbe8fc13ad431fbe2167331b886497.zip |
Merge branch 'ticket12062_squashed'
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/connection.c | 6 | ||||
-rw-r--r-- | src/or/dns.c | 4 | ||||
-rw-r--r-- | src/or/main.c | 14 | ||||
-rw-r--r-- | src/or/networkstatus.c | 9 | ||||
-rw-r--r-- | src/or/routerlist.c | 2 |
5 files changed, 26 insertions, 9 deletions
diff --git a/src/or/connection.c b/src/or/connection.c index e6aae71627..24f5a64622 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -1748,7 +1748,11 @@ connection_connect_sockaddr,(connection_t *conn, if (get_options()->DisableNetwork) { /* We should never even try to connect anyplace if DisableNetwork is set. - * Warn if we do, and refuse to make the connection. */ + * Warn if we do, and refuse to make the connection. + * + * We only check DisableNetwork here, not we_are_hibernating(), since + * we'll still try to fulfill client requests sometimes in the latter case + * (if it is soft hibernation) */ static ratelim_t disablenet_violated = RATELIM_INIT(30*60); *socket_error = SOCK_ERRNO(ENETUNREACH); log_fn_ratelim(&disablenet_violated, LOG_WARN, LD_BUG, diff --git a/src/or/dns.c b/src/or/dns.c index 4194a29a6b..c992c8c358 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -1665,7 +1665,7 @@ launch_resolve,(cached_resolve_t *resolve)) tor_addr_t a; int r; - if (get_options()->DisableNetwork) + if (net_is_disabled()) return -1; /* What? Nameservers not configured? Sounds like a bug. */ @@ -1900,7 +1900,7 @@ launch_test_addresses(evutil_socket_t fd, short event, void *args) (void)event; (void)args; - if (options->DisableNetwork) + if (net_is_disabled()) return; log_info(LD_EXIT, "Launching checks to see whether our nameservers like to " diff --git a/src/or/main.c b/src/or/main.c index 97dcdcb3c2..e349703918 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1471,7 +1471,9 @@ run_scheduled_events(time_t now) /* Maybe enough time elapsed for us to reconsider a circuit. */ circuit_upgrade_circuits_from_guard_wait(); - if (options->UseBridges && !options->DisableNetwork) { + if (options->UseBridges && !net_is_disabled()) { + /* Note: this check uses net_is_disabled(), not should_delay_dir_fetches() + * -- the latter is only for fetching consensus-derived directory info. */ fetch_bridge_descriptors(options, now); } @@ -1577,7 +1579,7 @@ rotate_onion_key_callback(time_t now, const or_options_t *options) if (router_rebuild_descriptor(1)<0) { log_info(LD_CONFIG, "Couldn't rebuild router descriptor"); } - if (advertised_server_mode() && !options->DisableNetwork) + if (advertised_server_mode() && !net_is_disabled()) router_upload_dir_desc_to_dirservers(0); return ONION_KEY_CONSENSUS_CHECK_INTERVAL; } @@ -1942,9 +1944,11 @@ check_descriptor_callback(time_t now, const or_options_t *options) * address has changed. */ #define CHECK_DESCRIPTOR_INTERVAL (60) + (void)options; + /* 2b. Once per minute, regenerate and upload the descriptor if the old * one is inaccurate. */ - if (!options->DisableNetwork) { + if (!net_is_disabled()) { check_descriptor_bandwidth_changed(now); check_descriptor_ipaddress_changed(now); mark_my_descriptor_dirty_if_too_old(now); @@ -1976,7 +1980,7 @@ check_for_reachability_bw_callback(time_t now, const or_options_t *options) * 20 minutes of our uptime. */ if (server_mode(options) && (have_completed_a_circuit() || !any_predicted_circuits(now)) && - !we_are_hibernating()) { + !net_is_disabled()) { if (stats_n_seconds_working < TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT) { consider_testing_reachability(1, dirport_reachability_count==0); if (++dirport_reachability_count > 5) @@ -2478,7 +2482,7 @@ do_hup(void) /* retry appropriate downloads */ router_reset_status_download_failures(); router_reset_descriptor_download_failures(); - if (!options->DisableNetwork) + if (!net_is_disabled()) update_networkstatus_downloads(time(NULL)); /* We'll retry routerstatus downloads in about 10 seconds; no need to diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index e4a6a76749..a7aa01f787 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -52,6 +52,7 @@ #include "dirserv.h" #include "dirvote.h" #include "entrynodes.h" +#include "hibernate.h" #include "main.h" #include "microdesc.h" #include "networkstatus.h" @@ -1208,6 +1209,14 @@ should_delay_dir_fetches(const or_options_t *options, const char **msg_out) return 1; } + if (we_are_hibernating()) { + if (msg_out) { + *msg_out = "We are hibernating or shutting down."; + } + log_info(LD_DIR, "Delaying dir fetches (Hibernating or shutting down)"); + return 1; + } + if (options->UseBridges) { if (!any_bridge_descriptors_known()) { if (msg_out) { diff --git a/src/or/routerlist.c b/src/or/routerlist.c index c74e4873c5..fb8225e0d6 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -4545,7 +4545,7 @@ signed_desc_digest_is_recognized(signed_descriptor_t *desc) void update_all_descriptor_downloads(time_t now) { - if (get_options()->DisableNetwork) + if (should_delay_dir_fetches(get_options(), NULL)) return; update_router_descriptor_downloads(now); update_microdesc_downloads(now); |