From ba79f81721f8fd4b94df71e9f0e4069265515159 Mon Sep 17 00:00:00 2001 From: Niko Marmeladkov Date: Wed, 1 Jul 2026 14:51:04 +0300 Subject: [PATCH] Register: kick out old session when number is taken When a new session registers with an already-taken number, close the old connection. Prevents two devices from sharing the same number simultaneously. --- internal/server/server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/server/server.go b/internal/server/server.go index 31c7e92..8bbcf85 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -418,6 +418,9 @@ func marshalIdentityResponse(number string, certDER, caCertPEM []byte) []byte { func (s *Server) Register(sess call.CallSession, number string) { s.sessionsMu.Lock() defer s.sessionsMu.Unlock() + if old, ok := s.sessions[number]; ok && old != sess { + old.Conn().CloseWithError(0, "replaced by new session") + } s.sessions[number] = sess.(*Session) }