]> git.saurik.com Git - apt.git/commitdiff
quote plus in filenames to work around a bug in the S3 server
authorMichael Vogt <michael.vogt@ubuntu.com>
Thu, 24 Jan 2013 17:52:25 +0000 (18:52 +0100)
committerMichael Vogt <michael.vogt@ubuntu.com>
Thu, 24 Jan 2013 17:52:25 +0000 (18:52 +0100)
(LP: #1003633)

debian/changelog
methods/http.cc

index c956f57d34b81a601d64b11c8be10223e8720caf..6c1bb08776656577a78548cd7e623b2655582f9a 100644 (file)
@@ -26,6 +26,8 @@ apt (0.9.7.8) UNRELEASED; urgency=low
       (potentially) used for non deb,dsc content that may contain
       spaces, thanks to Daniel Hartwig and Thomas Bushnell 
       (LP: #1086997)
+    - quote plus in filenames to work around a bug in the S3 server
+      (LP: #1003633)
 
  -- Christian Perrier <bubulle@debian.org>  Mon, 24 Dec 2012 07:01:20 +0100
 
index b7e7660048273948fc9ab3381680dcd556fba853..fddf8a78e096bc94a645dd938303d6bccdf09152 100644 (file)
@@ -685,8 +685,12 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out)
       pass it on, HTTP/1.1 says the connection should default to keep alive
       and we expect the proxy to do this */
    if (Proxy.empty() == true || Proxy.Host.empty())
+   {
+      // see LP bugs #1003633 and #1086997. The "+" is encoded as a workaround
+      // for a amazon S3 bug
       sprintf(Buf,"GET %s HTTP/1.1\r\nHost: %s\r\nConnection: keep-alive\r\n",
-             QuoteString(Uri.Path,"~ ").c_str(),ProperHost.c_str());
+             QuoteString(Uri.Path,"+~ ").c_str(),ProperHost.c_str());
+   }
    else
    {
       /* Generate a cache control header if necessary. We place a max