Software / code / prosody
Comparison
util/dbuffer.lua @ 12802:4a8740e01813
Merge 0.12->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 12 Dec 2022 07:10:54 +0100 |
| parent | 12763:d26eefe98d09 |
| child | 12975:d10957394a3c |
comparison
equal
deleted
inserted
replaced
| 12801:ebd6b4d8bf04 | 12802:4a8740e01813 |
|---|---|
| 89 end | 89 end |
| 90 return nil; | 90 return nil; |
| 91 end | 91 end |
| 92 | 92 |
| 93 function dbuffer_methods:discard(requested_bytes) | 93 function dbuffer_methods:discard(requested_bytes) |
| 94 if requested_bytes > self._length then | 94 if self._length == 0 then return true; end |
| 95 return nil; | 95 if not requested_bytes or requested_bytes >= self._length then |
| 96 self.front_consumed = 0; | |
| 97 self._length = 0; | |
| 98 for _ in self.items:consume() do end | |
| 99 return true; | |
| 96 end | 100 end |
| 97 | 101 |
| 98 local chunk, read_bytes = self:read_chunk(requested_bytes); | 102 local chunk, read_bytes = self:read_chunk(requested_bytes); |
| 99 if chunk then | 103 requested_bytes = requested_bytes - read_bytes; |
| 100 requested_bytes = requested_bytes - read_bytes; | 104 if requested_bytes == 0 then -- Already read everything we need |
| 101 if requested_bytes == 0 then -- Already read everything we need | 105 return true; |
| 102 return true; | |
| 103 end | |
| 104 else | |
| 105 return nil; | |
| 106 end | 106 end |
| 107 | 107 |
| 108 while chunk do | 108 while chunk do |
| 109 if requested_bytes > 0 then | 109 if requested_bytes > 0 then |
| 110 chunk, read_bytes = self:read_chunk(requested_bytes); | 110 chunk, read_bytes = self:read_chunk(requested_bytes); |