From f4be20cc5ef48bb68773195ec0481eeb013d0bab Mon Sep 17 00:00:00 2001 From: Andras Banki-Horvath Date: Wed, 1 Apr 2020 19:04:50 +0200 Subject: [PATCH] loopd: add missing mutex unlock and fix subtle reace condition --- loopd/swapclient_server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/loopd/swapclient_server.go b/loopd/swapclient_server.go index 3b7cbc0..6e2945f 100644 --- a/loopd/swapclient_server.go +++ b/loopd/swapclient_server.go @@ -190,10 +190,10 @@ func (s *swapClientServer) Monitor(in *looprpc.MonitorRequest, s.swapsLock.Unlock() defer func() { - queue.Stop() s.swapsLock.Lock() delete(s.subscribers, id) s.swapsLock.Unlock() + queue.Stop() }() // Sort completed swaps new to old. @@ -459,6 +459,7 @@ func (s *swapClientServer) processStatusUpdates(mainCtx context.Context) { select { case subscriber <- swp: case <-mainCtx.Done(): + s.swapsLock.Unlock() return } }