lib/connections: Accept new connections in place of old ones (fixes #5224) (#6548)

This commit is contained in:
MikolajTwarog
2020-04-20 08:23:38 +02:00
committed by GitHub
parent 49798552f2
commit 4aa2199d5b
2 changed files with 11 additions and 6 deletions
+4 -3
View File
@@ -46,8 +46,9 @@ var (
)
const (
perDeviceWarningIntv = 15 * time.Minute
tlsHandshakeTimeout = 10 * time.Second
perDeviceWarningIntv = 15 * time.Minute
tlsHandshakeTimeout = 10 * time.Second
minConnectionReplaceAge = 10 * time.Second
)
// From go/src/crypto/tls/cipher_suites.go
@@ -276,7 +277,7 @@ func (s *service) handle(ctx context.Context) {
ct, connected := s.model.Connection(remoteID)
// Lower priority is better, just like nice etc.
if connected && ct.Priority() > c.priority {
if connected && (ct.Priority() > c.priority || time.Since(ct.Statistics().StartedAt) > minConnectionReplaceAge) {
l.Debugf("Switching connections %s (existing: %s new: %s)", remoteID, ct, c)
} else if connected {
// We should not already be connected to the other party. TODO: This