From 2b4f01cfcce1f76b090306e96a2a9a71fd6fa442 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 29 Jun 2009 04:08:31 -0500 Subject: hack in a working telnet_simple_callback (this should be fixed on IO::Socket::Telnet's end, really... it's not nearly extensible enough) --- lib/IO/Socket/Telnet/HalfDuplex.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/IO/Socket/Telnet/HalfDuplex.pm b/lib/IO/Socket/Telnet/HalfDuplex.pm index 2e8eb95..61ae4a6 100644 --- a/lib/IO/Socket/Telnet/HalfDuplex.pm +++ b/lib/IO/Socket/Telnet/HalfDuplex.pm @@ -7,10 +7,16 @@ sub new { my $code = delete $args{code} || 99; my $self = $class->SUPER::new(@_); ${*{$self}}{code} = $code; - $self->telnet_simple_callback(\&telnet_negotiation); + $self->IO::Socket::Telnet::telnet_simple_callback(\&telnet_negotiation); return $self; } +sub telnet_simple_callback { + my $self = shift; + ${*$self}{halfduplex_simple_cb} = $_[0] if @_; + ${*$self}{halfduplex_simple_cb}; +} + sub read { my $self = shift; my $buffer; @@ -41,13 +47,16 @@ sub telnet_negotiation { my $self = shift; my $option = shift; + my $external_callback = ${*{$self}}{halfduplex_simple_cb}; my $code = ${*{$self}}{code}; if ($option =~ / $code$/) { ${*{$self}}{got_pong} = 1; - return ''; + return '' unless $external_callback; + return $self->$external_callback($option); } - return; + return unless $external_callback; + return $self->$external_callback($option); } 1; -- cgit v1.2.3-54-g00ecf