From b435cf06b78853bec87bf238f526bc60679d7712 Mon Sep 17 00:00:00 2001 From: t Date: Wed, 10 Jun 2026 16:46:30 -0600 Subject: fix anthropic thinking effort json placement --- libpanto/src/provider_anthropic_messages.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'libpanto/src/provider_anthropic_messages.zig') diff --git a/libpanto/src/provider_anthropic_messages.zig b/libpanto/src/provider_anthropic_messages.zig index 37ce818..9740c0e 100644 --- a/libpanto/src/provider_anthropic_messages.zig +++ b/libpanto/src/provider_anthropic_messages.zig @@ -124,6 +124,10 @@ pub const AnthropicMessagesRequest = struct { rr.response = try rr.req.receiveHead(&redirect_buf); if (@intFromEnum(rr.response.head.status) >= 400) { + // `head.bytes` (which `iterateHeaders` walks) points into the + // connection read buffer and is invalidated the moment the body + // stream is initialized below. Capture Retry-After first. + const retry_after_ms = provider_mod.retryAfterFromHead(rr.response.head); const body_reader = rr.response.reader(&rr.transfer_buf); var err_buf: std.ArrayList(u8) = .empty; defer err_buf.deinit(self.allocator); @@ -143,7 +147,7 @@ pub const AnthropicMessagesRequest = struct { const classified = provider_mod.classifyHttpStatus(status, err_buf.items); if (self.diag) |d| { d.status_code = status; - d.retry_after_ms = provider_mod.retryAfterFromHead(rr.response.head); + d.retry_after_ms = retry_after_ms; } return classified; } -- cgit v1.3