From d3297f0734ae81d9148ce068f33efeef5c155c97 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Wed, 7 Mar 2018 10:52:30 +0700 Subject: [PATCH] fix race condition when setting up TLS sessions in the server --- server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 499e52e4d..7a19afcb5 100644 --- a/server.go +++ b/server.go @@ -140,10 +140,11 @@ func (s *server) setupTLS() error { case tlsSession := <-sessionChan: connID := tlsSession.connID sess := tlsSession.sess + s.sessionsMutex.Lock() if _, ok := s.sessions[connID]; ok { // drop this session if it already exists + s.sessionsMutex.Unlock() continue } - s.sessionsMutex.Lock() s.sessions[connID] = sess s.sessionsMutex.Unlock() s.runHandshakeAndSession(sess, connID)