Software /
code /
prosody
Diff
util/dbuffer.lua @ 10980:eaee72c7afbd
util.dbuffer: If no bytes parameter passed to read, return remainder of frontmost chunk
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 29 Jun 2020 12:51:28 +0100 (2020-06-29) |
parent | 10973:39991e40d1dc |
child | 11028:d7a403060946 |
line wrap: on
line diff
--- a/util/dbuffer.lua Sun Jun 28 15:58:47 2020 +0200 +++ b/util/dbuffer.lua Mon Jun 29 12:51:28 2020 +0100 @@ -24,6 +24,9 @@ if not chunk then return; end local chunk_length = #chunk; local remaining_chunk_length = chunk_length - consumed; + if not requested_bytes then + requested_bytes = remaining_chunk_length; + end if remaining_chunk_length <= requested_bytes then self.front_consumed = 0; self._length = self._length - remaining_chunk_length; @@ -41,12 +44,14 @@ function dbuffer_methods:read(requested_bytes) local chunks; - if requested_bytes > self._length then + if requested_bytes and requested_bytes > self._length then return nil; end local chunk, read_bytes = self:read_chunk(requested_bytes); - if chunk then + if not requested_bytes then + return chunk; + elseif chunk then requested_bytes = requested_bytes - read_bytes; if requested_bytes == 0 then -- Already read everything we need return chunk;