commit - 42bf945818946a95a481c92fb101235a2945396a
commit + 737207265c3f886fe87a06552f89cc7bdc1654db
blob - fbdd49d0015baeb3e9eccea8e7c4ee40535834ea
blob + c0bf997c71213570fffb7bde2052c56fab5fbbca
--- src/memcached.zig
+++ src/memcached.zig
}
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];