aboutsummaryrefslogtreecommitdiff
path: root/parser.lua
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-09-06 11:38:55 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2025-09-06 11:38:55 +0200
commit8d505da65ad325732fa35abcf4032c9b1883c0af (patch)
treebc05cd8516f5b1d8183cf59483fa311bc6806be1 /parser.lua
parentb6ecd9ce3012d6a6322fd013f5fad5e5f54856bb (diff)
downloadvis-lspc-8d505da65ad325732fa35abcf4032c9b1883c0af.tar.gz
vis-lspc-8d505da65ad325732fa35abcf4032c9b1883c0af.zip
parse LSP messages containing a Content-Type header
Diffstat (limited to 'parser.lua')
-rw-r--r--parser.lua5
1 files changed, 3 insertions, 2 deletions
diff --git a/parser.lua b/parser.lua
index 85c67d6..0c9fc0a 100644
--- a/parser.lua
+++ b/parser.lua
@@ -23,7 +23,7 @@ function Parser:add(data)
-- we have not seen a complete header in data yet
if not self.exp_len then
-- search for the end of a header
- -- LSP message format: 'header\r\n\r\nbody'
+ -- LSP message format: header\r\n(header\r\n)?\r\nbody'
local header_end, content_start = self.data:find('\r\n\r\n')
-- header is not complete yet -> save data and wait for more
@@ -35,7 +35,8 @@ function Parser:add(data)
local header = self.data:sub(1, header_end)
-- extract content length from the header
- self.exp_len = tonumber(header:match('%d+'))
+ local length = header:match('Content%-Length: %d+')
+ self.exp_len = tonumber(length:match('%d+'))
if not self.exp_len then
return 'invalid header in data: ' .. self.data
end