go-ethereum/p2p
Sina Mahmoodi f20eba426a
graphql, node, rpc: improve HTTP write timeout handling (#25457)
Here we add special handling for sending an error response when the write timeout of the
HTTP server is just about to expire. This is surprisingly difficult to get right, since is
must be ensured that all output is fully flushed in time, which needs support from
multiple levels of the RPC handler stack:

The timeout response can't use chunked transfer-encoding because there is no way to write
the final terminating chunk. net/http writes it when the topmost handler returns, but the
timeout will already be over by the time that happens. We decided to disable chunked
encoding by setting content-length explicitly.

Gzip compression must also be disabled for timeout responses because we don't know the
true content-length before compressing all output, i.e. compression would reintroduce
chunked transfer-encoding.
2022-12-07 14:02:14 +01:00
..
discover p2p/discover: add config option for discv5 protocol ID (#26041) 2022-11-30 22:03:34 +01:00
dnsdisc common/lru: add generic LRU implementation (#26162) 2022-11-14 15:41:56 +01:00
enode p2p/enode: implement per-source timeout in FairMix (#25962) 2022-11-08 12:12:36 +01:00
enr p2p/discover: improve discv5 NODES response packing (#26033) 2022-11-07 19:19:02 +01:00
msgrate all: fix spelling mistakes (#25961) 2022-10-11 09:37:00 +02:00
nat p2p/nat: use IP.IsPrivate (#26252) 2022-11-25 16:30:07 +01:00
netutil p2p/netutil: minor code cosmetic 2022-07-25 12:52:49 +03:00
nodestate all: fix docstrings 2022-10-04 09:18:02 +02:00
rlpx all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
simulations graphql, node, rpc: improve HTTP write timeout handling (#25457) 2022-12-07 14:02:14 +01:00
tracker all: fix some typos (#25551) 2022-08-19 09:00:21 +03:00
dial_test.go p2p: new dial scheduler (#20592) 2020-02-13 11:10:03 +01:00
dial.go build: upgrade to go 1.19 (#25726) 2022-09-10 13:25:40 +02:00
message_test.go p2p: move rlpx into separate package (#21464) 2020-09-22 10:17:39 +02:00
message.go build: upgrade to go 1.19 (#25726) 2022-09-10 13:25:40 +02:00
metrics.go eth/protocols, prp/tracker: add support for req/rep rtt tracking (#22608) 2021-04-22 11:42:46 +03:00
peer_error.go p2p: use errors.Is for error comparison (#24882) 2022-06-07 17:27:21 +02:00
peer_test.go p2p: move rlpx into separate package (#21464) 2020-09-22 10:17:39 +02:00
peer.go p2p: use errors.Is for error comparison (#24882) 2022-06-07 17:27:21 +02:00
protocol.go cmd/devp2p, p2p: dial using node iterator, discovery crawler (#20132) 2019-10-29 17:08:57 +02:00
server_test.go all: fix warning flagging the use of DeepEqual on error (#23624) 2021-10-19 17:06:47 +02:00
server.go cmd/geth, p2p: add support for custom discovery UDP port (#24979) 2022-06-28 17:25:47 +02:00
transport_test.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
transport.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
util_test.go p2p: new dial scheduler (#20592) 2020-02-13 11:10:03 +01:00
util.go all: assign zero after resize in implementations of heap.Interface (#26296) 2022-12-05 13:49:54 +01:00