Sign in to follow this  
Followers 0
Exergy

Slots & Speed indicator

14 posts in this topic

Hi, wasn't really sure where to put this topic, so sorry if its in the wrong place.

Firstly, I run a hub using verlihub, and Apex is causing me some issues. I want my clients to use Apex, hell I even recommend it, but heres my problem:

The Hub does not seem to read how many slots an Apex user has open, and so even though my minimum requirement is 4 slots, they are able to connect with 2?

This wouldnt be an issue, but without it, it allows users to have free reign on the limiter functions in Apex. Im all for them limiting to prevent ADSL line saturation, but not too the extent that they do. You see, if I set the min slots to 4, the upload limiter formula would kick in (4+1x5 = 25 which is fine.)

I understand I could disallow Apex threw tags and theyd still be able to connect with emulation to solve the problem, but my users arent the most inteligent with computers (users from my university).

Is there a known way around this with Verlihub? I appreciate any help on this matter, I really do not want to dissallow apex, its such a great client.

Finally, a big annoyance of mine, and something which again confuses my users, is the apparent inaccuracy of the speed indicators, both on individual downloads /uploads and in the bottom left corner of the status bar (only works in multiples of 32KB/s, so inspecific for my 64KB/s upload!) The download / upload individual speed indicators seem to take an average of too long a period. This then resets after each segment (very frequently I might add), and the averages rises again to like 150KB/s and falls to beneath the actual speed.

My problem is the constant reem of questions I get "Why is my download slowing so much, it was on 150 before!" When it obviously cannot be as my upload is only 60KB/s or so. I have to keep telling them its a false average. I never noticed there problem in DC++ nor peerweb.

Sorry for the long thread, but these issues have really been bugging me, any help you can offer is very much appreciated :D

Share this post


Link to post
Share on other sites

Hi, wasn't really sure where to put this topic, so sorry if its in the wrong place.

Firstly, I run a hub using verlihub, and Apex is causing me some issues. I want my clients to use Apex, hell I even recommend it, but heres my problem:

The Hub does not seem to read how many slots an Apex user has open, and so even though my minimum requirement is 4 slots, they are able to connect with 2?

This wouldnt be an issue, but without it, it allows users to have free reign on the limiter functions in Apex. Im all for them limiting to prevent ADSL line saturation, but not too the extent that they do. You see, if I set the min slots to 4, the upload limiter formula would kick in (4+1x5 = 25 which is fine.)

I understand I could disallow Apex threw tags and theyd still be able to connect with emulation to solve the problem, but my users arent the most inteligent with computers (users from my university).

Is there a known way around this with Verlihub? I appreciate any help on this matter, I really do not want to dissallow apex, its such a great client.

Finally, a big annoyance of mine, and something which again confuses my users, is the apparent inaccuracy of the speed indicators, both on individual downloads /uploads and in the bottom left corner of the status bar (only works in multiples of 32KB/s, so inspecific for my 64KB/s upload!) The download / upload individual speed indicators seem to take an average of too long a period. This then resets after each segment (very frequently I might add), and the averages rises again to like 150KB/s and falls to beneath the actual speed.

My problem is the constant reem of questions I get "Why is my download slowing so much, it was on 150 before!" When it obviously cannot be as my upload is only 60KB/s or so. I have to keep telling them its a false average. I never noticed there problem in DC++ nor peerweb.

Sorry for the long thread, but these issues have really been bugging me, any help you can offer is very much appreciated :D

I still have to say the verlihub slot issues is hubside as tag is still showing the slots correctly, and also if i remember correctly there is an earlier topic about this which had the reason for this behaviour mentioned as well...

Share this post


Link to post
Share on other sites

There is? I cannot seem to find this. Do you know of a solution?

i couldn't find it either, guess it was on one of the earlier forums, or then i mixed it with another topic...

but my guess would be that verlihub has some prepared list of tags which it uses and apexdc is not in it :D

Share this post


Link to post
Share on other sites

Ah, well I shall go pursue this on the verlihub forums instead then, thanks for the help.

Any info on the inaccuracy of the speed indicators crise?

Share this post


Link to post
Share on other sites

Any info on the inaccuracy of the speed indicators crise?

Well i'd like to say i'll take a look but i can't since i have been saying that too much lately and there is no way i have time to take look on absolutely everything (not to even all those i did promise to look into, unfortunetly)

Share this post


Link to post
Share on other sites

For anyone interested in the intial slot detection point.

I was able to resolve this, it will require you to edit Verlihubs source and recompile.

Basically, using search all files, search for say "strngdc" and after each instance, add "ApexDC". I made around 6 edits in total I believe.

Its now possible for me to use !set tag_allow_none 0, and still have apex users connect.

Infact I intend to take a different approach to most hubs, and have all clients but Apex banned.

So well done apex :)

Share this post


Link to post
Share on other sites

For anyone interested in the intial slot detection point.

I was able to resolve this, it will require you to edit Verlihubs source and recompile.

Basically, using search all files, search for say "strngdc" and after each instance, add "ApexDC". I made around 6 edits in total I believe.

Its now possible for me to use !set tag_allow_none 0, and still have apex users connect.

Infact I intend to take a different approach to most hubs, and have all clients but Apex banned.

So well done apex :)

Would it be possible to give us examples of the edited sections of the code so that others who come by this can find out how this works, maybe they are not as lucky as you to resolve this.. .. we hope

Share this post


Link to post
Share on other sites

Yes, though not quite yet, see I forget to take note of my changes like a moron. So Ill have to go back through it again anyways.

Ill post when Ive done so.

Share this post


Link to post
Share on other sites

Here are the exact steps I took guys. Not sure if all of them are required, but I would see no reason why they wouldn't be, so follow carefully. For reference:

ApexDC = Default Apex Client

UoNApexDC = Custom version of the client im doing for my hub / uni

PWDC = Peerweb

Obviously only use the ones you want, in here it shows all of them, as until ive finished my custom version of apex, our users use different types.

# cdcconf.cpp


char *cl_types[]={"", "plusplus","dcgui","odc","dc","dcpro", "strongdc", "idc", "zdc"};

to

char *cl_types[]={"", "plusplus","dcgui","odc","dc","dcpro", "strongdc", "idc", "zdc", "apexdc", "uonapexdc", "pwdc"};


# cdctag.cpp


if(!mTagRE.Compile("((<iDC|zDC\\+\\+\\[|o)([\\d\\.]+)?(>|\\])?)?<(\\+\\+|DCGUI|oDC|DC|DC\\:PRO|TK|StrgDC\\+\\+) ?V\\:([^,]+),([^>]*)>"))

to

if(!mTagRE.Compile("((<iDC|zDC\\+\\+\\[|o)([\\d\\.]+)?(>|\\])?)?<(\\+\\+|DCGUI|oDC|PWDC\\+\\+|UoNApexDC\\+\\+|ApexDC\\+\\+|DC|DC\\:PRO|TK|StrgDC\\+\\+) ?V\\:([^,]+),([^>]*)>"))


		// determine client's type

		mParser.mTagRE.Extract(eTP_TYPE,desc,str);

		if( str == "++" ) mClientType = eCT_PLUSPLUS;

		else if (str == "DCGUI") mClientType = eCT_DCGUI;

		else if (str == "oDC") mClientType = eCT_ODC;

		else if (str == "DC") mClientType = eCT_DC;

		else if (str == "DC:PRO") mClientType = eCT_DCPRO;

		else if (str == "StrgDC++") mClientType = eCT_STRONGDC;

		else if (str.size() ) mClientType = eCT_UNKNOWN;

		if (mParser.mTagRE.PartFound(eTP_PRE_PREFIX))

		{


to


		// determine client's type

		mParser.mTagRE.Extract(eTP_TYPE,desc,str);

		if( str == "++" ) mClientType = eCT_PLUSPLUS;

		else if (str == "DCGUI") mClientType = eCT_DCGUI;

		else if (str == "oDC") mClientType = eCT_ODC;

		else if (str == "DC") mClientType = eCT_DC;

		else if (str == "DC:PRO") mClientType = eCT_DCPRO;

		else if (str == "StrgDC++") mClientType = eCT_STRONGDC;

		else if (str == "ApexDC++") mClientType = eCT_APEXDC;

		else if (str == "UoNApexDC++") mClientType = eCT_UONAPEXDC;

		else if (str == "PWDC++") mClientType = eCT_PWDC;

		else if (str.size() ) mClientType = eCT_UNKNOWN;

		if (mParser.mTagRE.PartFound(eTP_PRE_PREFIX))

		{



		string Client;

		switch(mClientType)

		{

			case cDCTag::eCT_PLUSPLUS: Client = "DC++"; break;

			case cDCTag::eCT_DCGUI: Client = "DCGUI"; break;

			case cDCTag::eCT_ODC: Client = "oDC"; break;

			case cDCTag::eCT_DC: Client = "DC"; break;

			case cDCTag::eCT_DCPRO: Client = "DCPRO"; break;

			case cDCTag::eCT_STRONGDC: Client = "StrongDC++"; break;

			case cDCTag::eCT_IDC: Client = "iDC"; break; 

			case cDCTag::eCT_ZDC: Client = "zDC++"; break;

			default: Client = "Unknown"; break;

		}


to


		string Client;

		switch(mClientType)

		{

			case cDCTag::eCT_PLUSPLUS: Client = "DC++"; break;

			case cDCTag::eCT_DCGUI: Client = "DCGUI"; break;

			case cDCTag::eCT_ODC: Client = "oDC"; break;

			case cDCTag::eCT_DC: Client = "DC"; break;

			case cDCTag::eCT_DCPRO: Client = "DCPRO"; break;

			case cDCTag::eCT_STRONGDC: Client = "StrongDC++"; break;

			case cDCTag::eCT_IDC: Client = "iDC"; break; 

			case cDCTag::eCT_ZDC: Client = "zDC++"; break;

			case cDCTag::eCT_APEXDC: Client = "ApexDC++"; break;

			case cDCTag::eCT_UONAPEXDC: Client = "UoNApexDC++"; break;

			case cDCTag::eCT_PWDC: Client = "PWDC++"; break;			

			default: Client = "Unknown"; break;

		}


# cdctag.h


	typedef enum{ eCT_NOTAG, eCT_PLUSPLUS, eCT_DCGUI, eCT_ODC, eCT_DC, eCT_DCPRO, eCT_STRONGDC, eCT_IDC, eCT_ZDC, eCT_UNKNOWN } tClientType;

to

	typedef enum{ eCT_NOTAG, eCT_PLUSPLUS, eCT_DCGUI, eCT_ODC, eCT_DC, eCT_DCPRO, eCT_STRONGDC, eCT_IDC, eCT_ZDC, eCT_APEXDC, eCT_UONAPEXDC, eCT_PWDC, eCT_UNKNOWN } tClientType;

Now would also be a good time to change Verlihubs topic length setting to 255 from the annoying 80. In addition I recommend you update all the strings which are returned to users if they dont meet certain connection critirea such as "Turn on your tags", is not very helpful for joe blogs - "You are using a DC++ client which is not supported on this hub, please use either: xxx, xxx. These can be downloaded at: www.xxx.com."

Once youve finished the edits, simply ./configure, make, and make install. You shouldnt have to redo any settings, and nothing will be lost.

Once in your hub, or through phpmyadmin or similar, use:

!set tag_allow_none 0

!reload

This will disallow users who have tags the hub doesnt recognise from connecting. In addition you will also find that Apex / Peerweb users are now subject to the same slot req' as everyone else.

:)

Share this post


Link to post
Share on other sites

The Hub does not seem to read how many slots an Apex user has open, and so even though my minimum requirement is 4 slots, they are able to connect with 2?

I had the same problem. I've been kicked 2 times because of this. The hub that I use (it is based on verihub too) requires 3 slots to be openned, but ApexDC++ default value is 2. The hub doesn't check (and I don't know why) slot count and doesn't disconnect me. I didn't check this number, because I thought that if I would open too little slots, I would be disconnected. The operator(s) is(are) forced to kick users with 2 slots open. I think this is ApexDC++ bug, other clients like DC++, PeerWeb DC++ and so on doesn't have this bug (the hub disconnected me when there was too little slots open). :ermm:

Share this post


Link to post
Share on other sites

I had the same problem. I've been kicked 2 times because of this. The hub that I use (it is based on verihub too) requires 3 slots to be openned, but ApexDC++ default value is 2. The hub doesn't check (and I don't know why) slot count and doesn't disconnect me. I didn't check this number, because I thought that if I would open too little slots, I would be disconnected. The operator(s) is(are) forced to kick users with 2 slots open. I think this is ApexDC++ bug, other clients like DC++, PeerWeb DC++ and so on doesn't have this bug (the hub disconnected me when there was too little slots open). :ermm:

firstly pwdc did have this "bug" secondly read posts above, it's related to verlihub itself more than apexdc :)

Share this post


Link to post
Share on other sites
Sign in to follow this  
Followers 0