diff --git a/close_notjs.go b/close_notjs.go index 08a1ea05aedd993a65066ceb51a599ca3a254c50..160a1237ff98e7c0214d9bd570e883cb37c329be 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 {