commit 737207265c3f886fe87a06552f89cc7bdc1654db
parent 42bf945818946a95a481c92fb101235a2945396a
Author: mtmn <miro@haravara.org>
Date: Wed, 10 Jun 2026 01:40:09 +0200
fix: consume newline on reading memcached response
Diffstat:
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/memcached.zig b/src/memcached.zig
@@ -90,12 +90,14 @@ pub const Memcached = struct {
}
fn readLine(self: *Memcached, buf: []u8) !?[]const u8 {
- const line = self.r().takeDelimiterExclusive('\n') catch |err| switch (err) {
+ // Inclusive so the '\n' is consumed from the stream; exclusive would
+ // leave it buffered and desync the following `readExact`.
+ const line = self.r().takeDelimiterInclusive('\n') catch |err| switch (err) {
error.EndOfStream => return null,
error.StreamTooLong => return error.LineTooLong,
else => |e| return e,
};
- const trimmed = std.mem.trim(u8, line, "\r");
+ const trimmed = std.mem.trim(u8, line, "\r\n");
if (buf.len < trimmed.len) return error.BufferTooSmall;
@memcpy(buf[0..trimmed.len], trimmed);
return buf[0..trimmed.len];