• Sina Mahmoodi's avatar
    graphql, node, rpc: improve HTTP write timeout handling (#25457) · f20eba42
    Sina Mahmoodi authored
    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.
    f20eba42
Name
Last commit
Last update
.github Loading commit data...
accounts Loading commit data...
build Loading commit data...
cmd Loading commit data...
common Loading commit data...
consensus Loading commit data...
console Loading commit data...
contracts/checkpointoracle Loading commit data...
core Loading commit data...
crypto Loading commit data...
docs Loading commit data...
eth Loading commit data...
ethclient Loading commit data...
ethdb Loading commit data...
ethstats Loading commit data...
event Loading commit data...
graphql Loading commit data...
internal Loading commit data...
les Loading commit data...
light Loading commit data...
log Loading commit data...
metrics Loading commit data...
miner Loading commit data...
mobile Loading commit data...
node Loading commit data...
p2p Loading commit data...
params Loading commit data...
rlp Loading commit data...
rpc Loading commit data...
signer Loading commit data...
swarm Loading commit data...
tests Loading commit data...
trie Loading commit data...
.dockerignore Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.golangci.yml Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Dockerfile Loading commit data...
Dockerfile.alltools Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
SECURITY.md Loading commit data...
appveyor.yml Loading commit data...
circle.yml Loading commit data...
go.mod Loading commit data...
go.sum Loading commit data...
interfaces.go Loading commit data...
oss-fuzz.sh Loading commit data...