From bf696496cb9d8218c73eb2f914f1193770942fd6 Mon Sep 17 00:00:00 2001 From: Luca Tabone Date: Tue, 16 Feb 2016 00:55:57 +0100 Subject: [PATCH] When sending a Close frame in response, the endpoint typically echos the status code it received. --- conn.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/conn.go b/conn.go index 0bec87e..f91b11b 100644 --- a/conn.go +++ b/conn.go @@ -726,13 +726,15 @@ func (c *Conn) advanceFrame() (int, error) { return noFrame, err } case CloseMessage: - c.WriteControl(CloseMessage, []byte{}, time.Now().Add(writeWait)) + echoMessage := []byte{} closeCode := CloseNoStatusReceived closeText := "" if len(payload) >= 2 { + echoMessage = payload[:2] closeCode = int(binary.BigEndian.Uint16(payload)) closeText = string(payload[2:]) } + c.WriteControl(CloseMessage, echoMessage, time.Now().Add(writeWait)) return noFrame, &CloseError{Code: closeCode, Text: closeText} }