testbot/lib: Use IO::Socket::INET as a fallback for IO::Socket::IP.
Francois Gouget
fgouget at codeweavers.com
Thu Oct 25 11:14:06 CDT 2012
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();
--
1.7.10.4
More information about the wine-patches
mailing list