go-ethereum/rpc
ozpool a0957177fe rpc: count error responses against batch response size limit
handleBatch only accumulated len(resp.Result) when evaluating the
configured batchResponseMaxSize. Error responses leave Result nil and
put their payload on resp.Error, so a batch returning many errors -
especially ones carrying large error.data via rpc.DataError - could
exceed the limit without ever tripping the response-too-large guard.

Introduce a responseSize helper that returns the marshalled size of
resp.Error when present, so error payloads count toward the cap on the
same footing as successful results. The helper falls back to the error
message length on the (theoretically impossible) case where marshalling
jsonError fails, so the counter still makes progress.

Adds TestServerBatchResponseSizeLimitErrors which configures a 50-byte
cap, issues a batch of five test_returnError calls, and asserts that
only the first error is delivered while the remainder return code
-32003 (errcodeResponseTooLarge). The test fails on master without the
fix and passes with it.

Fixes #33814
2026-05-14 11:39:42 +05:30
..
testdata rpc: add limit for batch request items and response size (#26681) 2023-06-13 13:38:58 +02:00
client.go rpc, internal/telemetry: add OpenTelemetry tracing for JSON-RPC calls (#33452) 2026-01-14 10:58:30 -07:00
client_example_test.go rpc: make ExampleClientSubscription work with the geth API (#19483) 2020-04-27 17:25:24 +02:00
client_opt.go eth, rpc: add configurable option for wsMessageSizeLimit (#27801) 2023-10-03 03:23:19 -04:00
client_opt_test.go all: update license comments and AUTHORS (#31133) 2025-02-05 23:01:17 +01:00
client_test.go rpc: fix a flaky test of the websocket (#33002) 2025-10-23 20:58:33 +08:00
context_headers.go rpc: support injecting HTTP headers through context (#26023) 2022-11-16 15:22:12 +01:00
doc.go all: update dead wiki links (#32215) 2025-07-15 06:24:17 -06:00
endpoints.go trie, rpc, cmd/geth: fix tests on 32-bit and windows + minor rpc fixes (#21871) 2020-11-19 22:50:47 +01:00
errors.go rpc: add method to test for subscription support (#25942) 2023-06-14 14:04:41 +02:00
handler.go rpc: count error responses against batch response size limit 2026-05-14 11:39:42 +05:30
http.go rpc: extract OpenTelemetry trace context from request headers (#33599) 2026-01-14 14:03:48 -07:00
http_test.go rpc: avoid unnecessary RST_STREAM, PING frames sent by client (#33122) 2025-11-11 15:54:36 +01:00
inproc.go rpc: add limit for batch request items and response size (#26681) 2023-06-13 13:38:58 +02:00
ipc.go rpc: add limit for batch request items and response size (#26681) 2023-06-13 13:38:58 +02:00
ipc_js.go all: add go:build lines (#23468) 2021-08-25 18:46:29 +02:00
ipc_unix.go rpc: fix ipc max path size (#29385) 2024-04-02 11:25:19 +02:00
ipc_wasip1.go all: add build tags for wasip1 (#31090) 2025-01-30 16:58:53 +01:00
ipc_windows.go rpc: use go-winio for named pipes (#27972) 2023-08-23 04:39:01 +02:00
json.go rpc: add method name length limit (#31711) 2025-05-05 14:43:47 +02:00
metrics.go rpc: fix ns/µs mismatch in metrics (#28649) 2023-12-08 09:40:50 +01:00
server.go rpc, internal/telemetry: add OpenTelemetry tracing for JSON-RPC calls (#33452) 2026-01-14 10:58:30 -07:00
server_test.go rpc: count error responses against batch response size limit 2026-05-14 11:39:42 +05:30
service.go rpc, internal/telemetry: add OpenTelemetry tracing for JSON-RPC calls (#33452) 2026-01-14 10:58:30 -07:00
stdio.go rpc: add limit for batch request items and response size (#26681) 2023-06-13 13:38:58 +02:00
subscription.go rpc: add timeout to rpc client Unsubscribe (#30318) 2024-08-20 15:54:28 +02:00
subscription_test.go internal: remove unused shh and swarm modules from console (#32073) 2025-07-01 19:51:16 +08:00
testservice_test.go rpc: remove deprecated method "Notifier.Closed" (#29162) 2024-03-05 14:44:23 +01:00
tracing_test.go rpc,internal/telemetry: fix deferred spanEnd to capture errors via pointer (#33772) 2026-02-14 01:00:14 +01:00
types.go eth, eth/filters: implement API error code for pruned blocks (#31361) 2025-04-01 13:42:01 +02:00
types_test.go rpc: run tests in parallel (#30384) 2024-11-19 13:43:33 +01:00
websocket.go rpc: send WebSocket close frame on client disconnect (#33909) 2026-04-24 11:27:39 +02:00
websocket_test.go rpc: refactor read limit test (#32494) 2025-08-26 23:43:51 +02:00