Francois Gouget : testbot/lib: Use IO::Socket::INET as a fallback for IO:: Socket::IP.
Alexandre Julliard
julliard at winehq.org
Thu Oct 25 13:29:48 CDT 2012
Module: tools
Branch: master
Commit: c1c9d2d028e2d9b04527a71205d2634d53c4c321
URL: http://source.winehq.org/git/tools.git/?a=commit;h=c1c9d2d028e2d9b04527a71205d2634d53c4c321
Author: Francois Gouget <fgouget at 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();
More information about the wine-cvs
mailing list