From ae6e774377ee4e449e5ca2404fe35be84567e60c Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 26 Feb 2016 15:47:12 -0800 Subject: [PATCH] api: Return NotImplemented for MultiDelete and CopyObject APIs --- generic-handlers.go | 6 ++++++ server_fs_test.go | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/generic-handlers.go b/generic-handlers.go index a36c60b2a..e66863184 100644 --- a/generic-handlers.go +++ b/generic-handlers.go @@ -238,6 +238,11 @@ func (h resourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { writeErrorResponse(w, r, NotImplemented, r.URL.Path) return } + // X-Amz-Copy-Source should be ignored as NotImplemented. + if _, ok := r.Header[http.CanonicalHeaderKey("x-amz-copy-source")]; ok { + writeErrorResponse(w, r, NotImplemented, r.URL.Path) + return + } h.handler.ServeHTTP(w, r) } @@ -276,6 +281,7 @@ var notimplementedBucketResourceNames = map[string]bool{ "requestPayment": true, "versioning": true, "website": true, + "delete": true, } // List of not implemented object queries diff --git a/server_fs_test.go b/server_fs_test.go index f07de50c8..b9e6ddbd5 100644 --- a/server_fs_test.go +++ b/server_fs_test.go @@ -508,6 +508,15 @@ func (s *MyAPIFSCacheSuite) TestNotImplemented(c *C) { response, err := client.Do(request) c.Assert(err, IsNil) c.Assert(response.StatusCode, Equals, http.StatusNotImplemented) + + request, err = s.newRequest("POST", testAPIFSCacheServer.URL+"/bucket/object", 0, nil) + request.Header.Set("X-Amz-Copy-Source", "/bucket/object-old") + c.Assert(err, IsNil) + + client = http.Client{} + response, err = client.Do(request) + c.Assert(err, IsNil) + c.Assert(response.StatusCode, Equals, http.StatusNotImplemented) } func (s *MyAPIFSCacheSuite) TestHeader(c *C) {