ssh/tailssh,ipn/ipnlocal: terminate any active sessions on up --ssh=false

Currently the ssh session isn't terminated cleanly, instead the packets
are just are no longer routed to the in-proc SSH server. This makes it
so that clients get a disconnection when the `RunSSH` pref changes to
`false`.

Updates #3802

Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
Maisem Ali
2022-04-29 15:57:55 -07:00
committed by Maisem Ali
parent 2ec371fe8b
commit 3012a2e1ca
2 changed files with 7 additions and 0 deletions

View File

@@ -1912,6 +1912,10 @@ func (b *LocalBackend) setPrefsLockedOnEntry(caller string, newp *ipn.Prefs) {
b.authReconfig()
}
if oldp.RunSSH && !newp.RunSSH && b.sshServer != nil {
go b.sshServer.OnPolicyChange()
}
b.send(ipn.Notify{Prefs: newp})
}