projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
14199: Store data if X-Keep-Signature given in proxied GET/HEAD req.
[arvados.git]
/
services
/
keepstore
/
handlers.go
diff --git
a/services/keepstore/handlers.go
b/services/keepstore/handlers.go
index 2426c9cbdacd4044a4c2fab06f4ee51edef2b4e9..2210c8c6ddf51f28d43d0026279727f854400e59 100644
(file)
--- a/
services/keepstore/handlers.go
+++ b/
services/keepstore/handlers.go
@@
-101,9
+101,14
@@
func (rtr *router) handleGET(resp http.ResponseWriter, req *http.Request) {
ctx, cancel := contextForResponse(context.TODO(), resp)
defer cancel()
ctx, cancel := contextForResponse(context.TODO(), resp)
defer cancel()
+ // Intervening proxies must not return a cached GET response
+ // to a prior request if a X-Keep-Signature request header has
+ // been added or changed.
+ resp.Header().Add("Vary", "X-Keep-Signature")
+
locator := req.URL.Path[1:]
if strings.Contains(locator, "+R") && !strings.Contains(locator, "+A") {
locator := req.URL.Path[1:]
if strings.Contains(locator, "+R") && !strings.Contains(locator, "+A") {
- rtr.remoteProxy.Get(resp, req, rtr.cluster)
+ rtr.remoteProxy.Get(
ctx,
resp, req, rtr.cluster)
return
}
return
}