From c4f5a49c97cb3dc49e8acfdb023a02308400f293 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 31 Aug 2017 16:25:49 +1000 Subject: [PATCH] Panics while decoding messages in connection.mainLoopRead would trigger more panics --- connection.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/connection.go b/connection.go index 0b1fed81..8ec21010 100644 --- a/connection.go +++ b/connection.go @@ -749,10 +749,15 @@ func (c *connection) mainReadLoop() error { Pool: t.chunkPool, } for { - cl.mu.Unlock() - var msg pp.Message - err := decoder.Decode(&msg) - cl.mu.Lock() + var ( + msg pp.Message + err error + ) + func() { + cl.mu.Unlock() + defer cl.mu.Lock() + err = decoder.Decode(&msg) + }() if cl.closed.IsSet() || c.closed.IsSet() || err == io.EOF { return nil } -- 2.48.1