diff --git a/internal/lsp/lsprpc/lsprpc.go b/internal/lsp/lsprpc/lsprpc.go index 2af6bdc69e..448c0e5862 100644 --- a/internal/lsp/lsprpc/lsprpc.go +++ b/internal/lsp/lsprpc/lsprpc.go @@ -251,10 +251,13 @@ func (f *Forwarder) ServeStream(ctx context.Context, clientConn jsonrpc2.Conn) e serverConn.Close() } - err = serverConn.Err() - if err == nil { - err = clientConn.Err() + err = nil + if serverConn.Err() != nil { + err = errors.Errorf("remote disconnected: %v", err) + } else if clientConn.Err() != nil { + err = errors.Errorf("client disconnected: %v", err) } + event.Log(ctx, fmt.Sprintf("forwarder: exited with error: %v", err)) return err }