MiniSlot

Problems compiling? Don't understand the source code? Don't know how to code your feature? Post here.

Moderator: Moderators

blobby
Posts: 3
Joined: 2003-11-29 15:30

MiniSlot

Post by blobby » 2003-11-30 11:56

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

GargoyleMT
DC++ Contributor
Posts: 3212
Joined: 2003-01-08 02:46
Location: .pa.us

Post by GargoyleMT » 2003-12-02 17:53

Here's a little bit more from the source zip:

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.

blobby
Posts: 3
Joined: 2003-11-29 15:30

Post by blobby » 2003-12-04 11:53

Thanks, will give this a go

Who is online

Users browsing this forum: Google [Bot] and 0 guests