projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into 7661-fuse-by-pdh
[arvados.git]
/
services
/
keepproxy
/
keepproxy.go
diff --git
a/services/keepproxy/keepproxy.go
b/services/keepproxy/keepproxy.go
index 7900096caf0ad9e80dfe13fde5970dbd0876db27..79ed51eb0e00f57eb38d4a31251a87c2bc5e866c 100644
(file)
--- a/
services/keepproxy/keepproxy.go
+++ b/
services/keepproxy/keepproxy.go
@@
-37,7
+37,7
@@
func main() {
pidfile string
)
pidfile string
)
- flagset := flag.NewFlagSet("
default
", flag.ExitOnError)
+ flagset := flag.NewFlagSet("
keepproxy
", flag.ExitOnError)
flagset.StringVar(
&listen,
flagset.StringVar(
&listen,
@@
-84,6
+84,9
@@
func main() {
log.Fatalf("Error setting up arvados client %s", err.Error())
}
log.Fatalf("Error setting up arvados client %s", err.Error())
}
+ if os.Getenv("ARVADOS_DEBUG") != "" {
+ keepclient.DebugPrintf = log.Printf
+ }
kc, err := keepclient.MakeKeepClient(&arv)
if err != nil {
log.Fatalf("Error setting up keep client %s", err.Error())
kc, err := keepclient.MakeKeepClient(&arv)
if err != nil {
log.Fatalf("Error setting up keep client %s", err.Error())
@@
-201,7
+204,7
@@
func GetRemoteAddress(req *http.Request) string {
return req.RemoteAddr
}
return req.RemoteAddr
}
-func CheckAuthorizationHeader(kc keepclient.KeepClient, cache *ApiTokenCache, req *http.Request) (pass bool, tok string) {
+func CheckAuthorizationHeader(kc
*
keepclient.KeepClient, cache *ApiTokenCache, req *http.Request) (pass bool, tok string) {
var auth string
if auth = req.Header.Get("Authorization"); auth == "" {
return false, ""
var auth string
if auth = req.Header.Get("Authorization"); auth == "" {
return false, ""
@@
-331,7
+334,7
@@
func (this GetBlockHandler) ServeHTTP(resp http.ResponseWriter, req *http.Reques
var pass bool
var tok string
var pass bool
var tok string
- if pass, tok = CheckAuthorizationHeader(kc, this.ApiTokenCache, req); !pass {
+ if pass, tok = CheckAuthorizationHeader(
&
kc, this.ApiTokenCache, req); !pass {
status, err = http.StatusForbidden, BadAuthorizationHeader
return
}
status, err = http.StatusForbidden, BadAuthorizationHeader
return
}
@@
-362,7
+365,7
@@
func (this GetBlockHandler) ServeHTTP(resp http.ResponseWriter, req *http.Reques
log.Println("Warning:", GetRemoteAddress(req), req.Method, proxiedURI, "Content-Length not provided")
}
log.Println("Warning:", GetRemoteAddress(req), req.Method, proxiedURI, "Content-Length not provided")
}
- switch
err
{
+ switch
respErr := err.(type)
{
case nil:
status = http.StatusOK
resp.Header().Set("Content-Length", fmt.Sprint(expectLength))
case nil:
status = http.StatusOK
resp.Header().Set("Content-Length", fmt.Sprint(expectLength))
@@
-375,10
+378,16
@@
func (this GetBlockHandler) ServeHTTP(resp http.ResponseWriter, req *http.Reques
err = ContentLengthMismatch
}
}
err = ContentLengthMismatch
}
}
- case keepclient.BlockNotFound:
- status = http.StatusNotFound
+ case keepclient.Error:
+ if respErr == keepclient.BlockNotFound {
+ status = http.StatusNotFound
+ } else if respErr.Temporary() {
+ status = http.StatusBadGateway
+ } else {
+ status = 422
+ }
default:
default:
- status = http.Status
BadGateway
+ status = http.Status
InternalServerError
}
}
}
}
@@
-432,7
+441,7
@@
func (this PutBlockHandler) ServeHTTP(resp http.ResponseWriter, req *http.Reques
var pass bool
var tok string
var pass bool
var tok string
- if pass, tok = CheckAuthorizationHeader(kc, this.ApiTokenCache, req); !pass {
+ if pass, tok = CheckAuthorizationHeader(
&
kc, this.ApiTokenCache, req); !pass {
err = BadAuthorizationHeader
status = http.StatusForbidden
return
err = BadAuthorizationHeader
status = http.StatusForbidden
return
@@
-515,7
+524,7
@@
func (handler IndexHandler) ServeHTTP(resp http.ResponseWriter, req *http.Reques
kc := *handler.KeepClient
kc := *handler.KeepClient
- ok, token := CheckAuthorizationHeader(kc, handler.ApiTokenCache, req)
+ ok, token := CheckAuthorizationHeader(
&
kc, handler.ApiTokenCache, req)
if !ok {
status, err = http.StatusForbidden, BadAuthorizationHeader
return
if !ok {
status, err = http.StatusForbidden, BadAuthorizationHeader
return