mirror of
https://github.com/rfc1036/whois.git
synced 2026-05-03 06:51:09 +00:00
Use the last ReferralServer field found
Because we want to follow the referral for the most specific record returned. Closes GitHub #185.
This commit is contained in:
parent
cf5fdb03e5
commit
e30931d958
13
whois.c
13
whois.c
@ -892,9 +892,6 @@ static void find_referral_server_arin(char **referral_server, const char *buf)
|
||||
{
|
||||
char *p;
|
||||
|
||||
if (*referral_server)
|
||||
return;
|
||||
|
||||
/* ARIN referrals:
|
||||
* ReferralServer: rwhois://rwhois.fuse.net:4321/
|
||||
* ReferralServer: whois://whois.ripe.net
|
||||
@ -903,6 +900,16 @@ static void find_referral_server_arin(char **referral_server, const char *buf)
|
||||
if (!strneq(buf, "ReferralServer:", 15))
|
||||
return;
|
||||
|
||||
/* When whois.arin.net returns multiple NetRange records, they will
|
||||
* appear from the less specific one to the most specific one.
|
||||
* Since the range we care about is the most specific one then we
|
||||
* need to use the last ReferralServer field found.
|
||||
*/
|
||||
if (*referral_server) {
|
||||
free(*referral_server);
|
||||
*referral_server = NULL;
|
||||
}
|
||||
|
||||
if ((p = strstr(buf, "rwhois://")))
|
||||
*referral_server = strdup(p + 9);
|
||||
else if ((p = strstr(buf, "whois://")))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user