From 3947b011d71f3195086f4fb5965f18855e04bad1 Mon Sep 17 00:00:00 2001 From: Neil Twigg Date: Tue, 20 Jun 2023 11:32:43 +0100 Subject: [PATCH] WebSocket-specific `INFO` This fixes #4252 by ensuring that `tls_available`, `tls_required`, `host` and `port` are populated based on the WebSocket listener rather than standard listeners. Signed-off-by: Neil Twigg --- server/client.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/server/client.go b/server/client.go index 6586a5db8a6..e26bce0c2c6 100644 --- a/server/client.go +++ b/server/client.go @@ -2167,6 +2167,19 @@ func (c *client) generateClientInfoJSON(info Info) []byte { info.MaxPayload = c.mpay if c.isWebsocket() { info.ClientConnectURLs = info.WSConnectURLs + c.srv.websocket.mu.RLock() + info.TLSAvailable = c.srv.websocket.tls + if tc := c.srv.websocket.server.TLSConfig; tc != nil { + info.TLSRequired = !tc.InsecureSkipVerify + } + laddr := c.srv.websocket.listener.Addr().String() + c.srv.websocket.mu.RUnlock() + if h, p, err := net.SplitHostPort(laddr); err == nil { + if p, err := strconv.Atoi(p); err == nil { + info.Host = h + info.Port = p + } + } } info.WSConnectURLs = nil // Generate the info json