Don't hold lock while opening new sshTunnels.

pull/6/head
CJ Cullen 2015-06-29 16:15:42 -07:00
parent 21f750fdc3
commit ea2d617944
1 changed files with 4 additions and 4 deletions

View File

@ -802,6 +802,8 @@ func (m *Master) Dial(net, addr string) (net.Conn, error) {
}
func (m *Master) needToReplaceTunnels(addrs []string) bool {
m.tunnelsLock.Lock()
defer m.tunnelsLock.Unlock()
if m.tunnels == nil || m.tunnels.Len() != len(addrs) {
return true
}
@ -837,6 +839,8 @@ func (m *Master) replaceTunnels(user, keyfile string, newAddrs []string) error {
if err := tunnels.Open(); err != nil {
return err
}
m.tunnelsLock.Lock()
defer m.tunnelsLock.Unlock()
if m.tunnels != nil {
m.tunnels.Close()
}
@ -845,8 +849,6 @@ func (m *Master) replaceTunnels(user, keyfile string, newAddrs []string) error {
}
func (m *Master) loadTunnels(user, keyfile string) error {
m.tunnelsLock.Lock()
defer m.tunnelsLock.Unlock()
addrs, err := m.getNodeAddresses()
if err != nil {
return err
@ -861,8 +863,6 @@ func (m *Master) loadTunnels(user, keyfile string) error {
}
func (m *Master) refreshTunnels(user, keyfile string) error {
m.tunnelsLock.Lock()
defer m.tunnelsLock.Unlock()
addrs, err := m.getNodeAddresses()
if err != nil {
return err