From 45ffbc9155c511ee3642dd640ea992d47506da4f Mon Sep 17 00:00:00 2001 From: ch4r10t33r Date: Tue, 27 Jan 2026 09:16:35 +0000 Subject: [PATCH] fix: prevent stale connection reuse with Connection: close header Adds 'Connection: close' header to HTTP requests to prevent EndOfStream errors caused by connection pool reusing stale connections. Issue: Upstreams (zeam, ream) were closing idle connections after responses, but the HTTP client was trying to reuse pooled connections, resulting in EndOfStream errors on every other poll (50% failure rate). Solution: Force connection closure after each request. This eliminates connection pooling issues and ensures fresh connections for each poll. Verified: 0 EndOfStream errors over 35 seconds (previously ~1-2 per minute). --- src/lean_api.zig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lean_api.zig b/src/lean_api.zig index fe4ece1..1bd521f 100644 --- a/src/lean_api.zig +++ b/src/lean_api.zig @@ -61,11 +61,13 @@ fn fetchSlotFromSSZEndpoint( const uri = try std.Uri.parse(url); // Make request with Accept: application/octet-stream header + // Force connection closure to prevent stale connection reuse (EndOfStream errors) var header_buf: [4096]u8 = undefined; var req = try client.open(.GET, uri, .{ .server_header_buffer = &header_buf, .extra_headers = &.{ .{ .name = "accept", .value = "application/octet-stream" }, + .{ .name = "connection", .value = "close" }, }, }); defer req.deinit();