]> git.saurik.com Git - apt.git/blobdiff - methods/ftp.cc
Send "Fail-Reason: MaximumSizeExceeded" from the method
[apt.git] / methods / ftp.cc
index bc84dda7dbf919f0b0464ebfad22d6f24e94c477..5b739ea06f5ea292aa5f922bed2860a9f3b9a1d8 100644 (file)
@@ -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();