]> git.saurik.com Git - apt.git/blobdiff - methods/https.cc
methods/connect.cc: Only use AI_IDN if defined
[apt.git] / methods / https.cc
index 47dce2ea0d0c57f17e81d44c3c566f14ae59a360..b2d05136cd769ab1d55c7f0d6efe726cf40efcde 100644 (file)
@@ -213,6 +213,8 @@ bool HttpsMethod::SetupProxy()                                              /*{{{*/
    if (UseProxy.empty() == false)
    {
       Proxy = UseProxy;
+      AddProxyAuth(Proxy, ServerName);
+
       if (Proxy.Access == "socks5h")
         curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
       else if (Proxy.Access == "socks5")
@@ -380,8 +382,15 @@ bool HttpsMethod::Fetch(FetchItem *Itm)
         headers = curl_slist_append(headers, "Accept: text/*");
    }
 
+   // go for it - if the file exists, append on it
+   File = new FileFd(Itm->DestFile, FileFd::WriteAny);
+   if (Server == nullptr || Server->Comp(Itm->Uri) == false)
+      Server = CreateServerState(Itm->Uri);
+   else
+      Server->Reset(false);
+
    // if we have the file send an if-range query with a range header
-   if (stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0)
+   if (Server->RangesAllowed && stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0)
    {
       std::string Buf;
       strprintf(Buf, "Range: bytes=%lli-", (long long) SBuf.st_size);
@@ -395,9 +404,6 @@ bool HttpsMethod::Fetch(FetchItem *Itm)
       curl_easy_setopt(curl, CURLOPT_TIMEVALUE, Itm->LastModified);
    }
 
-   // go for it - if the file exists, append on it
-   File = new FileFd(Itm->DestFile, FileFd::WriteAny);
-   Server = CreateServerState(Itm->Uri);
    if (Server->InitHashes(Itm->ExpectedHashes) == false)
       return false;