It was always my understanding that the major (only?) difference between a PRIVATE and a SECRET channel is that PRIVATE channels show up in /list. This is the way I have always used +p... I use it if I don't want people to follow me to my channel when they /whois me... but I still want it to show up in a /list.
As I recall from the u2.9 days this worked as it should. My channel always showed up in a /list. Now I can only see it (when it's +p) if I'm already in the channel. Outside clients do not get it.
I looked at the list_next_channels() function in channel.c and it looks like it's checking itself twice (is this intentional?). At the top of the function it does:
if (!cli_user(cptr) || (SecretChannel(chptr) && !find_channel_member(cptr, chptr)))
continue;
Then later on down (after the ifchecks for the /list arguments like min/max users) it does:
if (ShowChannel(cptr,chptr)) send_reply(cptr, RPL_LIST, chptr->chname, chptr->users, chptr->topic);
What's the point of the ifcheck for ShowChannel? ShowChannel from the looks of it was meant to be used mainly for /whois... i.e: it only returns true if they are either on the same channel, or if the channel is public (not +p or +s). This would seem to be a redundant check to me... the SecretChannel check already took care of this... plus by using ShowChannel you negate the listing of +p channels!
Please let me know if I'm completely off my marbles here (it's happened before) or if this is a legitimate bug. If it is do I get bragging rights in the CHANGELOG? :)
Thanks for listening and donating all of your time to keeping ircu (and Undernet itself) going :)