]> git.saurik.com Git - apt.git/blobdiff - methods/http.cc
Checks for the partial directories before doing downloads
[apt.git] / methods / http.cc
index f014193a01cd005495db1f07445950db42cb4ee6..c4a3f16295d44b1282844fd101f481aff3fd499c 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: http.cc,v 1.34 1999/05/29 03:25:03 jgg Exp $
+// $Id: http.cc,v 1.38 1999/10/03 21:09:27 jgg Exp $
 /* ######################################################################
 
    HTTP Aquire Method - This is the HTTP aquire method for APT.
@@ -54,6 +54,7 @@ int HttpMethod::FailFd = -1;
 time_t HttpMethod::FailTime = 0;
 unsigned long PipelineDepth = 10;
 unsigned long TimeOut = 120;
+bool Debug = false;
 
 // CircleBuf::CircleBuf - Circular input buffer                                /*{{{*/
 // ---------------------------------------------------------------------
@@ -305,7 +306,7 @@ bool ServerState::Open()
    }
    
    // Connect to the remote server
-   if (Connect(Host,Port,"http",ServerFd,TimeOut,Owner) == false)
+   if (Connect(Host,Port,"http",80,ServerFd,TimeOut,Owner) == false)
       return false;
    
    return true;
@@ -631,7 +632,9 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out)
           Base64Encode(Proxy.User + ":" + Proxy.Password) + "\r\n";
 
    Req += "User-Agent: Debian APT-HTTP/1.2\r\n\r\n";
-//   cerr << Req << endl;
+   
+   if (Debug == true)
+      cerr << Req << endl;
 
    Out.Read(Req);
 }
@@ -643,7 +646,8 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out)
 bool HttpMethod::Go(bool ToFile,ServerState *Srv)
 {
    // Server has closed the connection
-   if (Srv->ServerFd == -1 && Srv->In.WriteSpace() == false)
+   if (Srv->ServerFd == -1 && (Srv->In.WriteSpace() == false || 
+                              ToFile == false))
       return false;
    
    fd_set rfds,wfds,efds;
@@ -678,7 +682,7 @@ bool HttpMethod::Go(bool ToFile,ServerState *Srv)
    int MaxFd = FileFD;
    if (MaxFd < Srv->ServerFd)
       MaxFd = Srv->ServerFd;
-   
+
    // Select
    struct timeval tv;
    tv.tv_sec = TimeOut;
@@ -723,7 +727,7 @@ bool HttpMethod::Go(bool ToFile,ServerState *Srv)
    // Handle commands from APT
    if (FD_ISSET(STDIN_FILENO,&rfds))
    {
-      if (Run(true) != 0)
+      if (Run(true) != -1)
         exit(100);
    }   
        
@@ -938,6 +942,7 @@ bool HttpMethod::Configuration(string Message)
    TimeOut = _config->FindI("Acquire::http::Timeout",TimeOut);
    PipelineDepth = _config->FindI("Acquire::http::Pipeline-Depth",
                                  PipelineDepth);
+   Debug = _config->FindB("Debug::Acquire::http",false);
    
    return true;
 }
@@ -962,8 +967,10 @@ int HttpMethod::Loop()
            return 0;
       }
       
-      // Run messages
-      if (Run(true) != 0)
+      /* Run messages, we can accept 0 (no message) if we didn't
+         do a WaitFd above.. Otherwise the FD is closed. */
+      int Result = Run(true);
+      if (Result != -1 && (Result != 0 || Queue == 0))
         return 100;
 
       if (Queue == 0)
@@ -1016,7 +1023,7 @@ int HttpMethod::Loop()
 
            if (FailCounter >= 2)
            {
-              Fail("Connection timed out",true);
+              Fail("Connection failed",true);
               FailCounter = 0;
            }