Been messing with another client (dcgui) and perhaps the most irritating thing is that dc++ clients won't grant a mini slot for filelists even though it works the other way round.
Noticed in the changelog for .304 there's now a MiniSlot attribute for $Supports to get round this. Can someone outline what I need to add to get this functioning? I've tried adding it to the $supports string but that does't seem to make any difference.
Is there really any need to check the client version or $supports string btw? Why not just open a slot whenever a file list is requested?
TIA
MiniSlot
Moderator: Moderators
-
GargoyleMT
- DC++ Contributor
- Posts: 3212
- Joined: 2003-01-08 02:46
- Location: .pa.us
Here's a little bit more from the source zip:
That should explain the reason DC++ has traditionally acted the way you describe. Adding MiniSlots to your supports with a recent DC++ should get you to this code:
which is UploadManager::prepareFile. If you have VS.NET, feel free to compile and set a breakpoint there to do some additional debugging to see if DC++ is at fault.
extensions.txt wrote:--------------------------------------------------------------------
Feature: MiniSlots
Usage: This allows the other client to use a free slot for small files /
file list. $Supports is needed because nmdc closes the file list browser
when the connection is broken, which it becomes when the client on the
other side tries to download its first file and fails because it has no
real slot (there were lots of nmdc users bitching about this...).
--------------------------------------------------------------------
That should explain the reason DC++ has traditionally acted the way you describe. Adding MiniSlots to your supports with a recent DC++ should get you to this code:
Code: Select all
if( ((getLastAutoGrant() + 30*1000) > GET_TICK()) || (SETTING(MIN_UPLOAD_SPEED) == 0) || ( (SETTING(MIN_UPLOAD_SPEED)*1024) < UploadManager::getInstance()->getAverageSpeed() ) ) {
if( !(smallfile || userlist) ||
!(aSource->isSet(UserConnection::FLAG_HASEXTRASLOT) || (getFreeExtraSlots() > 0) || (aSource->getUser()->isSet(User::OP)) ) ||
!(aSource->getUser()->isSet(User::DCPLUSPLUS) || aSource->isSet(UserConnection::FLAG_SUPPORTS_MINISLOTS))
)
{
cs.leave();
aSource->maxedOut();
removeConnection(aSource);
return false;
}
}which is UploadManager::prepareFile. If you have VS.NET, feel free to compile and set a breakpoint there to do some additional debugging to see if DC++ is at fault.
Who is online
Users browsing this forum: Google [Bot] and 0 guests