diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2011-12-19 14:22:05 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2011-12-19 14:22:05 +0100 |
commit | 2f67d29b0c3de8618983055e811e70ee36662f4a (patch) | |
tree | 7ab0646d51474b4f3c16c8a984f2f1edd43528d8 /methods/http.cc | |
parent | 27da8141d21cfbfc29675510737ee05bdfd4a2b1 (diff) | |
parent | 29966fd1cc2bab68777e85b9070dba7821a58d36 (diff) |
merged from lp:~donkult/apt/experimental
Diffstat (limited to 'methods/http.cc')
-rw-r--r-- | methods/http.cc | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/methods/http.cc b/methods/http.cc index 0d81c73ed..b8ed43cd2 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -1007,31 +1007,21 @@ HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv) FailFile.c_str(); // Make sure we dont do a malloc in the signal handler FailFd = File->Fd(); FailTime = Srv->Date; - - // Set the expected size - if (Srv->StartPos >= 0) - { - Res.ResumePoint = Srv->StartPos; - if (ftruncate(File->Fd(),Srv->StartPos) < 0) - _error->Errno("ftruncate", _("Failed to truncate file")); - } - - // Set the start point - lseek(File->Fd(),0,SEEK_END); delete Srv->In.Hash; Srv->In.Hash = new Hashes; - - // Fill the Hash if the file is non-empty (resume) - if (Srv->StartPos > 0) + + // Set the expected size and read file for the hashes + if (Srv->StartPos >= 0) { - lseek(File->Fd(),0,SEEK_SET); - if (Srv->In.Hash->AddFD(File->Fd(),Srv->StartPos) == false) + Res.ResumePoint = Srv->StartPos; + File->Truncate(Srv->StartPos); + + if (Srv->In.Hash->AddFD(*File,Srv->StartPos) == false) { _error->Errno("read",_("Problem hashing file")); return ERROR_NOT_FROM_SERVER; } - lseek(File->Fd(),0,SEEK_END); } SetNonBlock(File->Fd(),true); |