aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2020-08-24 16:18:13 +0100
committerMatthew Wild <mwild1@gmail.com>2020-08-24 16:18:13 +0100
commit7fa4cc8de0ffb0a0914c1861987a19cf666febf6 (patch)
treee2b18a6b4676022a9a205fa3cae61043ce212b08
parente21429d8e4533f765072f432b138a68092dab3fa (diff)
downloadprosody-7fa4cc8de0ffb0a0914c1861987a19cf666febf6.tar.gz
prosody-7fa4cc8de0ffb0a0914c1861987a19cf666febf6.zip
util.dbuffer: Fix :sub() not working with partially-consumed chunks (thanks Zash for test case)
This also appears to fix some bugs with chunk-encoded streams in net.http.parser.
-rw-r--r--spec/util_dbuffer_spec.lua2
-rw-r--r--util/dbuffer.lua2
2 files changed, 2 insertions, 2 deletions
diff --git a/spec/util_dbuffer_spec.lua b/spec/util_dbuffer_spec.lua
index 26fa7da6..554a7e54 100644
--- a/spec/util_dbuffer_spec.lua
+++ b/spec/util_dbuffer_spec.lua
@@ -67,7 +67,7 @@ describe("util.dbuffer", function ()
assert.equals("hello", b:sub(1, 5));
end);
- pending("works after discard", function ()
+ it("works after discard", function ()
local b = dbuffer.new(256);
assert.truthy(b:write("foo"));
assert.truthy(b:write("bar"));
diff --git a/util/dbuffer.lua b/util/dbuffer.lua
index 9ec40eb9..a50f3a64 100644
--- a/util/dbuffer.lua
+++ b/util/dbuffer.lua
@@ -123,7 +123,7 @@ function dbuffer_methods:sub(i, j)
self:collapse(j);
- return self.items:peek():sub(i, j);
+ return self.items:peek():sub(self.front_consumed+1):sub(i, j);
end
function dbuffer_methods:byte(i, j)