|
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.
|