diff options
-rw-r--r-- | methods/ftp.cc | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/methods/ftp.cc b/methods/ftp.cc index b14e7dc46..ace70cc79 100644 --- a/methods/ftp.cc +++ b/methods/ftp.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: ftp.cc,v 1.2 1999/03/15 07:20:41 jgg Exp $ +// $Id: ftp.cc,v 1.3 1999/03/15 08:10:26 jgg Exp $ /* ###################################################################### HTTP Aquire Method - This is the FTP aquire method for APT. @@ -212,17 +212,10 @@ bool FTPConn::Login() return _error->Error("PASS failed, server said: %s",Msg.c_str()); // Enter passive mode - TryPassive = false; - if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true && - _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true) == true) - { - TryPassive = true; - } + if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true) + TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true); else - { - if (_config->FindB("Acquire::FTP::Passive",true) == true) - TryPassive = true; - } + TryPassive = _config->FindB("Acquire::FTP::Passive",true); } else { @@ -250,7 +243,7 @@ bool FTPConn::Login() if (ServerName.Port != 0) sprintf(SitePort,"%u",ServerName.Port); else - strcat("21",SitePort); + strcpy(SitePort,"21"); string Tmp = Opts->Value; Tmp = SubstVar(Tmp,"$(PROXY_USER)",Proxy.User); Tmp = SubstVar(Tmp,"$(PROXY_PASS)",Proxy.Password); @@ -268,19 +261,14 @@ bool FTPConn::Login() // Enter passive mode TryPassive = false; - if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true && - _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true) == true) - { - TryPassive = true; - } + if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true) + TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true); else { - if (_config->Exists("Acquire::FTP::Proxy::Passive") == true && - _config->FindB("Acquire::FTP::Proxy::Passive",true) == true) - TryPassive = true; + if (_config->Exists("Acquire::FTP::Proxy::Passive") == true) + TryPassive = _config->FindB("Acquire::FTP::Proxy::Passive",true); else - if (_config->FindB("Acquire::FTP::Passive",true) == true) - TryPassive = true; + TryPassive = _config->FindB("Acquire::FTP::Passive",true); } } @@ -698,6 +686,18 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume, if (To.Truncate(Resume) == false) return false; + + if (To.Seek(0) == false) + return false; + + if (Resume != 0) + { + if (MD5.AddFD(To.Fd(),Resume) == false) + { + _error->Errno("read","Problem hashing file"); + return false; + } + } // Send the get command if (WriteMsg(Tag,Msg,"RETR %s",Path) == false) @@ -732,7 +732,8 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume, continue; break; } - + + MD5.Add(Buffer,Res); if (To.Write(Buffer,Res) == false) return false; } @@ -795,7 +796,7 @@ bool FtpMethod::Configuration(string Message) /*}}}*/ // FtpMethod::Fetch - Fetch a file /*{{{*/ // --------------------------------------------------------------------- -/* */ +/* Fetch a single file, called by the base class.. */ bool FtpMethod::Fetch(FetchItem *Itm) { URI Get = Itm->Uri; @@ -850,7 +851,7 @@ bool FtpMethod::Fetch(FetchItem *Itm) } // Resume? - if (FailTime == Buf.st_mtime && Size < (unsigned)Buf.st_size) + if (FailTime == Buf.st_mtime && Size > (unsigned)Buf.st_size) Res.ResumePoint = Buf.st_size; } |