linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #02970
[Bug 602290] Re: UCMD from File>Open Own List is sent to first hub, not correct hub
Fixed in DC++ 0.780.
** Changed in: dcplusplus
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to DC++.
https://bugs.launchpad.net/bugs/602290
Title:
UCMD from File>Open Own List is sent to first hub, not correct hub
Status in DC++:
Fix Released
Bug description:
A user command of type CT8 shows up in the context menu on files when
you select File>Open Own List. However, when this command is selected,
there is no guarantee the message will be sent to the hub from which
the UCMD originated. If you are connected to multiple hubs, then the
one which appears first in the title of the directory listing window
is the one to which the UCMD will be sent.
This has been tested by using Wireshark. To reproduce, open two or
more hubs, one of which sends a UCMD of type CT8. Then, open your file
list and select the user command. Close the file list and all hubs,
then reopen the hubs in a different order, reopen your file list, and
select the user command again.
I believe you can tell this is going to happen most easily when you
have a different user name per hub. If you open your file list the
root of your directory tree is your user name on the first hub.
The DirectoryListing Frame was created with the user set to HintedUser(ClientManager::getInstance()->getMe(), Util::emptyString) i.e. no URL is set. ClientManager::userCommand() uses this hint to call ClientManager::findOnlineUser(), which in turn tries ClientManager::findOnlineUser_hint(). The hintUrl is empty, so down at the end of ClientManager::findOnlineUser() the result is:
// ok, hub not private, return a random user that matches the given CID but not the hint.
return p.first->second;
Thus, the 'random' user is simply the user identity on the first hub to which the user connected.
References