summaryrefslogtreecommitdiff
path: root/acountry.c
diff options
context:
space:
mode:
Diffstat (limited to 'acountry.c')
-rw-r--r--acountry.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/acountry.c b/acountry.c
index 210ef84..aea22c8 100644
--- a/acountry.c
+++ b/acountry.c
@@ -15,7 +15,7 @@
*
* Ref: http://countries.nerd.dk/more.html
*
- * Written by G. Vanem <gvanem@broadpark.no> 2006, 2007
+ * Written by G. Vanem <gvanem@yahoo.no> 2006, 2007
*
* NB! This program may not be big-endian aware.
*
@@ -71,8 +71,8 @@
static const char *usage = "acountry [-vh?] {host|addr} ...\n";
static const char nerd_fmt[] = "%u.%u.%u.%u.zz.countries.nerd.dk";
-static const char *nerd_ver1 = nerd_fmt + 14;
-static const char *nerd_ver2 = nerd_fmt + 11;
+static const char *nerd_ver1 = nerd_fmt + 14; /* .countries.nerd.dk */
+static const char *nerd_ver2 = nerd_fmt + 11; /* .zz.countries.nerd.dk */
static int verbose = 0;
#define TRACE(fmt) do { \
@@ -200,7 +200,9 @@ static void wait_ares(ares_channel channel)
if (nfds == 0)
break;
tvp = ares_timeout(channel, NULL, &tv);
- select(nfds, &read_fds, &write_fds, NULL, tvp);
+ nfds = select(nfds, &read_fds, &write_fds, NULL, tvp);
+ if (nfds < 0)
+ continue;
ares_process(channel, &read_fds, &write_fds);
}
}
@@ -559,9 +561,10 @@ static void find_country_from_cname(const char *cname, struct in_addr addr)
if (ver_1)
{
const char *dot = strchr(cname, '.');
- if ((z0 != 'z' && z1 != 'z') || dot != cname+4)
+ if (dot != cname+4)
{
printf("Unexpected CNAME %s (ver_1)\n", cname);
+ free(ccopy);
return;
}
}
@@ -572,12 +575,14 @@ static void find_country_from_cname(const char *cname, struct in_addr addr)
if (z0 != 'z' && z1 != 'z')
{
printf("Unexpected CNAME %s (ver_2)\n", cname);
+ free(ccopy);
return;
}
}
else
{
printf("Unexpected CNAME %s (ver?)\n", cname);
+ free(ccopy);
return;
}
@@ -614,4 +619,3 @@ static void find_country_from_cname(const char *cname, struct in_addr addr)
}
free(ccopy);
}
-