mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-16 21:56:40 -05:00
reverseproxy: use context.WithoutCancel (#6116)
This commit is contained in:
parent
b893c8c5f8
commit
53f7035299
1 changed files with 1 additions and 27 deletions
|
@ -783,7 +783,7 @@ func (h *Handler) reverseProxy(rw http.ResponseWriter, req *http.Request, origRe
|
|||
// regardless, and we should expect client disconnection in low-latency streaming
|
||||
// scenarios (see issue #4922)
|
||||
if h.FlushInterval == -1 {
|
||||
req = req.WithContext(ignoreClientGoneContext{req.Context()})
|
||||
req = req.WithContext(context.WithoutCancel(req.Context()))
|
||||
}
|
||||
|
||||
// do the round-trip; emit debug log with values we know are
|
||||
|
@ -1419,32 +1419,6 @@ type handleResponseContext struct {
|
|||
isFinalized bool
|
||||
}
|
||||
|
||||
// ignoreClientGoneContext is a special context.Context type
|
||||
// intended for use when doing a RoundTrip where you don't
|
||||
// want a client disconnection to cancel the request during
|
||||
// the roundtrip.
|
||||
// This context clears cancellation, error, and deadline methods,
|
||||
// but still allows values to pass through from its embedded
|
||||
// context.
|
||||
//
|
||||
// TODO: This can be replaced with context.WithoutCancel once
|
||||
// the minimum required version of Go is 1.21.
|
||||
type ignoreClientGoneContext struct {
|
||||
context.Context
|
||||
}
|
||||
|
||||
func (c ignoreClientGoneContext) Deadline() (deadline time.Time, ok bool) {
|
||||
return
|
||||
}
|
||||
|
||||
func (c ignoreClientGoneContext) Done() <-chan struct{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c ignoreClientGoneContext) Err() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// proxyHandleResponseContextCtxKey is the context key for the active proxy handler
|
||||
// so that handle_response routes can inherit some config options
|
||||
// from the proxy handler.
|
||||
|
|
Loading…
Reference in a new issue