]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: etag fixes
authorYehuda Sadeh <yehuda@redhat.com>
Thu, 5 Apr 2018 21:31:41 +0000 (14:31 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Thu, 12 Apr 2018 22:38:40 +0000 (15:38 -0700)
Use string instead of bufferlist to avoid potential issues.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_op.h
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h
src/rgw/rgw_rest.cc
src/rgw/rgw_rest.h
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_rest_swift.cc

index 875004fb391d5b6af1efbdc15db2895df86c013a..0d9462b5aa3cf0accc4fe8a1cdfa080cefd6ed83 100644 (file)
@@ -1306,7 +1306,7 @@ protected:
   string source_zone;
   string client_id;
   string op_id;
-  ceph::buffer::list etag;
+  string etag;
 
   off_t last_ofs;
 
index 8b041d9b752dba09f1c29fc725aaa843e62595dd..be820f3aca1eb2734268ceb33bd428d43183c49b 100644 (file)
@@ -7789,7 +7789,7 @@ int RGWRados::fetch_remote_obj(RGWObjectCtx& obj_ctx,
               real_time delete_at,
                string *version_id,
                string *ptag,
-               ceph::buffer::list *petag,
+               string *petag,
                void (*progress_cb)(off_t, void *),
                void *progress_data,
                rgw_zone_set *zones_trace)
@@ -7938,7 +7938,7 @@ int RGWRados::fetch_remote_obj(RGWObjectCtx& obj_ctx,
   if (petag) {
     const auto iter = cb.get_attrs().find(RGW_ATTR_ETAG);
     if (iter != cb.get_attrs().end()) {
-      *petag = iter->second;
+      *petag = iter->second.to_str();
     }
   }
 
@@ -8095,7 +8095,7 @@ int RGWRados::copy_obj(RGWObjectCtx& obj_ctx,
               real_time delete_at,
                string *version_id,
                string *ptag,
-               ceph::buffer::list *petag,
+               string *petag,
                void (*progress_cb)(off_t, void *),
                void *progress_data)
 {
@@ -8221,7 +8221,7 @@ int RGWRados::copy_obj(RGWObjectCtx& obj_ctx,
   if (petag) {
     const auto iter = attrs.find(RGW_ATTR_ETAG);
     if (iter != attrs.end()) {
-      *petag = iter->second;
+      *petag = iter->second.to_str();
     }
   }
 
@@ -8358,7 +8358,7 @@ int RGWRados::copy_obj_data(RGWObjectCtx& obj_ctx,
                uint64_t olh_epoch,
               real_time delete_at,
                string *version_id,
-               ceph::buffer::list *petag)
+               string *petag)
 {
   string tag;
   append_rand_alpha(cct, tag, tag, 32);
@@ -8407,9 +8407,9 @@ int RGWRados::copy_obj_data(RGWObjectCtx& obj_ctx,
   auto iter = attrs.find(RGW_ATTR_ETAG);
   if (iter != attrs.end()) {
     bufferlist& bl = iter->second;
-    etag = string(bl.c_str(), bl.length());
+    etag = bl.to_str();
     if (petag) {
-      *petag = bl;
+      *petag = etag;
     }
   }
 
index c82b77883e207ee69cc7080a69e25d04c1c432c9..7374843dbc1fc65fec0346c7edfbdae2501ec52a 100644 (file)
@@ -3152,7 +3152,7 @@ public:
                       ceph::real_time delete_at,
                        string *version_id,
                        string *ptag,
-                       ceph::buffer::list *petag,
+                       string *petag,
                        void (*progress_cb)(off_t, void *),
                        void *progress_data,
                        rgw_zone_set *zones_trace= nullptr);
@@ -3195,7 +3195,7 @@ public:
               ceph::real_time delete_at,
                string *version_id,
                string *ptag,
-               ceph::buffer::list *petag,
+               string *petag,
                void (*progress_cb)(off_t, void *),
                void *progress_data);
 
@@ -3209,7 +3209,7 @@ public:
                uint64_t olh_epoch,
               ceph::real_time delete_at,
                string *version_id,
-               ceph::buffer::list *petag);
+               string *petag);
   
   int check_bucket_empty(RGWBucketInfo& bucket_info);
 
index 946d55b3774906f80101f859ac17f433f917fb83..6f63517c4a5f9152ef5a000a37c7baf7dc2fe0d0 100644 (file)
@@ -420,13 +420,6 @@ void dump_etag(struct req_state* const s,
   }
 }
 
-void dump_etag(struct req_state* const s,
-               ceph::buffer::list& bl_etag,
-               const bool quoted)
-{
-  return dump_etag(s, get_sanitized_hdrval(bl_etag), quoted);
-}
-
 void dump_bucket_from_state(struct req_state *s)
 {
   if (g_conf->rgw_expose_bucket && ! s->bucket_name.empty()) {
index 7da841604defab86348e1a202e52c7dffd6b5930..c171a853fb10b39705c528d0d3a6112b405fef8b 100644 (file)
@@ -734,9 +734,6 @@ extern int64_t parse_content_length(const char *content_length);
 extern void dump_etag(struct req_state *s,
                       const boost::string_ref& etag,
                       bool quoted = false);
-extern void dump_etag(struct req_state *s,
-                      ceph::buffer::list& bl_etag,
-                      bool quoted = false);
 extern void dump_epoch_header(struct req_state *s, const char *name, real_time t);
 extern void dump_time_header(struct req_state *s, const char *name, real_time t);
 extern void dump_last_modified(struct req_state *s, real_time t);
index ef67fcbbbcf5668014bb783245f36b1da7e7a56c..fb22cb1b4616643de8d8e519c00bc457b95d95a1 100644 (file)
@@ -258,7 +258,7 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
     } else {
       auto iter = attrs.find(RGW_ATTR_ETAG);
       if (iter != attrs.end()) {
-        dump_etag(s, iter->second);
+        dump_etag(s, iter->second.to_str());
       }
     }
 
@@ -2185,9 +2185,8 @@ void RGWCopyObj_ObjStore_S3::send_response()
 
   if (op_ret == 0) {
     dump_time(s, "LastModified", &mtime);
-    std::string etag_str = etag.c_str();
-    if (! etag_str.empty()) {
-      s->formatter->dump_string("ETag", std::move(etag_str));
+    if (! etag.empty()) {
+      s->formatter->dump_string("ETag", std::move(etag));
     }
     s->formatter->close_section();
     rgw_flush_formatter_and_reset(s, s->formatter);
index 260ee389d709858a1abe52e21c19b634736983e9..be023bf5d9077c39a4204cd6a8943bddda44fece 100644 (file)
@@ -1436,7 +1436,7 @@ int RGWGetObj_ObjStore_SWIFT::send_response_data(bufferlist& bl,
     } else {
       auto iter = attrs.find(RGW_ATTR_ETAG);
       if (iter != attrs.end()) {
-        dump_etag(s, iter->second);
+        dump_etag(s, iter->second.to_str());
       }
     }