How to generate CID taken?
August 9, 2007 4 Comments
Or rather, how not to generate CID taken?
I guess most of you already know that on ADC the clients are identified by their CID. Which means that two clients with the same CID cannot enter to the hub at the same time.
And a lot of hubowners, website maintainers, etc provide clients with some basic settings for download to ease the start for the users. Which means that you start a clean new client, set up some common things you’d like to (like a default nick, coloring, timestamp, add some hubs as a favorite etc.), then rar/zip the whole thing and put it on your website.
What happens if you do that? Since the clients your users are going to download includes the PID setting too, all users will have the same CID, so they can’t enter to the same hub while the other users are in, they are going to get “CID taken”; and I’m not sure that an inexperienced user can figure out what should he change in the settings to get rid of that.
So I ask anyone who distributes clients with some settings preset in them, edit DCPlusPlus.xml before publishing and remove the <CID>…</CID> from the xml. Or rather, distribute the clients without the xml file.
A footnote: you may notice that the settings xml contains a CID tag instead of a PID tag. That’s historical and haven’t changed yet, but that’s the PID. So please don’t distribute it otherwise everyone’s CID’s going to be taken.
Maybe stored the MAC addy the PID was generated with in the XML file. If that changes generate new PID. ?
:)
I can think of several legitimate reasons for changing ethernet addresses, though. (Swapping NICs into/out of your computer to test them, for instance.) These may not be common scenarios for most users, but if they’re not out of question for a “power user” — and changing their identity for them (or prompting them on startup, etc.) seems… annoying.
If I remember correctly, arne was considering removing the MAC address from the PID computation (in the spec).
As far as I know, even DC++ uses only a random generator to generate the initial PID.