]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1790: Redundant LSP Content-Type header v9.0.1790
authorMagnus Groß <magnus@mggross.com>
Sat, 26 Aug 2023 22:49:51 +0000 (00:49 +0200)
committerChristian Brabandt <cb@256bit.org>
Sun, 27 Aug 2023 09:11:22 +0000 (11:11 +0200)
Problem:  The Content-Type header is an optional header that some LSP
          servers struggle with and may crash when encountering it.
Solution: Drop the Content-Type header from all messages, because we use
          the default value anyway.

Because pretty much all popular LSP clients (e.g. coc.nvim, VSCode) do
not send the Content-Type header, the LSP server ecosystem has developed
such that some LSP servers may even crash when encountering it.
To improve compatibility with these misbehaving LSP servers, we drop
this header as well.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Magnus Groß <magnus@mggross.com>
src/json.c
src/testdir/test_channel_lsp.py
src/version.c

index acf7ac57cfeaa22b2be44396973349e99c248242..e2a011309c32986912a3ffd754dad3980f58846c 100644 (file)
@@ -105,8 +105,7 @@ json_encode_lsp_msg(typval_T *val)
     ga_init2(&lspga, 1, 4000);
     // Header according to LSP specification.
     vim_snprintf((char *)IObuff, IOSIZE,
-           "Content-Length: %u\r\n"
-           "Content-Type: application/vscode-jsonrpc; charset=utf-8\r\n\r\n",
+           "Content-Length: %u\r\n\r\n",
            ga.ga_len - 1);
     ga_concat(&lspga, IObuff);
     ga_concat_len(&lspga, ga.ga_data, ga.ga_len);
index dd107be157edaf80a5e593d130b3928fd1624cca..eccb8937f06de21f09b9ee13042e8325daa9aa66 100644 (file)
@@ -172,7 +172,7 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
     def do_extra_hdr_fields(self, payload):
         self.send_extra_hdr_fields(payload['id'], 'extra-hdr-fields')
 
-    def do_delayad_payload(self, payload):
+    def do_delayed_payload(self, payload):
         self.send_delayed_payload(payload['id'], 'delayed-payload')
 
     def do_hdr_without_len(self, payload):
@@ -208,7 +208,7 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
                         'msg-specific-cb': self.do_msg_specific_cb,
                         'server-req': self.do_server_req,
                         'extra-hdr-fields': self.do_extra_hdr_fields,
-                        'delayed-payload': self.do_delayad_payload,
+                        'delayed-payload': self.do_delayed_payload,
                         'hdr-without-len': self.do_hdr_without_len,
                         'hdr-with-wrong-len': self.do_hdr_with_wrong_len,
                         'hdr-with-negative-len': self.do_hdr_with_negative_len,
index eb7d598eebb50a3a1a03f5162c960704ce9a89a5..9e4e7423418277cc07b32682c85842bed8ffd5a5 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1790,
 /**/
     1789,
 /**/