From d34c89a325afbef0a8c4d23cece6fb4e4cc2b1a5 Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Mon, 13 Apr 2020 22:31:35 -0400 Subject: [PATCH] Prevent all writes after close Closes #213 --- write.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/write.go b/write.go index baa5e6e2..2d439de7 100644 --- a/write.go +++ b/write.go @@ -246,7 +246,13 @@ func (c *Conn) writeFrame(ctx context.Context, fin bool, flate bool, opcode opco if err != nil { return 0, err } - defer c.writeFrameMu.unlock() + defer func() { + // We leave it locked when writing the close frame to avoid + // any other goroutine writing any other frame. + if opcode != opClose { + c.writeFrameMu.unlock() + } + }() select { case <-c.closed: