From cc41811512ba00f70738b70f0448c9172b71daf2 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 9 Jan 2013 11:00:13 +0100 Subject: * methods/https.cc: - reuse connection in https, thanks to Thomas Bushnell, BSG for the patch. LP: #1087543, Closes: #695359 --- methods/https.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'methods') diff --git a/methods/https.cc b/methods/https.cc index c1a49ba60..11d4ba8aa 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -124,7 +124,6 @@ bool HttpsMethod::Fetch(FetchItem *Itm) curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_callback); curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, this); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); - curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); curl_easy_setopt(curl, CURLOPT_FILETIME, true); // SSL parameters are set by default to the common (non mirror-specific) value @@ -240,6 +239,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm) curl_easy_setopt(curl, CURLOPT_VERBOSE, true); // error handling + curl_errorstr[0] = '\0'; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); // If we ask for uncompressed files servers might respond with content- @@ -288,7 +288,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm) File->Close(); // cleanup - if(success != 0) + if(success != 0 || (curl_responsecode != 200 && curl_responsecode != 304)) { _error->Error("%s", curl_errorstr); // unlink, no need keep 401/404 page content in partial/ -- cgit v1.2.3 From 45a9cc46a143cc2864bba910cff2d9dfc1172dec Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 9 Jan 2013 14:47:35 +0100 Subject: add missing curl_easy_cleanup() --- methods/https.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'methods') diff --git a/methods/https.h b/methods/https.h index b1961a870..293e288e0 100644 --- a/methods/https.h +++ b/methods/https.h @@ -41,6 +41,11 @@ class HttpsMethod : public pkgAcqMethod File = 0; curl = curl_easy_init(); }; + + ~HttpsMethod() + { + curl_easy_cleanup(curl); + }; }; #include -- cgit v1.2.3 From 72663b44179f4c6f3ec2e4ec25d8df3c4590b222 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 11 Jan 2013 09:51:00 +0100 Subject: * methods/http.cc: - quote spaces in filenames to ensure as the http method is also (potentially) used for non deb,dsc content that may contain spaces, thanks to Daniel Hartwig and Thomas Bushnell (LP: #1086997) --- methods/http.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'methods') diff --git a/methods/http.cc b/methods/http.cc index acf25a42a..b7e766004 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -686,7 +686,7 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) and we expect the proxy to do this */ if (Proxy.empty() == true || Proxy.Host.empty()) 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 -- cgit v1.2.3 From 1d12857c083b436fb88710cd8e87267ece7af8a9 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 24 Jan 2013 18:52:25 +0100 Subject: quote plus in filenames to work around a bug in the S3 server (LP: #1003633) --- methods/http.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'methods') 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 -- cgit v1.2.3