From ce1a3806b557e2b3236499f772c2320f933d5a80 Mon Sep 17 00:00:00 2001 From: Paul Jolly Date: Thu, 30 May 2019 17:14:29 +0100 Subject: [PATCH] internal/lsp: send void client response to client/registerCapapbility Following CL 179157, client/registerCapapbility and client/unregisterCapapbility are both (void) requests, not notifications. Hence the client must send a response, else the server will wait forever. Fixes golang/go#32322 Change-Id: I77969317465c0c31fb29d27519d655712d8c3c2a Reviewed-on: https://go-review.googlesource.com/c/tools/+/179359 Reviewed-by: Peter Weinberger --- internal/lsp/protocol/tsclient.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/lsp/protocol/tsclient.go b/internal/lsp/protocol/tsclient.go index b449185f..f77d0236 100644 --- a/internal/lsp/protocol/tsclient.go +++ b/internal/lsp/protocol/tsclient.go @@ -94,7 +94,8 @@ func clientHandler(log xlog.Logger, client Client) jsonrpc2.Handler { sendParseError(ctx, log, conn, r, err) return } - if err := client.RegisterCapability(ctx, ¶ms); err != nil { + err := client.RegisterCapability(ctx, ¶ms) + if err := conn.Reply(ctx, r, nil, err); err != nil { log.Errorf(ctx, "%v", err) } case "client/unregisterCapability": // req @@ -103,7 +104,8 @@ func clientHandler(log xlog.Logger, client Client) jsonrpc2.Handler { sendParseError(ctx, log, conn, r, err) return } - if err := client.UnregisterCapability(ctx, ¶ms); err != nil { + err := client.UnregisterCapability(ctx, ¶ms) + if err := conn.Reply(ctx, r, nil, err); err != nil { log.Errorf(ctx, "%v", err) } case "window/showMessageRequest": // req