summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-05-15 22:50:51 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-05-15 22:50:51 +0900
commitfc0982587bc78648c918ae83deacca3e90d7e809 (patch)
tree7c69f686e40f5925e17fc15e05a218f207c7bcbf /src
parentcef6db17ba08f40f39b879a9e1a7b71af1374df4 (diff)
Release elements in routineCommands_ on destruction
Diffstat (limited to 'src')
-rw-r--r--src/DownloadEngine.cc15
-rw-r--r--src/DownloadEngine.h2
2 files changed, 9 insertions, 8 deletions
diff --git a/src/DownloadEngine.cc b/src/DownloadEngine.cc
index 71607ca0..18aa963b 100644
--- a/src/DownloadEngine.cc
+++ b/src/DownloadEngine.cc
@@ -107,18 +107,21 @@ DownloadEngine::DownloadEngine(const SharedHandle<EventPoll>& eventPoll)
sessionId_.assign(&sessionId[0], & sessionId[sizeof(sessionId)]);
}
+namespace {
+void cleanQueue(std::deque<Command*>& commands) {
+ std::for_each(commands.begin(), commands.end(), Deleter());
+ commands.clear();
+}
+} // namespace
+
DownloadEngine::~DownloadEngine() {
- cleanQueue();
+ cleanQueue(commands_);
+ cleanQueue(routineCommands_);
#ifdef HAVE_ARES_ADDR_NODE
setAsyncDNSServers(0);
#endif // HAVE_ARES_ADDR_NODE
}
-void DownloadEngine::cleanQueue() {
- std::for_each(commands_.begin(), commands_.end(), Deleter());
- commands_.clear();
-}
-
namespace {
void executeCommand(std::deque<Command*>& commands,
Command::STATUS statusFilter)
diff --git a/src/DownloadEngine.h b/src/DownloadEngine.h
index afe51307..b26d3dda 100644
--- a/src/DownloadEngine.h
+++ b/src/DownloadEngine.h
@@ -183,8 +183,6 @@ public:
// processed. Otherwise, returns 0.
int run(bool oneshot=false);
- void cleanQueue();
-
bool addSocketForReadCheck(const SharedHandle<SocketCore>& socket,
Command* command);
bool deleteSocketForReadCheck(const SharedHandle<SocketCore>& socket,