Browse Source

- prevent downloadFromUrl flooding

adaptive-webui-19844
Christophe Dumez 17 years ago
parent
commit
c7592a6dc8
  1. 1
      Changelog
  2. 1
      TODO
  3. 13
      src/downloadThread.h

1
Changelog

@ -50,6 +50,7 @@
- BUGFIX: Improved incremental download - BUGFIX: Improved incremental download
- BUGFIX: Improved unicode support - BUGFIX: Improved unicode support
- BUGFIX: Made torrent deletion from hard-drive safer - BUGFIX: Made torrent deletion from hard-drive safer
- BUGFIX: Prevent downloadFromUrl flooding
- COSMETIC: Redesigned torrent properties a little - COSMETIC: Redesigned torrent properties a little
- COSMETIC: Redesigned options a little - COSMETIC: Redesigned options a little
- COSMETIC: Display more logs messages concerning features - COSMETIC: Display more logs messages concerning features

1
TODO

@ -80,3 +80,4 @@ beta5->beta6 changelog:
- BUGFIX: Fixed a bug when switching from finished to downloading list - BUGFIX: Fixed a bug when switching from finished to downloading list
- BUGFIX: Showing checking progress for paused torrents too - BUGFIX: Showing checking progress for paused torrents too
- BUGFIX: Fixed progress column sorting on startup - BUGFIX: Fixed progress column sorting on startup
- BUGFIX: Prevent downloadFromUrl flooding

13
src/downloadThread.h

@ -135,6 +135,7 @@ class downloadThread : public QThread {
private: private:
QStringList url_list; QStringList url_list;
QStringList downloading_list;
QMutex mutex; QMutex mutex;
QWaitCondition condition; QWaitCondition condition;
bool abort; bool abort;
@ -160,7 +161,9 @@ class downloadThread : public QThread {
void downloadUrl(QString url){ void downloadUrl(QString url){
QMutexLocker locker(&mutex); QMutexLocker locker(&mutex);
if(downloading_list.contains(url)) return;
url_list << url; url_list << url;
downloading_list << url;
if(!isRunning()){ if(!isRunning()){
start(); start();
}else{ }else{
@ -195,6 +198,11 @@ class downloadThread : public QThread {
subThreads.removeAt(index); subThreads.removeAt(index);
delete st; delete st;
emit downloadFinished(url, path); emit downloadFinished(url, path);
mutex.lock();
index = downloading_list.indexOf(url);
Q_ASSERT(index != -1);
downloading_list.removeAt(index);
mutex.unlock();
} }
void propagateDownloadFailure(subDownloadThread* st, QString url, QString reason){ void propagateDownloadFailure(subDownloadThread* st, QString url, QString reason){
@ -203,6 +211,11 @@ class downloadThread : public QThread {
subThreads.removeAt(index); subThreads.removeAt(index);
delete st; delete st;
emit downloadFailure(url, reason); emit downloadFailure(url, reason);
mutex.lock();
index = downloading_list.indexOf(url);
Q_ASSERT(index != -1);
downloading_list.removeAt(index);
mutex.unlock();
} }
}; };

Loading…
Cancel
Save