X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dea40b3efdb8b6b948cda5a1601fcbabb831f2fc..2c3a6a67bc01241f57e815f4f7e4678bd6eadb03:/lib/controller/proxy.go diff --git a/lib/controller/proxy.go b/lib/controller/proxy.go index b7f3c4f72a..c01c152352 100644 --- a/lib/controller/proxy.go +++ b/lib/controller/proxy.go @@ -5,18 +5,15 @@ package controller import ( - "context" "io" "net/http" "net/url" - "time" "git.curoverse.com/arvados.git/sdk/go/httpserver" ) type proxy struct { - Name string // to use in Via header - RequestTimeout time.Duration + Name string // to use in Via header } type HTTPError struct { @@ -45,8 +42,8 @@ var dropHeaders = map[string]bool{ type ResponseFilter func(*http.Response, error) (*http.Response, error) -// Forward a request to downstream service, and return response or error. -func (p *proxy) ForwardRequest( +// Forward a request to upstream service, and return response or error. +func (p *proxy) Do( reqIn *http.Request, urlOut *url.URL, client *http.Client) (*http.Response, error) { @@ -69,23 +66,19 @@ func (p *proxy) ForwardRequest( } hdrOut.Add("Via", reqIn.Proto+" arvados-controller") - ctx := reqIn.Context() - if p.RequestTimeout > 0 { - ctx, _ = context.WithDeadline(ctx, time.Now().Add(time.Duration(p.RequestTimeout))) - } - reqOut := (&http.Request{ Method: reqIn.Method, URL: urlOut, Host: reqIn.Host, Header: hdrOut, Body: reqIn.Body, - }).WithContext(ctx) + }).WithContext(reqIn.Context()) - return client.Do(reqOut) + resp, err := client.Do(reqOut) + return resp, err } -// Copy a response (or error) to the upstream client +// Copy a response (or error) to the downstream client func (p *proxy) ForwardResponse(w http.ResponseWriter, resp *http.Response, err error) (int64, error) { if err != nil { if he, ok := err.(HTTPError); ok {