Subject: | check_transfer() bug |
Date: | Thu, 24 Mar 2016 19:06:30 +0000 |
To: | "bug-Net-OpenSRS [...] rt.cpan.org" <bug-Net-OpenSRS [...] rt.cpan.org> |
From: | Ian Romansky <ian.romansky [...] execulink.com> |
Hi,
The check_transfer() subroutine in Net::OpenSRS (starting on line 472) is supposed to find and return any transfers found in the system for a specific domain.
If a domain transfer is found, it returns the following information, and deems the domain 'non-transferrable':
contact_email
status
last_update_time
If no domain transfer is found, it is deemed 'transferrable' and returns:
transferrable (boolean)
reason
The problem is that this system will pick up status:'cancelled' transfer requests, and will assume that the domain isn't transferrable, when I've confirmed with OpenSRS that the domain is actually transferrable.
The returned attributes from the API request (line 477):
"transferrable" => 1,
"noservice" => 0,
"timestamp" => "Tue Feb 2 13:40:34 2016",
"status" => "cancelled",
"reason" => undef,
"type" => "rsp2rsp",
"unixtime" => "1454438434",
"request_address" => "transfers\@private-whois.net"
And check_transfer() returns:
"status" => "cancelled",
"reason" => "undef",
"contact_email" => "transfers\@private-whois.net"
This domain would be deemed non-transferrable since the "transferrable" value is never returned.
Is this a legitimate problem? I'm surprised that this hasn't come up at all in the last 7 years, so I'm thinking this 'cancelled' status may have been a newer addition to the domain transfer system. The documentation is very clear and concise, but doesn't seem to acknowledge this scenario.
----
Recommended fix (line 490+):
if ( $rv->{attributes}->{status} && $rv->{attributes}->{status} ne 'cancelled') {
return {
status => $rv->{attributes}->{status},
last_update_time => $rv->{attributes}->{unixtime},
contact_email => $rv->{attributes}->{request_address}
};
} else {
return $rv->{attributes}; #(transferrable bool and reason)
}
OR:
if ( $rv->{attributes}->{status}) {
my %ret = {
status => $rv->{attributes}->{status},
last_update_time => $rv->{attributes}->{unixtime},
contact_email => $rv->{attributes}->{request_address}
};
$ret{transferrable} = 1 if ($rv->{attributes}->{status} eq 'cancelled');
return \%ret;
} else {
return $rv->{attributes}; #(transferrable bool and reason)
}
----
System info:
cpan-installed Net::OpenSRS v0.07_01
Perl v5.10.1
x86_64-linux-thread-multi
RHEL6 2.6.32-573.18.1.el6.x86_64
Distributor ID: RedHatEnterpriseServer
Release: 6.7
If you need any more information, please inquire.
execulink
TELECOM
Ian Romansky
Software Developer
1127 Ridgeway Rd, Woodstock
tel: 519.456.7200 ext. 517
toll free: 1.877.393.2854
email: ian.romansky@execulink.com<mailto:ian.romansky@execulink.com>
www.execulink.ca<http://www.execulink.ca>