This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fd74a74
)
Support emulation of AI_NUMERICSERV even though it's not strictly RFC 2553, because...
author
Paul "LeoNerd" Evans
<leonerd@leonerd.org.uk>
Tue, 4 Jan 2011 17:04:47 +0000
(17:04 +0000)
committer
Jesse Vincent
<jesse@bestpractical.com>
Wed, 5 Jan 2011 07:08:17 +0000
(15:08 +0800)
ext/Socket/Socket.pm
patch
|
blob
|
blame
|
history
diff --git
a/ext/Socket/Socket.pm
b/ext/Socket/Socket.pm
index
6e0f95b
..
a34fa77
100644
(file)
--- a/
ext/Socket/Socket.pm
+++ b/
ext/Socket/Socket.pm
@@
-596,6
+596,9
@@
if( !defined &getaddrinfo ) {
AI_PASSIVE => 1,
AI_CANONNAME => 2,
AI_NUMERICHOST => 4,
AI_PASSIVE => 1,
AI_CANONNAME => 2,
AI_NUMERICHOST => 4,
+ # RFC 2553 doesn't define this but Linux does - lets be nice and
+ # provide it since we can
+ AI_NUMERICSERV => 1024,
EAI_BADFLAGS => -1,
EAI_NONAME => -2,
EAI_BADFLAGS => -1,
EAI_NONAME => -2,
@@
-663,6
+666,7
@@
sub fake_getaddrinfo
my $flag_passive = $flags & AI_PASSIVE(); $flags &= ~AI_PASSIVE();
my $flag_canonname = $flags & AI_CANONNAME(); $flags &= ~AI_CANONNAME();
my $flag_numerichost = $flags & AI_NUMERICHOST(); $flags &= ~AI_NUMERICHOST();
my $flag_passive = $flags & AI_PASSIVE(); $flags &= ~AI_PASSIVE();
my $flag_canonname = $flags & AI_CANONNAME(); $flags &= ~AI_CANONNAME();
my $flag_numerichost = $flags & AI_NUMERICHOST(); $flags &= ~AI_NUMERICHOST();
+ my $flag_numericserv = $flags & AI_NUMERICSERV(); $flags &= ~AI_NUMERICSERV();
$flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
$flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
@@
-689,6
+693,7
@@
sub fake_getaddrinfo
}
if( $service ne "" and $service !~ m/^\d+$/ ) {
}
if( $service ne "" and $service !~ m/^\d+$/ ) {
+ return fake_makeerr( EAI_NONAME() ) if( $flag_numericserv );
getservbyname( $service, $protname ) or return fake_makeerr( EAI_SERVICE() );
}
getservbyname( $service, $protname ) or return fake_makeerr( EAI_SERVICE() );
}