diff options
Diffstat (limited to 'src/RequestGroup.cc')
| -rw-r--r-- | src/RequestGroup.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index adc50835..d12d1b3f 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -209,6 +209,12 @@ void RequestGroup::createInitialCommand(std::deque<Command*>& commands, throw DownloadFailureException ("Cancel BitTorrent download in dry-run context."); } + SharedHandle<BtRegistry> btRegistry = e->getBtRegistry(); + if(!btRegistry->getBtContext(btContext->getInfoHashAsString()).isNull()) { + throw DownloadFailureException + (StringFormat("InfoHash %s is already registered.", + btContext->getInfoHashAsString().c_str()).str()); + } if(e->_requestGroupMan->isSameFileBeingDownloaded(this)) { throw DownloadFailureException @@ -231,8 +237,6 @@ void RequestGroup::createInitialCommand(std::deque<Command*>& commands, _pieceStorage, _option)); - SharedHandle<BtRegistry> btRegistry = e->getBtRegistry(); - btRegistry->registerBtContext(btContext->getInfoHashAsString(), btContext); btRegistry->registerPieceStorage(btContext->getInfoHashAsString(), |
