aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/dns.c7
-rw-r--r--src/or/routerlist.c5
2 files changed, 9 insertions, 3 deletions
diff --git a/src/or/dns.c b/src/or/dns.c
index 66e9334b1..851041d77 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -634,6 +634,7 @@ static int dnsworker_main(void *data) {
uint32_t ip;
int *fdarray = data;
int fd;
+ int result;
tor_close_socket(fdarray[0]); /* this is the side of the socketpair the parent uses */
fd = fdarray[1]; /* this side is ours */
@@ -655,7 +656,11 @@ static int dnsworker_main(void *data) {
}
address[address_len] = 0; /* null terminate it */
- switch (tor_lookup_hostname(address, &ip)) {
+ result = tor_lookup_hostname(address, &ip);
+ /* Make 0.0.0.0 an error, so that we can use "0" to mean "no addr") */
+ if (!ip)
+ result = -1;
+ switch (result) {
case 1:
log_fn(LOG_INFO,"Could not resolve dest addr %s (transient).",address);
answer[0] = DNS_RESOLVE_FAILED_TRANSIENT;
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 1c9d83756..1d03a6d1b 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -237,7 +237,7 @@ int router_nickname_matches(routerinfo_t *router, const char *nickname)
*/
routerinfo_t *router_get_by_nickname(const char *nickname)
{
- int i, maybedigest, mustbedigest;
+ int i, maybedigest;
routerinfo_t *router;
char digest[DIGEST_LEN];
@@ -562,7 +562,8 @@ int router_load_routerlist_from_directory(const char *s,
static int
router_resolve(routerinfo_t *router)
{
- if (tor_lookup_hostname(router->address, &router->addr) != 0) {
+ if (tor_lookup_hostname(router->address, &router->addr) != 0
+ || !router->addr) {
log_fn(LOG_WARN,"Could not get address for router %s (%s).",
router->address, router->nickname);
return -1;