Fixed bug in Keep proxy when talking to Keep server that doesn't report
authorPeter Amstutz <tetron@peter.shell.qr1hi.arvadosapi.com>
Tue, 17 Jun 2014 14:21:41 +0000 (14:21 +0000)
committerPeter Amstutz <tetron@peter.shell.qr1hi.arvadosapi.com>
Tue, 17 Jun 2014 14:21:41 +0000 (14:21 +0000)
Content-Length correctly.  no issue #

services/keep/src/arvados.org/keepproxy/keepproxy.go

index 56de1e16d7f0399e77bf283db3d7ecc6724e618c..e3a2ce91945f511b10cfa697c0dd5f07c9ea409d 100644 (file)
@@ -297,14 +297,16 @@ func (this GetBlockHandler) ServeHTTP(resp http.ResponseWriter, req *http.Reques
                blocklen, _, err = kc.AuthorizedAsk(hash, locator.Signature, locator.Timestamp)
        }
 
-       resp.Header().Set("Content-Length", fmt.Sprint(blocklen))
+       if blocklen > 0 {
+               resp.Header().Set("Content-Length", fmt.Sprint(blocklen))
+       }
 
        switch err {
        case nil:
                if reader != nil {
                        n, err2 := io.Copy(resp, reader)
                        if n != blocklen {
-                               log.Printf("%s: %s %s mismatched return %v with Content-Length %v error", GetRemoteAddress(req), req.Method, hash, n, blocklen, err.Error())
+                               log.Printf("%s: %s %s mismatched return %v with Content-Length %v error %v", GetRemoteAddress(req), req.Method, hash, n, blocklen, err2)
                        } else if err2 == nil {
                                log.Printf("%s: %s %s success returned %v bytes", GetRemoteAddress(req), req.Method, hash, n)
                        } else {