From e097cf96b292f94856a40c59f4699d7401648746 Mon Sep 17 00:00:00 2001
From: David-Sarah Hopwood <david-sarah@jacaranda.org>
Date: Thu, 15 Nov 2012 04:16:19 +0000
Subject: [PATCH] web/unlinked.py: don't use % operator to expand %(uri)s.
 fixes #1860.

Signed-off-by: David-Sarah Hopwood <david-sarah@jacaranda.org>
---
 src/allmydata/test/test_web.py | 3 ++-
 src/allmydata/web/unlinked.py  | 3 +--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py
index d52ce676..146fdf2c 100644
--- a/src/allmydata/test/test_web.py
+++ b/src/allmydata/test/test_web.py
@@ -2117,10 +2117,11 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, testutil.ReallyEqualMixi
             self.failUnlessReallyEqual(statuscode, str(http.FOUND))
             self.failUnless(target.startswith(self.webish_url), target)
             return client.getPage(target, method="GET")
+        # We encode "uri" as "%75ri" to exercise a case affected by ticket #1860.
         d = self.shouldRedirect2("test_POST_upload_no_link_whendone_results",
                                  check,
                                  self.POST, "/uri", t="upload",
-                                 when_done="/uri/%(uri)s",
+                                 when_done="/%75ri/%(uri)s",
                                  file=("new.txt", self.NEWFILE_CONTENTS))
         d.addCallback(lambda res:
                       self.failUnlessReallyEqual(res, self.NEWFILE_CONTENTS))
diff --git a/src/allmydata/web/unlinked.py b/src/allmydata/web/unlinked.py
index 64ebec7b..8a84a402 100644
--- a/src/allmydata/web/unlinked.py
+++ b/src/allmydata/web/unlinked.py
@@ -50,8 +50,7 @@ def POSTUnlinkedCHK(req, client):
         # usual upload-results page
         def _done(upload_results, redir_to):
             if "%(uri)s" in redir_to:
-                redir_to = redir_to % {"uri": urllib.quote(upload_results.get_uri())
-                                         }
+                redir_to = redir_to.replace("%(uri)s", urllib.quote(upload_results.get_uri()))
             return url.URL.fromString(redir_to)
         d.addCallback(_done, when_done)
     else:
-- 
2.45.2