# File lib/net/ssh/gateway.rb, line 121 def open(host, port, local_port=nil) ensure_open! actual_local_port = local_port || next_port @session_mutex.synchronize do @session.forward.local(actual_local_port, host, port) end if block_given? begin yield actual_local_port ensure close(actual_local_port) end else return actual_local_port end rescue Errno::EADDRINUSE raise if local_port # if a local port was explicitly requested, bubble the error up retry end