diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-02-02 18:58:04 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-02-02 18:58:04 +0000 |
commit | 07e6eecdb2df0b4130201c4252770724f74c642c (patch) | |
tree | c9b068a26c7b5467c0e215dc8c9481243eb48a3f /src/or | |
parent | 85076992560c80502b81424eb08d876e61e0f068 (diff) | |
download | tor-07e6eecdb2df0b4130201c4252770724f74c642c.tar tor-07e6eecdb2df0b4130201c4252770724f74c642c.tar.gz |
r12122@Kushana: nickm | 2007-02-02 10:41:39 -0500
Fail when we are unable to parse the nameserver configuration.
svn:r9475
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/config.c | 6 | ||||
-rw-r--r-- | src/or/dns.c | 11 | ||||
-rw-r--r-- | src/or/or.h | 2 |
3 files changed, 11 insertions, 8 deletions
diff --git a/src/or/config.c b/src/or/config.c index d332c60fb..7d7e788f0 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -990,11 +990,13 @@ options_act(or_options_t *old_options) inform_testing_reachability(); } cpuworkers_rotate(); - dns_reset(); + if (dns_reset()) + return -1; } #ifdef USE_EVENTDNS else { - dns_reset(); + if (dns_reset()) + return -1; } #endif } diff --git a/src/or/dns.c b/src/or/dns.c index c86bd9c57..b7f27c64b 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -222,8 +222,9 @@ dns_init(void) return 0; } -/** Called when DNS-related options change (or may have changed) */ -void +/** Called when DNS-related options change (or may have changed). Returns -1 + * on failure, 0 on success. */ +int dns_reset(void) { #ifdef USE_EVENTDNS @@ -236,8 +237,7 @@ dns_reset(void) resolv_conf_mtime = 0; } else { if (configure_nameservers(0) < 0) - /* XXXX012 */ - return; + return -1; } #else dnsworkers_rotate(); @@ -322,7 +322,8 @@ dns_free_all(void) SMARTLIST_FOREACH(cached_resolve_pqueue, cached_resolve_t *, res, { /* XXXX012 The hash lookups here could be quite slow; remove them - * once we're happy. */ + * once we're happy. (Leave them in for at least 0.1.2.7-alpha, so they + * get some testing.) -NM */ if (res->state == CACHE_STATE_DONE) { cached_resolve_t *found = HT_FIND(cache_map, &cache_root, res); tor_assert(!found || found != res); diff --git a/src/or/or.h b/src/or/or.h index 83607af3e..303f3d2e0 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2415,7 +2415,7 @@ uint32_t dns_clip_ttl(uint32_t ttl); int connection_dns_finished_flushing(connection_t *conn); int connection_dns_reached_eof(connection_t *conn); int connection_dns_process_inbuf(connection_t *conn); -void dns_reset(void); +int dns_reset(void); void connection_dns_remove(edge_connection_t *conn); void assert_connection_edge_not_dns_pending(edge_connection_t *conn); void assert_all_pending_dns_resolves_ok(void); |