Skip to content

Commit b0e7e3c

Browse files
authored
DS-4992 - Fix race in mongoServer.Close() (#40)
1 parent 549050a commit b0e7e3c

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

server.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,12 @@ func (server *mongoServer) Connect(timeout time.Duration, socket *mongoSocket) e
227227
func (server *mongoServer) Close() {
228228
server.Lock()
229229
server.closed = true
230-
liveSockets := server.liveSockets
231-
unusedSockets := server.unusedSockets
230+
// Copy the socket lists since other code paths such as removeSocket() will in-place modify
231+
// them.
232+
liveSockets := make([]*mongoSocket, len(server.liveSockets))
233+
copy(liveSockets, server.liveSockets)
234+
unusedSockets := make([]*mongoSocket, len(server.unusedSockets))
235+
copy(unusedSockets, server.unusedSockets)
232236
server.liveSockets = nil
233237
server.unusedSockets = nil
234238
server.Unlock()

0 commit comments

Comments
 (0)