diff --git a/TODO b/TODO
index 4a7641bd5..a1de1a426 100644
--- a/TODO
+++ b/TODO
@@ -67,3 +67,4 @@ rc8->rc9 changelog:
- BUGFIX: Fixed HTTP_PW and SOCKS5_PW in proxy combobox
- BUGFIX: Fixed proxy auth disable problem when disabling proxy
- BUGFIX: Fixed proxy layout in program preferences
+- BUGFIX: Fixed everlasting libtorrent session destruction on exit
diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp
index 939e06cff..7d84e02d8 100644
--- a/src/bittorrent.cpp
+++ b/src/bittorrent.cpp
@@ -43,7 +43,7 @@
#define MAX_TRACKER_ERRORS 2
// Main constructor
-bittorrent::bittorrent() : timerScan(0), DHTEnabled(false), preAllocateAll(false), addInPause(false), maxConnecsPerTorrent(500), maxUploadsPerTorrent(4), max_ratio(-1) {
+bittorrent::bittorrent() : timerScan(0), DHTEnabled(false), preAllocateAll(false), addInPause(false), maxConnecsPerTorrent(500), maxUploadsPerTorrent(4), max_ratio(-1), UPnPEnabled(false), NATPMPEnabled(false), LSDEnabled(false) {
// To avoid some exceptions
fs::path::default_name_check(fs::no_check);
// Creating bittorrent session
@@ -631,25 +631,49 @@ bool bittorrent::isDHTEnabled() const{
void bittorrent::enableUPnP(bool b) {
if(b) {
- s->start_upnp();
+ if(!UPnPEnabled) {
+ qDebug("Enabling UPnP");
+ s->start_upnp();
+ UPnPEnabled = true;
+ }
} else {
- s->stop_upnp();
+ if(UPnPEnabled) {
+ qDebug("Disabling UPnP");
+ s->stop_upnp();
+ UPnPEnabled = false;
+ }
}
}
void bittorrent::enableNATPMP(bool b) {
if(b) {
- s->start_natpmp();
+ if(!NATPMPEnabled) {
+ qDebug("Enabling NAT-PMP");
+ s->start_natpmp();
+ NATPMPEnabled = true;
+ }
} else {
- s->stop_natpmp();
+ if(NATPMPEnabled) {
+ qDebug("Disabling NAT-PMP");
+ s->stop_natpmp();
+ NATPMPEnabled = false;
+ }
}
}
void bittorrent::enableLSD(bool b) {
if(b) {
- s->start_lsd();
+ if(!LSDEnabled) {
+ qDebug("Enabling LSD");
+ s->start_lsd();
+ LSDEnabled = true;
+ }
} else {
- s->stop_lsd();
+ if(LSDEnabled) {
+ qDebug("Disabling LSD");
+ s->stop_lsd();
+ LSDEnabled = false;
+ }
}
}
diff --git a/src/bittorrent.h b/src/bittorrent.h
index d534bc896..9b0060424 100644
--- a/src/bittorrent.h
+++ b/src/bittorrent.h
@@ -62,6 +62,9 @@ class bittorrent : public QObject{
int maxConnecsPerTorrent;
int maxUploadsPerTorrent;
float max_ratio;
+ bool UPnPEnabled;
+ bool NATPMPEnabled;
+ bool LSDEnabled;
protected:
QString getSavePath(QString hash);
diff --git a/src/downloadingTorrents.cpp b/src/downloadingTorrents.cpp
index e333e9b83..0eabc9979 100644
--- a/src/downloadingTorrents.cpp
+++ b/src/downloadingTorrents.cpp
@@ -190,7 +190,6 @@ void DownloadingTorrents::setInfoBar(QString info, QColor color) {
infoBar->clear();
nbLines = 1;
}
- qDebug("Color is %s", color.name().toUtf8().data());
infoBar->append(QString::fromUtf8("")+ QTime::currentTime().toString(QString::fromUtf8("hh:mm:ss")) + QString::fromUtf8(" - ") + info + QString::fromUtf8(""));
}