lib/connections: TLS handshake must complete in a timely fashion (fixes #3375)

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3376
This commit is contained in:
Jakob Borg
2016-07-02 20:33:31 +00:00
parent 6d357211b2
commit 672824641b
5 changed files with 14 additions and 5 deletions

View File

@@ -36,7 +36,10 @@ var (
listeners = make(map[string]listenerFactory, 0)
)
const perDeviceWarningRate = 1.0 / (15 * 60) // Once per 15 minutes
const (
perDeviceWarningRate = 1.0 / (15 * 60) // Once per 15 minutes
tlsHandshakeTimeout = 10 * time.Second
)
// Service listens and dials all configured unconnected devices, via supported
// dialers. Successful connections are handed to the model.
@@ -607,3 +610,9 @@ func warningFor(dev protocol.DeviceID, msg string) {
l.Warnln(msg)
}
}
func tlsTimedHandshake(tc *tls.Conn) error {
tc.SetDeadline(time.Now().Add(tlsHandshakeTimeout))
defer tc.SetDeadline(time.Time{})
return tc.Handshake()
}