Module: tools Branch: master Commit: c1c9d2d028e2d9b04527a71205d2634d53c4c321 URL: http://source.winehq.org/git/tools.git/?a=commit;h=c1c9d2d028e2d9b04527a7120...
Author: Francois Gouget fgouget@codeweavers.com Date: Thu Oct 25 18:14:06 2012 +0200
testbot/lib: Use IO::Socket::INET as a fallback for IO::Socket::IP.
The latter provides transparent support for IPv6 but is missing on older Linux distributions.
---
testbot/doc/INSTALL.txt | 2 +- testbot/lib/WineTestBot/TestAgent.pm | 29 +++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/testbot/doc/INSTALL.txt b/testbot/doc/INSTALL.txt index 1cbfd83..b01aa48 100644 --- a/testbot/doc/INSTALL.txt +++ b/testbot/doc/INSTALL.txt @@ -8,7 +8,7 @@ Dependencies: - Sendmail - Sys::Virt (libsys-virt-perl, see http://libvirt.org/) - Image::Magick (perlmagick) -- IO::Socket::IP (libio-socket-ip-perl) +- Optional: IO::Socket::IP (for IPv6, libio-socket-ip-perl)
MySQL setup: - Create a new 'winetestbot' database and its tables using the diff --git a/testbot/lib/WineTestBot/TestAgent.pm b/testbot/lib/WineTestBot/TestAgent.pm index 513b50f..7b6eb56 100644 --- a/testbot/lib/WineTestBot/TestAgent.pm +++ b/testbot/lib/WineTestBot/TestAgent.pm @@ -21,14 +21,33 @@ package TestAgent; use strict;
-use IO::Socket::IP; - use WineTestBot::Config; use WineTestBot::Log;
my $DONE_READING = 0; my $DONE_WRITING = 1;
+ +sub create_ip_socket(@) +{ + my $socket; + eval { $socket = IO::Socket::IP->new(@_); }; + return $socket; +} + +sub create_inet_socket(@) +{ + return IO::Socket::INET->new(@_); +} + +my $create_socket = &create_ip_socket; +eval "use IO::Socket::IP"; +if ($@) +{ + use IO::Socket::INET; + $create_socket = &create_inet_socket; +} + sub _Connect($;$) { my ($Hostname, $Timeout) = @_; @@ -38,10 +57,8 @@ sub _Connect($;$) while (1) { my $ConnectTimeout = $Timeout < 30 ? $Timeout : 30; - my $socket = IO::Socket::IP->new(PeerHost => $Hostname, - PeerPort => $AgentPort, - Type => SOCK_STREAM, - Timeout => $ConnectTimeout); + my $socket = &$create_socket(PeerHost => $Hostname, PeerPort => $AgentPort, + Type => SOCK_STREAM, Timeout => $ConnectTimeout); return $socket if ($socket);
$Timeout = $Deadline - time();