From 40358d406dec1d08fe0ed3c188db97713a77e41d Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Tue, 29 Mar 2022 18:15:43 +0200 Subject: [PATCH 1/2] lnrpc: fix websocket proxy data race Was discovered in a race unit test in lightning node connect that uses the websocket proxy to connect to the hashmail server on the client side. By not shadowing the err variable we end up reading and writing to the same variable from two different goroutines, which causes the data race. --- lnrpc/websocket_proxy.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lnrpc/websocket_proxy.go b/lnrpc/websocket_proxy.go index 803cf6c36..7aaa9b1f2 100644 --- a/lnrpc/websocket_proxy.go +++ b/lnrpc/websocket_proxy.go @@ -253,7 +253,7 @@ func (p *WebsocketProxy) upgradeToWebSocketProxy(w http.ResponseWriter, payload = newPayload } - _, err = requestForwarder.Write(payload) + _, err := requestForwarder.Write(payload) if err != nil { p.logger.Errorf("WS: error writing message "+ "to upstream http server: %v", err) @@ -338,7 +338,7 @@ func (p *WebsocketProxy) upgradeToWebSocketProxy(w http.ResponseWriter, continue } - err = conn.WriteMessage( + err := conn.WriteMessage( websocket.TextMessage, responseForwarder.Bytes(), ) if err != nil { From de9d3096c0de859cc48886497b99913fce91303d Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Tue, 29 Mar 2022 18:23:51 +0200 Subject: [PATCH 2/2] docs: add release notes --- docs/release-notes/release-notes-0.15.0.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/release-notes/release-notes-0.15.0.md b/docs/release-notes/release-notes-0.15.0.md index 14e74678e..377100f76 100644 --- a/docs/release-notes/release-notes-0.15.0.md +++ b/docs/release-notes/release-notes-0.15.0.md @@ -72,6 +72,9 @@ then watch it on chain. Taproot script spends are also supported through the `lncli walletbalance` in existing wallets after upgrading to Taproot](https://github.com/lightningnetwork/lnd/pull/6379). +* [Fixed a data race in the websocket proxy + code](https://github.com/lightningnetwork/lnd/pull/6380). + ## Misc * [An example systemd service file](https://github.com/lightningnetwork/lnd/pull/6033)