Blob Blame History Raw
From 36daad953aea9965cbed97b59d9d2884062157d4 Mon Sep 17 00:00:00 2001
From: gholt <z-launchpad@brim.net>
Date: Thu, 28 Jun 2012 23:42:50 +0000
Subject: [PATCH 1/3] Now url encodes/decodes x-object-manifest values

Change-Id: I8ce7fa1cb0aba3aca622c7a793ee5d330fe4e265
---
 bin/swift |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/bin/swift b/bin/swift
index acc0855..b958f32 100755
--- a/bin/swift
+++ b/bin/swift
@@ -26,6 +26,7 @@ from sys import argv, exc_info, exit, stderr, stdout
 from threading import current_thread, enumerate as threading_enumerate, Thread
 from time import sleep
 from traceback import format_exception
+from urllib import quote, unquote
 
 from swiftclient import Connection, ClientException, HTTPException
 
@@ -176,6 +177,8 @@ def st_delete(parser, args, print_queue, error_queue):
             if old_manifest:
                 segment_queue = Queue(10000)
                 scontainer, sprefix = old_manifest.split('/', 1)
+                scontainer = unquote(scontainer)
+                sprefix = unquote(sprefix)
                 for delobj in conn.get_container(scontainer,
                                                  prefix=sprefix)[1]:
                     segment_queue.put((scontainer, delobj['name']))
@@ -856,8 +859,8 @@ def st_upload(parser, args, print_queue, error_queue):
                             'because not all segments could be uploaded. %s/%s'
                             % (container, obj))
                     new_object_manifest = '%s_segments/%s/%s/%s/' % (
-                        container, obj, put_headers['x-object-meta-mtime'],
-                        full_size)
+                        quote(container), quote(obj),
+                        put_headers['x-object-meta-mtime'], full_size)
                     if old_manifest == new_object_manifest:
                         old_manifest = None
                     put_headers['x-object-manifest'] = new_object_manifest
@@ -869,6 +872,8 @@ def st_upload(parser, args, print_queue, error_queue):
                 if old_manifest:
                     segment_queue = Queue(10000)
                     scontainer, sprefix = old_manifest.split('/', 1)
+                    scontainer = unquote(scontainer)
+                    sprefix = unquote(sprefix)
                     for delobj in conn.get_container(scontainer,
                                                      prefix=sprefix)[1]:
                         segment_queue.put({'delete': True,
-- 
1.7.7.6