From 83fe8690eef0dc88e00a9bce0467753c97c15c68 Mon Sep 17 00:00:00 2001 From: Gurusamy Sarathy Date: Fri, 28 Apr 2000 04:48:25 +0000 Subject: [PATCH] avoid error in IO::Socket::INET when given an unknown service name with a port number (from Brian Raven ) p4raw-id: //depot/perl@5982 --- ext/IO/lib/IO/Socket/INET.pm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ext/IO/lib/IO/Socket/INET.pm b/ext/IO/lib/IO/Socket/INET.pm index 27a3d4d..c922bf3 100644 --- a/ext/IO/lib/IO/Socket/INET.pm +++ b/ext/IO/lib/IO/Socket/INET.pm @@ -34,6 +34,7 @@ sub new { sub _sock_info { my($addr,$port,$proto) = @_; + my $origport = $port; my @proto = (); my @serv = (); @@ -59,14 +60,14 @@ sub _sock_info { my $defport = $1 || undef; my $pnum = ($port =~ m,^(\d+)$,)[0]; - if ($port =~ m,\D,) { - unless (@serv = getservbyname($port, $proto[0] || "")) { - $@ = "Bad service '$port'"; - return; - } - } + @serv = getservbyname($port, $proto[0] || "") + if ($port =~ m,\D,); $port = $pnum || $serv[2] || $defport || undef; + unless (defined $port) { + $@ = "Bad service '$origport'"; + return; + } $proto = (getprotobyname($serv[3]))[2] || undef if @serv && !$proto; -- 2.7.4