fix(lsp): check for nil response from server (#29196)

this only changes the error message, so that it is clear that
the error is with the LSP server, rather than being a crash inside
nvim runtime scripts. We are already doing a lot of validation,
it's just that nil was being overlooked here.

This fixes issue #27395
This commit is contained in:
Tama McGlinn 2024-06-14 11:02:36 +02:00 committed by GitHub
parent 29e05cfb7e
commit 81b372fecd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -407,7 +407,9 @@ function Client:handle_body(body)
end
log.debug('rpc.receive', decoded)
if type(decoded.method) == 'string' and decoded.id then
if type(decoded) ~= 'table' then
self:on_error(M.client_errors.INVALID_SERVER_MESSAGE, decoded)
elseif type(decoded.method) == 'string' and decoded.id then
local err --- @type lsp.ResponseError|nil
-- Schedule here so that the users functions don't trigger an error and
-- we can still use the result.