Try to look up protocol (by name) only iff it has non-numbers:
Jarkko Hietaniemi [Sun, 9 Sep 2001 13:03:33 +0000 (13:03 +0000)]
nice if the server is in a chrooted environment (no /etc/protocols,
server code using hardcorded protocol numbers like 6 for tcp),
suggested by John Holdsworth <coldwave@bigfoot.com>.
In other words, if we are given a number, why look it up again
(by number)?

p4raw-id: //depot/perl@11957

ext/IO/lib/IO/Socket/INET.pm

index b36a65b..8f1845b 100644 (file)
@@ -41,11 +41,8 @@ sub _sock_info {
   $port = $1
        if(defined $addr && $addr =~ s,:([\w\(\)/]+)$,,);
 
-  if(defined $proto) {
-    if (@proto = ( $proto =~ m,\D,
-               ? getprotobyname($proto)
-               : getprotobynumber($proto))
-    ) {
+  if(defined $proto  && $proto =~ /\D/) {
+    if(@proto = getprotobyname($proto) {
       $proto = $proto[2] || undef;
     }
     else {