summaryrefslogtreecommitdiff
path: root/methods/ftp.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@ubuntu.com>2014-10-07 22:36:09 +0200
committerMichael Vogt <mvo@ubuntu.com>2014-10-07 22:36:09 +0200
commitee27950632c149bb14c9c490e92147579ba4fc2a (patch)
tree2ad71178166534b7ebfd2813e7376139e1ec0de6 /methods/ftp.cc
parent27e6c17a18216e2a02de39a6d1722b83ac823d42 (diff)
downloadapt-ee27950632c149bb14c9c490e92147579ba4fc2a.tar.gz
Send "Fail-Reason: MaximumSizeExceeded" from the method
Communicate the fail reason from the methods to the parent and Rename() failed files.
Diffstat (limited to 'methods/ftp.cc')
-rw-r--r--methods/ftp.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/methods/ftp.cc b/methods/ftp.cc
index bc84dda7d..5b739ea06 100644
--- a/methods/ftp.cc
+++ b/methods/ftp.cc
@@ -849,7 +849,8 @@ bool FTPConn::Finalize()
/* This opens a data connection, sends REST and RETR and then
transfers the file over. */
bool FTPConn::Get(const char *Path,FileFd &To,unsigned long long Resume,
- Hashes &Hash,bool &Missing, unsigned long long MaximumSize)
+ Hashes &Hash,bool &Missing, unsigned long long MaximumSize,
+ pkgAcqMethod *Owner)
{
Missing = false;
if (CreateDataFd() == false)
@@ -925,8 +926,11 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long long Resume,
}
if (MaximumSize > 0 && To.Tell() > MaximumSize)
+ {
+ Owner->SetFailReason("MaximumSizeExceeded");
return _error->Error("Writing more data than expected (%llu > %llu)",
To.Tell(), MaximumSize);
+ }
}
// All done
@@ -1067,7 +1071,7 @@ bool FtpMethod::Fetch(FetchItem *Itm)
FailFd = Fd.Fd();
bool Missing;
- if (Server->Get(File,Fd,Res.ResumePoint,Hash,Missing,Itm->MaximumSize) == false)
+ if (Server->Get(File,Fd,Res.ResumePoint,Hash,Missing,Itm->MaximumSize,this) == false)
{
Fd.Close();