s3_client: Fix buffer offset reset on request retry

This patch addresses an issue where the buffer offset becomes incorrect when a request is retried. The new request uses an offset that has already been advanced, causing misalignment. This fix ensures the buffer offset is correctly reset, preventing such errors.

Closes scylladb/scylladb#22729
This commit is contained in:
Ernest Zaslavsky
2025-02-06 11:49:13 +02:00
committed by Pavel Emelyanov
parent f331d3b876
commit 97d789043a

View File

@@ -514,6 +514,7 @@ future<temporary_buffer<char>> client::get_object_contiguous(sstring object_name
co_await make_request(std::move(req), [&off, &ret, &object_name, start = s3_clock::now()] (group_client& gc, const http::reply& rep, input_stream<char>&& in_) mutable -> future<> {
auto in = std::move(in_);
ret = temporary_buffer<char>(rep.content_length);
off = 0;
s3l.trace("Consume {} bytes for {}", ret->size(), object_name);
co_await in.consume([&off, &ret] (temporary_buffer<char> buf) mutable {
if (buf.empty()) {