mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-29 09:34:03 +08:00
fix another panic where CloseNotify was called from wrong goroutine
panic: net/http: CloseNotify called after ServeHTTP finished goroutine 180 [running]: net/http.(*response).CloseNotify(0xc8220684e0, 0x0) /home/r/go/src/net/http/server.go:1535 +0x9d github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/prometheus/client_golang/ /home/r/src/github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/prome github.com/ipfs/go-ipfs/core/corehttp.(*gatewayHandler).getOrHeadHandler.func1(0x7 /home/r/src/github.com/ipfs/go-ipfs/core/corehttp/gateway_handler.go:119 + created by github.com/ipfs/go-ipfs/core/corehttp.(*gatewayHandler).getOrHeadHandle /home/r/src/github.com/ipfs/go-ipfs/core/corehttp/gateway_handler.go:123 + License: MIT Signed-off-by: Robert Carlsen <rwcarlsen@gmail.com>
This commit is contained in:
@ -114,9 +114,10 @@ func (i *gatewayHandler) getOrHeadHandler(w http.ResponseWriter, r *http.Request
|
|||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
if cn, ok := w.(http.CloseNotifier); ok {
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
clientGone := cn.CloseNotify()
|
||||||
go func() {
|
go func() {
|
||||||
select {
|
select {
|
||||||
case <-cn.CloseNotify():
|
case <-clientGone:
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
}
|
}
|
||||||
cancel()
|
cancel()
|
||||||
|
Reference in New Issue
Block a user