corrected bug in file completion

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2301 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2010-02-13 20:42:49 +00:00
parent 5e9e342bc9
commit 5926c79822
2 changed files with 12 additions and 3 deletions

View File

@ -351,12 +351,14 @@ uint32_t ChunkMap::getAvailableChunk(uint32_t start_location,const std::string&
{ {
uint32_t j = (start_location+i)%(int)_map.size() ; // index of the chunk uint32_t j = (start_location+i)%(int)_map.size() ; // index of the chunk
if(_map[j] != FileChunksInfo::CHUNK_DONE)
file_is_complete = false ;
if(_map[j] == FileChunksInfo::CHUNK_OUTSTANDING && (peer_chunks->is_full || peer_chunks->cmap[j])) if(_map[j] == FileChunksInfo::CHUNK_OUTSTANDING && (peer_chunks->is_full || peer_chunks->cmap[j]))
{ {
#ifdef DEBUG_FTCHUNK #ifdef DEBUG_FTCHUNK
std::cerr << "ChunkMap::getAvailableChunk: returning chunk " << j << " for peer " << peer_id << std::endl; std::cerr << "ChunkMap::getAvailableChunk: returning chunk " << j << " for peer " << peer_id << std::endl;
#endif #endif
file_is_complete = false ;
return j ; return j ;
} }
} }

View File

@ -1560,10 +1560,17 @@ std::list<RsItem *> ftController::saveList(bool &cleanup)
rft->file.path = RsDirUtil::removeTopDir(fit->second.mDestination); /* remove fname */ rft->file.path = RsDirUtil::removeTopDir(fit->second.mDestination); /* remove fname */
rft->flags = fit->second.mFlags; rft->flags = fit->second.mFlags;
rft->state = fit->second.mState; rft->state = fit->second.mState;
rft->transferred = fit->second.mCreator->getRecvd();
fit->second.mTransfer->getFileSources(rft->allPeerIds.ids); fit->second.mTransfer->getFileSources(rft->allPeerIds.ids);
// just avoid uninitialised memory reads
rft->in = 0 ;
rft->cPeerId = "" ;
rft->transferred = fit->second.mCreator->getRecvd();
rft->crate = 0 ;
rft->lrate = 0 ;
rft->trate = 0 ;
rft->ltransfer = 0 ;
// Remove turtle peers from sources, as they are not supposed to survive a reboot of RS, since they are dynamic sources. // Remove turtle peers from sources, as they are not supposed to survive a reboot of RS, since they are dynamic sources.
// Otherwize, such sources are unknown from the turtle router, at restart, and never get removed. // Otherwize, such sources are unknown from the turtle router, at restart, and never get removed.
// //