When tor_lookup_hostname says 0.0.0.0, treat it as an error.

svn:r2003
This commit is contained in:
Nick Mathewson 2004-07-04 04:52:43 +00:00
parent 198e5f4c16
commit 0f3fcfd1db
2 changed files with 9 additions and 3 deletions

View File

@ -634,6 +634,7 @@ static int dnsworker_main(void *data) {
uint32_t ip; uint32_t ip;
int *fdarray = data; int *fdarray = data;
int fd; int fd;
int result;
tor_close_socket(fdarray[0]); /* this is the side of the socketpair the parent uses */ tor_close_socket(fdarray[0]); /* this is the side of the socketpair the parent uses */
fd = fdarray[1]; /* this side is ours */ fd = fdarray[1]; /* this side is ours */
@ -655,7 +656,11 @@ static int dnsworker_main(void *data) {
} }
address[address_len] = 0; /* null terminate it */ 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: case 1:
log_fn(LOG_INFO,"Could not resolve dest addr %s (transient).",address); log_fn(LOG_INFO,"Could not resolve dest addr %s (transient).",address);
answer[0] = DNS_RESOLVE_FAILED_TRANSIENT; answer[0] = DNS_RESOLVE_FAILED_TRANSIENT;

View File

@ -237,7 +237,7 @@ int router_nickname_matches(routerinfo_t *router, const char *nickname)
*/ */
routerinfo_t *router_get_by_nickname(const char *nickname) routerinfo_t *router_get_by_nickname(const char *nickname)
{ {
int i, maybedigest, mustbedigest; int i, maybedigest;
routerinfo_t *router; routerinfo_t *router;
char digest[DIGEST_LEN]; char digest[DIGEST_LEN];
@ -562,7 +562,8 @@ int router_load_routerlist_from_directory(const char *s,
static int static int
router_resolve(routerinfo_t *router) 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).", log_fn(LOG_WARN,"Could not get address for router %s (%s).",
router->address, router->nickname); router->address, router->nickname);
return -1; return -1;