12447: Require Content-Length in KeepClient.Get
authorPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 16 Oct 2017 17:00:55 +0000 (13:00 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 16 Oct 2017 17:00:55 +0000 (13:00 -0400)
Fix test stub to report Content-Length.

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

sdk/go/keepclient/collectionreader_test.go
sdk/go/keepclient/keepclient.go

index 813a335df7f5033305b9e4041a57023d6e021197..df8bcb39dce2eaedf0a03c411bc4043ef8f0fe29 100644 (file)
@@ -82,6 +82,7 @@ func (h SuccessHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
                if !ok {
                        resp.WriteHeader(http.StatusNotFound)
                } else {
+                       resp.Header().Set("Content-Length", fmt.Sprintf("%d", len(buf)))
                        resp.Write(buf)
                }
        default:
index bc7aa246c6251607861cf9a5a0cc58414feedda6..6ed0d110616ebb720f62d6341b90dcc78e2c8928 100644 (file)
@@ -246,6 +246,9 @@ func (kc *KeepClient) getOrHead(method string, locator string) (io.ReadCloser, i
                                } else if resp.StatusCode == 404 {
                                        count404++
                                }
+                       } else if resp.ContentLength < 0 {
+                               // Missing Content-Length
+                               return nil, 0, "", fmt.Errorf("Missing Content-Length of block")
                        } else {
                                // Success.
                                if method == "GET" {