diff options
author | Jesse Luehrs <doy@tozt.net> | 2009-06-29 04:08:31 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2009-06-29 04:08:31 -0500 |
commit | 2b4f01cfcce1f76b090306e96a2a9a71fd6fa442 (patch) | |
tree | aec7ea93f2ff4b191b4e455c6a2055d29ed22172 | |
parent | dba37b41de6155d96f9cdc988a12d077bff4d665 (diff) | |
download | io-socket-telnet-halfduplex-2b4f01cfcce1f76b090306e96a2a9a71fd6fa442.tar.gz io-socket-telnet-halfduplex-2b4f01cfcce1f76b090306e96a2a9a71fd6fa442.zip |
hack in a working telnet_simple_callback
(this should be fixed on IO::Socket::Telnet's end, really... it's not
nearly extensible enough)
-rw-r--r-- | lib/IO/Socket/Telnet/HalfDuplex.pm | 15 |
1 files 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; |