From: Matt Joiner Date: Thu, 31 Aug 2017 06:25:49 +0000 (+1000) Subject: Panics while decoding messages in connection.mainLoopRead would trigger more panics X-Git-Tag: v1.0.0~420 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c4f5a49c97cb3dc49e8acfdb023a02308400f293;p=btrtrc.git Panics while decoding messages in connection.mainLoopRead would trigger more panics --- 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 }