From 1d12857c083b436fb88710cd8e87267ece7af8a9 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 24 Jan 2013 18:52:25 +0100 Subject: [PATCH] quote plus in filenames to work around a bug in the S3 server (LP: #1003633) --- debian/changelog | 2 ++ methods/http.cc | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index c956f57d3..6c1bb0877 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Mon, 24 Dec 2012 07:01:20 +0100 diff --git a/methods/http.cc b/methods/http.cc index b7e766004..fddf8a78e 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -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 -- 2.47.2