From 2dc66c3f143f34f669248262380fd7c38eba107e Mon Sep 17 00:00:00 2001 From: Anmol Sethi <hi@nhooyr.io> Date: Mon, 13 Apr 2020 22:34:47 -0400 Subject: [PATCH] Check whether the connection is closed before returning a write IO error Closes #215 --- write.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/write.go b/write.go index 2d439de..60a4fba 100644 --- a/write.go +++ b/write.go @@ -262,8 +262,14 @@ func (c *Conn) writeFrame(ctx context.Context, fin bool, flate bool, opcode opco defer func() { if err != nil { - err = fmt.Errorf("failed to write frame: %w", err) + select { + case <-c.closed: + err = c.closeErr + case <-ctx.Done(): + err = ctx.Err() + } c.close(err) + err = fmt.Errorf("failed to write frame: %w", err) } }() -- GitLab