diff options
Diffstat (limited to 'methods/http.cc')
-rw-r--r-- | methods/http.cc | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/methods/http.cc b/methods/http.cc index f52459377..7347e8349 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: http.cc,v 1.46 2000/05/28 04:33:59 jgg Exp $ +// $Id: http.cc,v 1.47 2001/02/20 07:03:18 jgg Exp $ /* ###################################################################### HTTP Aquire Method - This is the HTTP aquire method for APT. @@ -285,7 +285,7 @@ bool ServerState::Open() else Proxy = getenv("http_proxy"); - // Parse no_proxy, a , seperated list of hosts + // Parse no_proxy, a , separated list of hosts if (getenv("no_proxy") != 0) { const char *Start = getenv("no_proxy"); @@ -376,6 +376,10 @@ int ServerState::RunHeaders() I = J; } + // 100 Continue is a Nop... + if (Result == 100) + continue; + // Tidy up the connection persistance state. if (Encoding == Closes && HaveContent == true) Persistent = false; @@ -537,7 +541,7 @@ bool ServerState::HeaderLine(string Line) else Persistent = true; } - + return true; } @@ -676,6 +680,10 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) Req += string("Proxy-Authorization: Basic ") + Base64Encode(Proxy.User + ":" + Proxy.Password) + "\r\n"; + if (Uri.User.empty() == false || Uri.Password.empty() == false) + Req += string("Authorization: Basic ") + + Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n"; + Req += "User-Agent: Debian APT-HTTP/1.2\r\n\r\n"; if (Debug == true) @@ -1058,6 +1066,7 @@ int HttpMethod::Loop() { _error->Error("Bad header Data"); Fail(true); + RotateDNS(); continue; } @@ -1076,6 +1085,7 @@ int HttpMethod::Loop() FailCounter = 0; } + RotateDNS(); continue; } }; @@ -1093,6 +1103,11 @@ int HttpMethod::Loop() // Run the data bool Result = Server->RunData(); + /* If the server is sending back sizeless responses then fill in + the size now */ + if (Res.Size == 0) + Res.Size = File->Size(); + // Close the file, destroy the FD object and timestamp it FailFd = -1; delete File; @@ -1108,7 +1123,7 @@ int HttpMethod::Loop() // Send status to APT if (Result == true) { - Res.MD5Sum = Server->In.MD5->Result(); + Res.MD5Sum = Server->In.MD5->Result(); URIDone(Res); } else @@ -1135,6 +1150,7 @@ int HttpMethod::Loop() case 5: { Fail(); + RotateDNS(); Server->Close(); break; } |