Close SSH connections once we're done with them
Fixes "Waiting for SSH" hang at end of install
This commit is contained in:
parent
1450fd0568
commit
97df6fd283
@ -94,14 +94,19 @@ func forward(local_conn net.Conn, config *gossh.ClientConfig, server, remote_des
|
|||||||
ssh_conn, err := ssh_client_conn.Dial("tcp", remote_loc)
|
ssh_conn, err := ssh_client_conn.Dial("tcp", remote_loc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("ssh.Dial error: %s", err)
|
log.Printf("ssh.Dial error: %s", err)
|
||||||
|
ssh_client_conn.Close()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
txDone := make(chan struct{})
|
||||||
|
rxDone := make(chan struct{})
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
_, err = io.Copy(ssh_conn, local_conn)
|
_, err = io.Copy(ssh_conn, local_conn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("io.copy failed: %v", err)
|
log.Printf("io.copy failed: %v", err)
|
||||||
}
|
}
|
||||||
|
close(txDone)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
@ -109,6 +114,14 @@ func forward(local_conn net.Conn, config *gossh.ClientConfig, server, remote_des
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("io.copy failed: %v", err)
|
log.Printf("io.copy failed: %v", err)
|
||||||
}
|
}
|
||||||
|
close(rxDone)
|
||||||
|
}()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
<-txDone
|
||||||
|
<-rxDone
|
||||||
|
ssh_client_conn.Close()
|
||||||
|
ssh_conn.Close()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user