From 52f9f91d91aa33a1483334f69073f3e6250cd168 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Mon, 10 Aug 2026 15:27:12 +0200 Subject: refactor(receive): make implicit line reads explicit --- src/http.lua | 10 +++++----- src/tp.lua | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/http.lua b/src/http.lua index 259eb2b..2c296d4 100644 --- a/src/http.lua +++ b/src/http.lua @@ -48,7 +48,7 @@ local function receiveheaders(sock, headers) local line, name, value, err headers = headers or {} -- get first line - line, err = sock:receive() + line, err = sock:receive("*l") if err then return nil, err end -- headers go until a blank line is found while line ~= "" do @@ -57,12 +57,12 @@ local function receiveheaders(sock, headers) if not (name and value) then return nil, "malformed response headers" end name = string.lower(name) -- get next line (value might be folded) - line, err = sock:receive() + line, err = sock:receive("*l") if err then return nil, err end -- unfold any folded values while string.find(line, "^%s") do value = value .. line - line, err = sock:receive() + line, err = sock:receive("*l") if err then return nil, err end end -- save pair in table @@ -82,7 +82,7 @@ socket.sourcet["http-chunked"] = function(sock, headers) }, { __call = function() -- get chunk size, skip extension - local line, err = sock:receive() + local line, err = sock:receive("*l") if err then return nil, err end local size = base.tonumber(string.gsub(line, ";.*", ""), 16) if not size then return nil, "invalid chunk size" end @@ -90,7 +90,7 @@ socket.sourcet["http-chunked"] = function(sock, headers) if size > 0 then -- if not, get chunk and skip terminating CRLF local chunk, err, _ = sock:receive(size) - if chunk then sock:receive() end + if chunk then sock:receive("*l") end return chunk, err else -- if it was, read trailers into headers table diff --git a/src/tp.lua b/src/tp.lua index b8ebc56..bf4bc14 100644 --- a/src/tp.lua +++ b/src/tp.lua @@ -26,14 +26,14 @@ _M.TIMEOUT = 60 -- gets server reply (works for SMTP and FTP) local function get_reply(c) local code, current, sep - local line, err = c:receive() + local line, err = c:receive("*l") local reply = line if err then return nil, err end code, sep = socket.skip(2, string.find(line, "^(%d%d%d)(.?)")) if not code then return nil, "invalid server reply" end if sep == "-" then -- reply is multiline repeat - line, err = c:receive() + line, err = c:receive("*l") if err then return nil, err end current, sep = socket.skip(2, string.find(line, "^(%d%d%d)(.?)")) reply = reply .. "\n" .. line -- cgit v1.2.3-55-g6feb