From 2168d5a30e69c19e069860ef2ac55f4f3c837bed Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Wed, 30 Dec 2009 15:52:20 +0000 Subject: [PATCH] - qBittorrent no longer listens on a random port whenever it receives a listen_failed_alert (because it may correspond to another network interface) - Display a "disconnected" icon in status bar whenever qBittorrent fails to listen on the selected port --- src/Icons/skin/disconnected.png | Bin 0 -> 1474 bytes src/bittorrent.cpp | 12 ------------ src/icons.qrc | 1 + src/statusbar.h | 19 ++++++++++++------- 4 files changed, 13 insertions(+), 19 deletions(-) create mode 100755 src/Icons/skin/disconnected.png diff --git a/src/Icons/skin/disconnected.png b/src/Icons/skin/disconnected.png new file mode 100755 index 0000000000000000000000000000000000000000..3263c8323d835837a0ce35165e453aa6773a8468 GIT binary patch literal 1474 zcmV;z1wHzSP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXiB z4=pbYbP8br00lxxL_t(I%Vm^LY*g13#((GDH{*F@112OvXly|d#H3C@De?jZM+y=o zkrG7;kqSs`A|+jB#g^gvZMHJ|>FLa#>XM8Q=gS`+?oSRsj_509AprsyZsF zb%|qr)cZs^-v>Z_f1UdN30E#pYq_jiDyb_LRSN~xLP1?ehpO+Zc6F)i>Y8@Ge?onK z9e|e0t91*s=v)c?Dj00eXAe9n;fr^(uV(E!?|@MiDr70q1^W zqUiD?E_s|3k-vzw{ZuN-`|k_SJqNxIs%-#>fHBZ&!L3{H`RB^ajF4ql)w#o_)w-il{=K!~Og4@y8GZu)KUhoqNMXQPXO< zEWq#8+Fy%^wqAc-TD`p_4NAKO5oODPd{_sOI&!1G-7#<7{Q=XkgvkXa7+{KH?_U(x0iK>EgN2FN% zlK~EhF%_(Zjt-L9SsWnN5~nHi3ky690>oN!RhC;V2t%?)gM}cV@%G!?&NA|15%D~* zwt~n3gUEi20c)XHB)WMM1%`%(xO?|5b8~Y{Pfs&6G(?`~+?tx=_76WWw`mjEtFIE= zzfY-J#ri&2i?lV_?*Y421hEzh1(p{UNPtG8!PwXsr%s)sudk0?yLPeEY_jRd5o~8C zS)P+QhwR+Rk8^YM^z^{@-$RDa8y&^}=p#(6w$+m-C8D{w$kC%m$+8R)K~*_)=nzX`$olbd z2J3ZP6cL6Y{|rO^)!E77jT`KL?>*wPXW4N2G@im8RQu&;lM)00h2>?UC?ZJ`thID? zb&)worMsJLst|@yEb>chS!y=9Sgo@7&O1oC%u}j&3{aJ}O(4(FJSRz0hKGk)TwJ79 zt5L7l866!ZO;fTshB$^ag)E~Z&*@&fmi2r0l1CA($w`2!SxKq(6|Eo$0zA*7R;zLD z+&L~?x&%NFhU6>68pn_%LW@+2E4ClS@No~n+Db2Bc>DkjTd#Ss9T zH*cm=sbGwuTCLJ(G}sUX5Qa#ak{iSIfdTx32f2La3>#0LWMh)d0HdC$*2(iP)R<$M zrkXn^|DKqjB*K|*zFFP7=Xum8CfKvE&_0k-iR%Lcn1ctI7#qWU@`=8*v?Rv4FI*Vb zS3^jR8A+_&^P@5RR4QRQI-pPh&ue2Ph}Hpp-QE0m?_RnNALc(_e@*$b&ln5>*5>&I zNz*qZj+-8UL{U?H{{w+9pHl7L6h+#Z=OU%j&rxaZYJA?=vITkbO|FcLU_bp-f7NP< zuX;tY>;sA8CV*W@`;OmbnQnlaeIhR|Irr>BmXW0?k|dZk#l$g05s5KeeC;*7?rt6& zKh8@_OH%CWx;CAySYozAk`Ta8)ot3DfNnHOXk%_LzV zO=-k2Gr+B#J9&O!fSzsJv@tl?{9~H__4wG>wGLxkk|a@{=a~f@5Cac^#d&yeI?w+% zmgm=JpfszxCQvO{RS8tNmL&Q4S}ne^xR}naSrh#2yYKFO`PEl{aA|tAQmM@D*s)`2 cYHBL~KZ6wV+>b^(iU0rr07*qoM6N<$f)+TtK>z>% literal 0 HcmV?d00001 diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp index c32d9d3dd..3d6e95f9f 100644 --- a/src/bittorrent.cpp +++ b/src/bittorrent.cpp @@ -1705,18 +1705,6 @@ void Bittorrent::readAlerts() { } } #endif - else if (listen_failed_alert* p = dynamic_cast(a.get())) { - // Level: fatal - int tried_port = p->endpoint.port(); - srand(time(0)); - int fallback_port = tried_port; - do { - fallback_port = rand() % 64512 + 1024; - } while(fallback_port == tried_port); - addConsoleMessage(tr("Couldn't listen on port %1, using %2 instead.").arg(QString::number(tried_port)).arg(QString::number(fallback_port)), QString::fromUtf8("red")); - setListeningPort(fallback_port); - //emit portListeningFailure(); - } /*else if (torrent_paused_alert* p = dynamic_cast(a.get())) { QTorrentHandle h(p->handle); qDebug("Received a torrent_paused_alert for %s", h.hash().toLocal8Bit().data()); diff --git a/src/icons.qrc b/src/icons.qrc index 820256380..c4ebd12bf 100644 --- a/src/icons.qrc +++ b/src/icons.qrc @@ -60,6 +60,7 @@ Icons/skin/exit.png Icons/skin/delete_all.png Icons/skin/splash.png + Icons/skin/disconnected.png Icons/skin/decrease.png Icons/skin/uploading.png Icons/skin/filterall.png diff --git a/src/statusbar.h b/src/statusbar.h index 0eaf2b713..006a8f11f 100644 --- a/src/statusbar.h +++ b/src/statusbar.h @@ -142,13 +142,18 @@ public slots: void refreshStatusBar() { // Update connection status session_status sessionStatus = BTSession->getSessionStatus(); - if(sessionStatus.has_incoming_connections) { - // Connection OK - connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/connected.png"))); - connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection Status:")+QString::fromUtf8("
")+tr("Online")); - }else{ - connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png"))); - connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection status:")+QString::fromUtf8("
")+QString::fromUtf8("")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("")); + if(!BTSession->getSession()->is_listening()) { + connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/disconnected.png"))); + connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection Status:")+QString::fromUtf8("
")+tr("Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections.")); + } else { + if(sessionStatus.has_incoming_connections) { + // Connection OK + connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/connected.png"))); + connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection Status:")+QString::fromUtf8("
")+tr("Online")); + }else{ + connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png"))); + connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection status:")+QString::fromUtf8("
")+QString::fromUtf8("")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("")); + } } // Update Number of DHT nodes if(BTSession->isDHTEnabled()) {