So why is DC++ sending : HSUP xxxx BAS0The 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.
and not HSUP xxxx BASE0
(xxxx = cid)
And should an client always send an CID?
usually doens't sound very strict. I already know a client sendIt 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.
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
<+|-> doesn't say <+|-|>SUP <+|-><feature1>...<+|-><featureN>
and therefor isn't optional and dc++ should also send an + or - which it doesn't