From 9a2140519af4fa77998ad2298a44637de0932053 Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Wed, 8 Nov 2023 21:00:20 +0900 Subject: [PATCH] Do not handle network error in SetCloseHandler() The 666c197 added an error handling in `SetCloseHandler()` and peer stops getting `CloseError` when network issue like `write: broken pipe` happens because the close handle returns the error. Hence this patch changes to skip network error handling. --- conn.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/conn.go b/conn.go index a19e5c4..a992825 100644 --- a/conn.go +++ b/conn.go @@ -1159,8 +1159,12 @@ func (c *Conn) SetCloseHandler(h func(code int, text string) error) { h = func(code int, text string) error { message := FormatCloseMessage(code, "") err := c.WriteControl(CloseMessage, message, time.Now().Add(writeWait)) - if err != nil && err != ErrCloseSent { - return err + if err != nil { + if _, ok := err.(net.Error); ok { + return nil + } else if err != ErrCloseSent { + return err + } } return nil }