From 3a526d8c78ea452584284b9b6da08e1679da2867 Mon Sep 17 00:00:00 2001
From: Anmol Sethi <hi@nhooyr.io>
Date: Sun, 9 Feb 2020 02:31:59 -0500
Subject: [PATCH] Fix bug in closeHandshake

---
 close_notjs.go | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/close_notjs.go b/close_notjs.go
index 08a1ea0..160a123 100644
--- a/close_notjs.go
+++ b/close_notjs.go
@@ -35,7 +35,7 @@ func (c *Conn) closeHandshake(code StatusCode, reason string) (err error) {
 	defer errd.Wrap(&err, "failed to close WebSocket")
 
 	err = c.writeClose(code, reason)
-	if CloseStatus(err) == -1 {
+	if err != nil && CloseStatus(err) == -1 {
 		return err
 	}
 
@@ -63,16 +63,19 @@ func (c *Conn) writeClose(code StatusCode, reason string) error {
 	c.setCloseErr(xerrors.Errorf("sent close frame: %w", ce))
 
 	var p []byte
+	var err error
 	if ce.Code != StatusNoStatusRcvd {
-		var err error
 		p, err = ce.bytes()
 		if err != nil {
 			log.Printf("websocket: %v", err)
-			return err
 		}
 	}
 
-	return c.writeControl(context.Background(), opClose, p)
+	werr := c.writeControl(context.Background(), opClose, p)
+	if err != nil {
+		return err
+	}
+	return werr
 }
 
 func (c *Conn) waitCloseHandshake() error {
-- 
GitLab