# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: poy@123gen.com-20100525174245-338ihtuv3ksomai7 # target_branch: bzr+ssh://poy@bazaar.launchpad.net/%7Edcplusplus-\ # team/dcplusplus/trunk/ # testament_sha1: 3aa553466b103225fb517b19a185f2aadf4ae5a0 # timestamp: 2010-05-25 19:43:25 +0200 # base_revision_id: emtee11@gmail.com-20100523200642-eb606h2gfwkuonnc # # Begin patch === modified file 'dcpp/Download.cpp' --- dcpp/Download.cpp 2010-02-11 21:44:13 +0000 +++ dcpp/Download.cpp 2010-05-25 17:42:45 +0000 @@ -93,4 +93,13 @@ params["sfv"] = Util::toString(isSet(Download::FLAG_CRC32_OK) ? 1 : 0); } +void Download::flush() { + try { + getFile()->flush(); + } catch(const Exception& e) { + resetPos(); + throw e; + } +} + } // namespace dcpp === modified file 'dcpp/Download.h' --- dcpp/Download.h 2008-08-14 21:28:47 +0000 +++ dcpp/Download.h 2010-05-25 17:42:45 +0000 @@ -46,13 +46,13 @@ /** @internal */ AdcCommand getCommand(bool zlib); + void flush(); + GETSET(string, tempTarget, TempTarget); GETSET(OutputStream*, file, File); GETSET(bool, treeValid, TreeValid); + private: - Download(const Download&); - Download& operator=(const Download&); - TigerTree tt; string pfs; }; === modified file 'dcpp/DownloadManager.cpp' --- dcpp/DownloadManager.cpp 2010-04-23 18:40:39 +0000 +++ dcpp/DownloadManager.cpp 2010-05-25 17:42:45 +0000 @@ -299,9 +299,10 @@ Download* d = aSource->getDownload(); dcassert(d != NULL); + // First, finish writing the file (flushing the buffers and closing the file...) + d->flush(); + if(d->getType() == Transfer::TYPE_TREE) { - d->getFile()->flush(); - int64_t bl = 1024; while(bl * (int64_t)d->getTigerTree().getLeaves().size() < d->getTigerTree().getFileSize()) bl *= 2; @@ -321,16 +322,8 @@ return; } d->setTreeValid(true); + } else { - // First, finish writing the file (flushing the buffers and closing the file...) - try { - d->getFile()->flush(); - } catch(const FileException& e) { - d->resetPos(); - failDownload(aSource, e.getError()); - return; - } - aSource->setSpeed(d->getAverageSpeed()); aSource->updateChunkSize(d->getTigerTree().getBlockSize(), d->getSize(), GET_TICK() - d->getStart()); @@ -461,8 +454,9 @@ if(d->getFile()) { if(d->getActual() > 0) { try { - d->getFile()->flush(); + d->flush(); } catch(const Exception&) { + // the download is already being removed anyway, so ignore exceptions at this point } } } === modified file 'dcpp/DownloadManager.h' --- dcpp/DownloadManager.h 2010-02-11 21:44:13 +0000 +++ dcpp/DownloadManager.h 2010-05-25 17:42:45 +0000 @@ -71,7 +71,6 @@ void logDownload(UserConnection* aSource, Download* d); uint32_t calcCrc32(const string& file) throw(FileException); bool checkSfv(UserConnection* aSource, Download* d); - int64_t getResumePos(const string& file, const TigerTree& tt, int64_t startPos); void failDownload(UserConnection* aSource, const string& reason); # Begin bundle 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 UJDm6h59