diff --git a/src/lua/bsdsocket.lua b/src/lua/bsdsocket.lua index ccb579ba5de8d8e9d0045f604c1aec9b51ff1a1a..1eb2dea73a3d147a4413f62e3c54277d90a71a22 100644 --- a/src/lua/bsdsocket.lua +++ b/src/lua/bsdsocket.lua @@ -556,18 +556,24 @@ local function readline_check(self, eols, limit) if string.len(rbuf) == 0 then return nil end + + local shortest for i, eol in pairs(eols) do if string.len(rbuf) >= string.len(eol) then local data = string.match(rbuf, "^(.-" .. eol .. ")") if data ~= nil then if string.len(data) > limit then - return string.sub(data, 1, limit) + data = string.sub(data, 1, limit) + end + if shortest == nil then + shortest = data + elseif #shortest > #data then + shortest = data end - return data end end end - return nil + return shortest end local function readline(self, limit, eol, timeout)