def remote( handler, remote_port, remote_host="127.0.0.1" )
if @remote_forwards[ remote_port ]
raise Net::SSH::Exception, "#{remote_port} is already forwarded"
end
writer = @buffers.writer
writer.write_string remote_host
writer.write_long remote_port.to_i
@connection.global_request( "tcpip-forward", writer
) do |success, response|
if success
remote_port = response.read_long if remote_port == 0
@remote_forwards[ remote_port ] = { :port => remote_port,
:handler => handler }
handler.setup( remote_port ) if handler.respond_to?( :setup )
else
msg = "remote port #{remote_port} could not be forwarded " +
"to local host"
if handler.respond_to?( :error )
handler.error( msg )
else
raise Net::SSH::Exception, msg
end
end
end
end