ADC - BASE

Technical discussion about the NMDC and <a href="http://dcpp.net/ADC.html">ADC</A> protocol. The NMDC protocol is documented in the <a href="http://dcpp.net/wiki/">Wiki</a>, so feel free to refer to it.

Moderator: Moderators

Locked
[NL]Pur
Programmer
Posts: 66
Joined: 2004-07-21 14:32

ADC - BASE

Post by [NL]Pur » 2004-12-18 05:33

According to 0.8 draft:
The feature name should use only upper case letters, and possible a number to signal a revised feature. A central register of known features should be kept, to avoid clashes. All ADC clients should support the BASE feature (unless a future revision takes its place), which is this protocol.
So why is DC++ sending : HSUP xxxx BAS0

and not HSUP xxxx BASE0

(xxxx = cid)

And should an client always send an CID?
It is up to the hub developer to decide whether to base hub registration on CID or nickname (during login, the client (usually) provides both), but the latter is probably more convenient for the users.
usually doens't sound very strict. I already know a client send
HSUP +BAS0 at login , without the Cid. That means that a Cid based hub only can decide from there that an user get disconnected.


Though i also think that
SUP <+|-><feature1>...<+|-><featureN>
<+|-> doesn't say <+|-|>
and therefor isn't optional and dc++ should also send an + or - which it doesn't

arnetheduck
The Creator Himself
Posts: 296
Joined: 2003-01-02 17:15

Post by arnetheduck » 2004-12-18 06:50

yes, well, dc++ isn't finished yet =) it sends bas0 so that it won't confuse future hubs with its bad behaviour...the + is not optional, but for the sake of consistency, I'm considering making it ++ and -- instead...hm...

Sedulus
Forum Moderator
Posts: 687
Joined: 2003-01-04 09:32
Contact:

Re: ADC - BASE

Post by Sedulus » 2004-12-18 06:57

[NL]Pur wrote:According to 0.8 draft:
The feature name should use only upper case letters, and possible a number to signal a revised feature. A central register of known features should be kept, to avoid clashes. All ADC clients should support the BASE feature (unless a future revision takes its place), which is this protocol.
So why is DC++ sending : HSUP xxxx BAS0

and not HSUP xxxx BASE0

(xxxx = cid)
BAS0 is to denote that it's not BASE yet, and it's four letters only to keep it short
[NL]Pur wrote:And should an client always send an CID?
well yes,
but as far as I understand, the first HSUP is the exception.
if it ever gets decided that the current CID's are too short or whatever, a SUP can be used to specify that a different CID type should be used.
[NL]Pur wrote:
It is up to the hub developer to decide whether to base hub registration on CID or nickname (during login, the client (usually) provides both), but the latter is probably more convenient for the users.
usually doens't sound very strict. I already know a client send
HSUP +BAS0 at login , without the Cid. That means that a Cid based hub only can decide from there that an user get disconnected.
current implementations suggest that the first INF contains the CID and the NIckname, but the NI is optional (the hub decides if it's mandatory); hence the "usual".
[NL]Pur wrote:Though i also think that
SUP <+|-><feature1>...<+|-><featureN>
<+|-> doesn't say <+|-|>
and therefor isn't optional and dc++ should also send an + or - which it doesn't
correct.. DC++ needs a + there
http://dc.selwerd.nl/hublist.xml.bz2
http://www.b.ali.btinternet.co.uk/DCPlusPlus/index.html (TheParanoidOne's DC++ Guide)
http://www.dslreports.com/faq/dc (BSOD2600's Direct Connect FAQ)

[NL]Pur
Programmer
Posts: 66
Joined: 2004-07-21 14:32

Post by [NL]Pur » 2004-12-18 07:11

current implementations suggest that the first INF contains the CID and the NIckname, but the NI is optional (the hub decides if it's mandatory); hence the "usual".
so the CID in the first HSUP can be ignored, or not sent ?

if you support both with and without CID it really harder to parse,

since in HSUP +BAS0 , is on the place of the CID
Last edited by [NL]Pur on 2004-12-18 07:12, edited 1 time in total.

arnetheduck
The Creator Himself
Posts: 296
Joined: 2003-01-02 17:15

Post by arnetheduck » 2004-12-18 07:12

uhm, no, there's nothing that says that the first hsup should be without - which means that it has to be there...I don't see any particular reason for making an exception really...if we ever run out of the 64-bit space (which means that we have a collision between 2^64 items), there's something fundamentally wrong anyway...

[NL]Pur
Programmer
Posts: 66
Joined: 2004-07-21 14:32

Post by [NL]Pur » 2004-12-18 07:14

the
CID or nickname (during login, the client (usually) provides both),
doesn't tell which isn't supplied

edit: btw CZDC++ 0.4033 has the HSUP +BAS0 behaviour (old version i see now could be cid wasn't implemented yet? )

arnetheduck
The Creator Himself
Posts: 296
Joined: 2003-01-02 17:15

Post by arnetheduck » 2004-12-18 07:57

the cid is always supplied, nick may in some cases be omitted (for example hub pingers etc don't need it really...)
Technically, the first hsup is in no way supposed to be used for authentication, it's the first inf that does that, and a hub app can then mandate from the client to send an inf with nick if it uses nick+password....

Locked