From 6f1f3638825a905d0c6c487179dd4849b01435a3 Mon Sep 17 00:00:00 2001 From: Dmitry Karasik Date: Fri, 21 May 2021 12:29:46 +0200 Subject: [PATCH] fix for logging on non-file based filehandles IO::NestedCapture replaces STDOUT with a tied GLOB and this is not recognized by Net::Telnet -- fixed. The code is agreed on with Jay Rogers in 2018. --- lib/Net/Telnet.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/Net/Telnet.pm b/lib/Net/Telnet.pm index f0f20fb..ff79361 100644 --- a/lib/Net/Telnet.pm +++ b/lib/Net/Telnet.pm @@ -2913,21 +2913,27 @@ sub _io_socket_include { eval "require IO::Socket"; } # end sub io_socket_include - sub _is_open_fh { my ($fh) = @_; my $is_open = ''; local $@; eval { - local $SIG{"__DIE__"} = "DEFAULT"; - $is_open = defined(fileno $fh); + local $SIG{"__DIE__"} = "DEFAULT"; + $is_open = defined(fileno $fh); }; + if (!$is_open and $@) { # fileno() failed + ## Check if filehandle is tied and printable. + eval { + local $SIG{"__DIE__"} = "DEFAULT"; + $is_open = tied(*$fh) && $fh->can("print"); + }; + } + $is_open; } # end sub _is_open_fh - sub _log_dump { my ($direction, $fh, $data, $offset, $len) = @_; my (