# This file documents the revision history for Perl extension Catalyst.
+ - Fix $c->req->hostname empty for IPv6 clients (RT#75731)
+
5.90114 - 2016-12-19
- Fixed regression introduced in the last version (5.90113) which caused
application to hang when the action private name contained a string
requires 'Module::Pluggable' => '4.7';
requires 'Path::Class' => '0.09';
requires 'Scalar::Util';
+requires 'Socket' => '1.96';
requires 'Sub::Exporter';
requires 'Text::SimpleTable' => '0.03';
requires 'Time::HiRes';
package Catalyst::Request;
-use IO::Socket qw[AF_INET inet_aton];
+use Socket qw( getaddrinfo getnameinfo AI_NUMERICHOST NI_DGRAM NIx_NOSERV );
use Carp;
use utf8;
use URI::http;
lazy => 1,
default => sub {
my ($self) = @_;
- gethostbyaddr( inet_aton( $self->address ), AF_INET ) || $self->address
+ my ( $err, $sockaddr ) = getaddrinfo(
+ $self->address,
+ # no service
+ '',
+ { flags => AI_NUMERICHOST }
+ );
+ return $self->address
+ if $err;
+ ( $err, my $hostname ) = getnameinfo(
+ $sockaddr->{addr},
+ # we are only interested in the hostname, not the servicename
+ NI_DGRAM|NIx_NOSERV
+ );
+ return $err ? $self->address : $hostname;
},
);