fix: return MethodNotFound error for unrecognized LSP requests#4044
Open
hellozzm wants to merge 1 commit intoShopify:mainfrom
Open
fix: return MethodNotFound error for unrecognized LSP requests#4044hellozzm wants to merge 1 commit intoShopify:mainfrom
hellozzm wants to merge 1 commit intoShopify:mainfrom
Conversation
When receiving an unsupported LSP method, the server now returns a proper MethodNotFound (-32601) error response instead of silently dropping the request. This prevents well-behaved clients from hanging indefinitely waiting for a response.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The
process_messagecase statement inlib/ruby_lsp/server.rbhad noelseclause, so unrecognized LSP methods (e.g.textDocument/prepareCallHierarchy) were silently dropped without sending a response. Per the LSP spec, servers must respond to any request bearing anid— for unsupported methods, that is error code-32601(MethodNotFound).Fixes #3981
Changes
elsebranch to thecase message[:method]statement inprocess_messageid(i.e. expects a response) but the method is unrecognized, returnsError.new(id:, code: METHOD_NOT_FOUND, message: "Method not found: #{method}")idare still silently ignored (correct per spec)Testing
elseclause correctly catches any unrecognized method stringmessage[:id]receive a proper error response with code -32601id) continue to be silently dropped as expected