local (Net::SSH::Service::Forward::Driver)

    # File lib/net/ssh/service/forward/driver.rb, line 138
              def local( *args )
                if args.length < 3 || args.length > 4
                  raise ArgumentError,
                    "expected 3 or 4 parameters, got #{args.length+1}"
                end

                bind_address = "127.0.0.1"
                bind_address = args.shift if args.first.is_a? String

                local_port = args.shift.to_i
                remote_host = args.shift
                remote_port = args.shift

                key = [ local_port.to_i, bind_address ]

                if @log.debug?
                  @log.debug "starting local forwarding server on " +
                    key.inspect
                end

                socket = TCPServer.new( bind_address, local_port )

                Thread.new do
                  begin
                    @local_forwards[ key ] = { :thread => Thread.current,
                                               :socket => socket }

                    if @log.debug?
                      @log.debug "listening for connections on #{key.inspect}"
                    end

                    while ( client = socket.accept )
                      @log.debug "#{key.inspect} received connection" if @log.debug?

                      direct_channel( local_port,
                                      remote_host,
                                      remote_port,
                                      @handlers[:local].call( client ) )
                    end

                  rescue Exception => e
                    @log.error "error forwarding local connection: " +
                      "#{e.class} (#{e.message})\n   " +
                      e.backtrace.join( "\n  " )
                  end
                end
              end