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;
|
char *p;
|
||||||
|
|
||||||
if (*referral_server)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* ARIN referrals:
|
/* ARIN referrals:
|
||||||
* ReferralServer: rwhois://rwhois.fuse.net:4321/
|
* ReferralServer: rwhois://rwhois.fuse.net:4321/
|
||||||
* ReferralServer: whois://whois.ripe.net
|
* 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))
|
if (!strneq(buf, "ReferralServer:", 15))
|
||||||
return;
|
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://")))
|
if ((p = strstr(buf, "rwhois://")))
|
||||||
*referral_server = strdup(p + 9);
|
*referral_server = strdup(p + 9);
|
||||||
else if ((p = strstr(buf, "whois://")))
|
else if ((p = strstr(buf, "whois://")))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user