From: <arn...@us...> - 2008-03-29 06:26:33
|
Revision: 1074 http://dcplusplus.svn.sourceforge.net/dcplusplus/?rev=1074&view=rev Author: arnetheduck Date: 2008-03-28 23:26:29 -0700 (Fri, 28 Mar 2008) Log Message: ----------- Update DI handling Modified Paths: -------------- dcplusplus/trunk/changelog.txt dcplusplus/trunk/dcpp/AdcHub.cpp dcplusplus/trunk/dcpp/AdcHub.h dcplusplus/trunk/dcpp/ClientManager.cpp dcplusplus/trunk/dcpp/ClientManager.h dcplusplus/trunk/dcpp/ConnectionManager.cpp dcplusplus/trunk/dcpp/ConnectionManager.h Property Changed: ---------------- dcplusplus/trunk/ Property changes on: dcplusplus/trunk ___________________________________________________________________ Name: bzr:revision-info - timestamp: 2008-03-26 22:32:57.963999987 +0100 committer: Jacek Sieka <arn...@gm...> properties: branch-nick: dcplusplus + timestamp: 2008-03-26 22:43:13.706000090 +0100 committer: Jacek Sieka <arn...@gm...> properties: branch-nick: dcplusplus Name: bzr:file-ids - smartwin/include/smartwin/widgets/Button.h 844@f586c4b0-9d0d-0410-bc51-f1fe239209fc:dcplusplus%2Ftrunk:smartwin%2Finclude%2Fsmartwin%2Faspects%2FAspectButton.h smartwin/source/widgets/Button.cpp 800@f586c4b0-9d0d-0410-bc51-f1fe239209fc:dcplusplus%2Ftrunk:smartwin%2Fsource%2Fwidgets%2FWidgetButton.cpp + Name: bzr:revision-id:v3-trunk1 - 1027 arn...@gm...-20080323183926-schknwnkgeo7ivdn 1028 zouzou123gen-20080323220411-r8usuc3qxwuh7zsn 1029 zouzou123gen-20080323221249-0su72zaj13e706mk 1030 arn...@gm...-20080324140623-muba1dl46m000o8c 1031 zouzou123gen-20080324141933-qbgr93ugpe0297m6 1032 arn...@gm...-20080324153706-siidja05n84i00b1 1033 arn...@gm...-20080324153823-lhn3awurnu77riln 1034 arn...@gm...-20080324165650-zapppziji67yf5a2 1035 zouzou123gen-20080324175936-4mqc2kh0lo5wtdu2 1036 zouzou123gen-20080325004602-6wdsoym95mjuhwd3 1037 arn...@gm...-20080325100659-8fqy6q65itmghlep 1038 zouzou123gen-20080325175216-s297sdiucukfvijh 1039 arn...@gm...-20080325210137-3dfqyoi8ykosy087 1040 arn...@gm...-20080325211747-nwwy1eb33r071sca 1041 arn...@gm...-20080326084110-qbselrjckku275xi 1042 zouzou123gen-20080326123631-35642mgbk2i4ty32 1043 zouzou123gen-20080326124345-f4xwn2d3ty8ubd6r 1044 arn...@gm...-20080326162031-il0nyms30w0mky43 1045 arn...@gm...-20080326164801-8dru8mjc06xgzjpv 1046 arn...@gm...-20080326170438-uzl2rx8fqnohak7g 1047 zouzou123gen-20080326172821-d6uqcbmfb0c6rwlv 1048 arn...@gm...-20080326213257-qlgdh7m2712p2l0q + 1027 arn...@gm...-20080323183926-schknwnkgeo7ivdn 1028 zouzou123gen-20080323220411-r8usuc3qxwuh7zsn 1029 zouzou123gen-20080323221249-0su72zaj13e706mk 1030 arn...@gm...-20080324140623-muba1dl46m000o8c 1031 zouzou123gen-20080324141933-qbgr93ugpe0297m6 1032 arn...@gm...-20080324153706-siidja05n84i00b1 1033 arn...@gm...-20080324153823-lhn3awurnu77riln 1034 arn...@gm...-20080324165650-zapppziji67yf5a2 1035 zouzou123gen-20080324175936-4mqc2kh0lo5wtdu2 1036 zouzou123gen-20080325004602-6wdsoym95mjuhwd3 1037 arn...@gm...-20080325100659-8fqy6q65itmghlep 1038 zouzou123gen-20080325175216-s297sdiucukfvijh 1039 arn...@gm...-20080325210137-3dfqyoi8ykosy087 1040 arn...@gm...-20080325211747-nwwy1eb33r071sca 1041 arn...@gm...-20080326084110-qbselrjckku275xi 1042 zouzou123gen-20080326123631-35642mgbk2i4ty32 1043 zouzou123gen-20080326124345-f4xwn2d3ty8ubd6r 1044 arn...@gm...-20080326162031-il0nyms30w0mky43 1045 arn...@gm...-20080326164801-8dru8mjc06xgzjpv 1046 arn...@gm...-20080326170438-uzl2rx8fqnohak7g 1047 zouzou123gen-20080326172821-d6uqcbmfb0c6rwlv 1048 arn...@gm...-20080326213257-qlgdh7m2712p2l0q 1049 arn...@gm...-20080326214313-ktnoekgk3s0wmatz Modified: dcplusplus/trunk/changelog.txt =================================================================== --- dcplusplus/trunk/changelog.txt 2008-03-29 06:25:50 UTC (rev 1073) +++ dcplusplus/trunk/changelog.txt 2008-03-29 06:26:29 UTC (rev 1074) @@ -10,6 +10,7 @@ * Upgraded to bzip2 1.0.5 (thanks mikejj) * Fixed background color of drop-down controls * Fixed selection glitches +* Both up&downloads are disconnected if evil users quit (thanks poy) -- 0.705 2008-03-14 -- * Several patches for better *nix compatibility of the core (thanks steven sheehy et al) Modified: dcplusplus/trunk/dcpp/AdcHub.cpp =================================================================== --- dcplusplus/trunk/dcpp/AdcHub.cpp 2008-03-29 06:25:50 UTC (rev 1073) +++ dcplusplus/trunk/dcpp/AdcHub.cpp 2008-03-29 06:26:29 UTC (rev 1074) @@ -88,7 +88,7 @@ return 0; } -void AdcHub::putUser(const uint32_t aSID) { +void AdcHub::putUser(const uint32_t aSID, bool disconnect) { OnlineUser* ou = 0; { Lock l(cs); @@ -100,7 +100,7 @@ } if(aSID != AdcCommand::HUB_SID) - ClientManager::getInstance()->putOffline(ou); + ClientManager::getInstance()->putOffline(ou, disconnect); fire(ClientListener::UserRemoved(), this, *ou); delete ou; @@ -286,12 +286,8 @@ fire(ClientListener::StatusMessage(), this, tmp, ClientListener::FLAG_IS_SPAM); } - if(c.hasFlag("DI", 1)) { - ConnectionManager::getInstance()->disconnect(victim->getUser(), false); - } + putUser(s, c.getParam("DI", 1, tmp)); - putUser(s); - if(s == sid) { if(c.getParam("TL", 1, tmp)) { if(tmp == "-1") { Modified: dcplusplus/trunk/dcpp/AdcHub.h =================================================================== --- dcplusplus/trunk/dcpp/AdcHub.h 2008-03-29 06:25:50 UTC (rev 1073) +++ dcplusplus/trunk/dcpp/AdcHub.h 2008-03-29 06:26:29 UTC (rev 1074) @@ -89,7 +89,7 @@ OnlineUser& getUser(const uint32_t aSID, const CID& aCID); OnlineUser* findUser(const uint32_t sid) const; OnlineUser* findUser(const CID& cid) const; - void putUser(const uint32_t sid); + void putUser(const uint32_t sid, bool disconnect); void clearUsers(); Modified: dcplusplus/trunk/dcpp/ClientManager.cpp =================================================================== --- dcplusplus/trunk/dcpp/ClientManager.cpp 2008-03-29 06:25:50 UTC (rev 1073) +++ dcplusplus/trunk/dcpp/ClientManager.cpp 2008-03-29 06:26:29 UTC (rev 1074) @@ -23,6 +23,7 @@ #include "ShareManager.h" #include "SearchManager.h" +#include "ConnectionManager.h" #include "CryptoManager.h" #include "FavoriteManager.h" #include "SimpleXML.h" @@ -258,7 +259,7 @@ } } -void ClientManager::putOffline(OnlineUser* ou) throw() { +void ClientManager::putOffline(OnlineUser* ou, bool disconnect) throw() { bool lastUser = false; { Lock l(cs); @@ -275,8 +276,11 @@ } if(lastUser) { - ou->getUser()->unsetFlag(User::ONLINE); - fire(ClientManagerListener::UserDisconnected(), ou->getUser()); + UserPtr& u = ou->getUser(); + u->unsetFlag(User::ONLINE); + if(disconnect) + ConnectionManager::getInstance()->disconnect(u); + fire(ClientManagerListener::UserDisconnected(), u); } } Modified: dcplusplus/trunk/dcpp/ClientManager.h =================================================================== --- dcplusplus/trunk/dcpp/ClientManager.h 2008-03-29 06:25:50 UTC (rev 1073) +++ dcplusplus/trunk/dcpp/ClientManager.h 2008-03-29 06:26:29 UTC (rev 1074) @@ -75,7 +75,7 @@ CID makeCid(const string& nick, const string& hubUrl) const throw(); void putOnline(OnlineUser* ou) throw(); - void putOffline(OnlineUser* ou) throw(); + void putOffline(OnlineUser* ou, bool disconnect = false) throw(); UserPtr& getMe(); Modified: dcplusplus/trunk/dcpp/ConnectionManager.cpp =================================================================== --- dcplusplus/trunk/dcpp/ConnectionManager.cpp 2008-03-29 06:25:50 UTC (rev 1073) +++ dcplusplus/trunk/dcpp/ConnectionManager.cpp 2008-03-29 06:26:29 UTC (rev 1074) @@ -679,6 +679,15 @@ putConnection(aSource); } +void ConnectionManager::disconnect(const UserPtr& aUser) { + Lock l(cs); + for(UserConnectionList::iterator i = userConnections.begin(); i != userConnections.end(); ++i) { + UserConnection* uc = *i; + if(uc->getUser() == aUser) + uc->disconnect(true); + } +} + void ConnectionManager::disconnect(const UserPtr& aUser, int isDownload) { Lock l(cs); for(UserConnectionList::iterator i = userConnections.begin(); i != userConnections.end(); ++i) { Modified: dcplusplus/trunk/dcpp/ConnectionManager.h =================================================================== --- dcplusplus/trunk/dcpp/ConnectionManager.h 2008-03-29 06:25:50 UTC (rev 1073) +++ dcplusplus/trunk/dcpp/ConnectionManager.h 2008-03-29 06:26:29 UTC (rev 1074) @@ -108,6 +108,7 @@ void getDownloadConnection(const UserPtr& aUser); void force(const UserPtr& aUser); + void disconnect(const UserPtr& aUser); // disconnect downloads and uploads void disconnect(const UserPtr& aUser, int isDownload); void shutdown(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |