diff --git a/swift/proxy/controllers/base.py b/swift/proxy/controllers/base.py index c2e03c8..e2684c4 100644 --- a/swift/proxy/controllers/base.py +++ b/swift/proxy/controllers/base.py @@ -97,11 +97,18 @@ class Controller(object): self.trans_id = '-' def transfer_headers(self, src_headers, dst_headers): - x_remove = 'x-remove-%s-meta-' % self.server_type.lower() - x_meta = 'x-%s-meta-' % self.server_type.lower() + st = self.server_type.lower() + x_remove = 'x-remove-%s-meta-' % st + x_remove_read = 'x-remove-%s-read' % st + x_remove_write = 'x-remove-%s-write' % st + x_meta = 'x-%s-meta-' % st dst_headers.update((k.lower().replace('-remove', '', 1), '') for k in src_headers - if k.lower().startswith(x_remove)) + if k.lower().startswith(x_remove) + or k.lower().startswith(x_remove_read) + or k.lower().startswith(x_remove_write) + ) + dst_headers.update((k.lower(), v) for k, v in src_headers.iteritems() if k.lower() in self.pass_through_headers or