summaryrefslogtreecommitdiff
path: root/src/RequestGroup.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/RequestGroup.cc')
-rw-r--r--src/RequestGroup.cc8
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(),