|
@@ -1,6 +1,6 @@
|
|
|
// -*- mode: cpp; mode: fold -*-
|
|
// -*- mode: cpp; mode: fold -*-
|
|
|
// Description /*{{{*/
|
|
// 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.
|
|
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());
|
|
return _error->Error("PASS failed, server said: %s",Msg.c_str());
|
|
|
|
|
|
|
|
// Enter passive mode
|
|
// 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
|
|
else
|
|
|
- {
|
|
|
|
|
- if (_config->FindB("Acquire::FTP::Passive",true) == true)
|
|
|
|
|
- TryPassive = true;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ TryPassive = _config->FindB("Acquire::FTP::Passive",true);
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
@@ -250,7 +243,7 @@ bool FTPConn::Login()
|
|
|
if (ServerName.Port != 0)
|
|
if (ServerName.Port != 0)
|
|
|
sprintf(SitePort,"%u",ServerName.Port);
|
|
sprintf(SitePort,"%u",ServerName.Port);
|
|
|
else
|
|
else
|
|
|
- strcat("21",SitePort);
|
|
|
|
|
|
|
+ strcpy(SitePort,"21");
|
|
|
string Tmp = Opts->Value;
|
|
string Tmp = Opts->Value;
|
|
|
Tmp = SubstVar(Tmp,"$(PROXY_USER)",Proxy.User);
|
|
Tmp = SubstVar(Tmp,"$(PROXY_USER)",Proxy.User);
|
|
|
Tmp = SubstVar(Tmp,"$(PROXY_PASS)",Proxy.Password);
|
|
Tmp = SubstVar(Tmp,"$(PROXY_PASS)",Proxy.Password);
|
|
@@ -268,19 +261,14 @@ bool FTPConn::Login()
|
|
|
|
|
|
|
|
// Enter passive mode
|
|
// Enter passive mode
|
|
|
TryPassive = false;
|
|
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
|
|
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
|
|
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)
|
|
if (To.Truncate(Resume) == false)
|
|
|
return 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
|
|
// Send the get command
|
|
|
if (WriteMsg(Tag,Msg,"RETR %s",Path) == false)
|
|
if (WriteMsg(Tag,Msg,"RETR %s",Path) == false)
|
|
@@ -732,7 +732,8 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume,
|
|
|
continue;
|
|
continue;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ MD5.Add(Buffer,Res);
|
|
|
if (To.Write(Buffer,Res) == false)
|
|
if (To.Write(Buffer,Res) == false)
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
@@ -795,7 +796,7 @@ bool FtpMethod::Configuration(string Message)
|
|
|
/*}}}*/
|
|
/*}}}*/
|
|
|
// FtpMethod::Fetch - Fetch a file /*{{{*/
|
|
// FtpMethod::Fetch - Fetch a file /*{{{*/
|
|
|
// ---------------------------------------------------------------------
|
|
// ---------------------------------------------------------------------
|
|
|
-/* */
|
|
|
|
|
|
|
+/* Fetch a single file, called by the base class.. */
|
|
|
bool FtpMethod::Fetch(FetchItem *Itm)
|
|
bool FtpMethod::Fetch(FetchItem *Itm)
|
|
|
{
|
|
{
|
|
|
URI Get = Itm->Uri;
|
|
URI Get = Itm->Uri;
|
|
@@ -850,7 +851,7 @@ bool FtpMethod::Fetch(FetchItem *Itm)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Resume?
|
|
// 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;
|
|
Res.ResumePoint = Buf.st_size;
|
|
|
}
|
|
}
|
|
|
|
|
|