Blob Blame History Raw
From 72d07cb0d6a2e32a6a18a1794a592a8f6bf71665 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Wed, 27 Jul 2016 12:57:23 +0200
Subject: [PATCH] Override timeout method in Net::FTP and other subclasses
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

After adding Net::Cmd::timeout() in commit
91e593b615334fa76ef0454c4e601b98b6663841, the method masked
IO::Socket:IP::timeout() in Net::FTP objects causing infitive block in
select() on a FTP connection.

CPAN RT#116345

Signed-off-by: Petr Písař <ppisar@redhat.com>
---
 lib/Net/FTP.pm  | 5 +++++
 lib/Net/NNTP.pm | 6 ++++++
 lib/Net/POP3.pm | 5 +++++
 lib/Net/SMTP.pm | 5 +++++
 4 files changed, 21 insertions(+)

diff --git a/lib/Net/FTP.pm b/lib/Net/FTP.pm
index 905d830..42c33f5 100644
--- a/lib/Net/FTP.pm
+++ b/lib/Net/FTP.pm
@@ -1210,6 +1210,11 @@ sub _data_cmd {
 ##
 
 
+sub timeout {
+  $IOCLASS->can('timeout')->(@_);
+}
+
+
 sub debug_text { $_[2] =~ /^(pass|resp|acct)/i ? "$1 ....\n" : $_[2]; }
 
 
diff --git a/lib/Net/NNTP.pm b/lib/Net/NNTP.pm
index 764d580..f1b5c17 100644
--- a/lib/Net/NNTP.pm
+++ b/lib/Net/NNTP.pm
@@ -419,6 +419,12 @@ sub slave {
   $nntp->_SLAVE;
 }
 
+
+sub timeout {
+  $ISA[-1]->can('timeout')->(@_);
+}
+
+
 ##
 ## The following methods are not implemented by all servers
 ##
diff --git a/lib/Net/POP3.pm b/lib/Net/POP3.pm
index bb18aaf..7f1cf5a 100644
--- a/lib/Net/POP3.pm
+++ b/lib/Net/POP3.pm
@@ -387,6 +387,11 @@ sub quit {
 }
 
 
+sub timeout {
+  $ISA[-1]->can('timeout')->(@_);
+}
+
+
 sub DESTROY {
   my $me = shift;
 
diff --git a/lib/Net/SMTP.pm b/lib/Net/SMTP.pm
index 0dd966f..895c884 100644
--- a/lib/Net/SMTP.pm
+++ b/lib/Net/SMTP.pm
@@ -586,6 +586,11 @@ sub quit {
 }
 
 
+sub timeout {
+  $ISA[-1]->can('timeout')->(@_);
+}
+
+
 sub DESTROY {
 
   # ignore
-- 
2.5.5