Difference between channel mode +s and +p

What is the difference between channel modes +s and +p?

[16:05] *** XuNiL sets mode +s-p
[16:05] p or s
[16:05] does it matter
[16:05] yes and no
[16:05] +s = totally secret
[16:05] +p = totally private?


There are two channel modes, +p meaning private and +s meaning secret.

The two modes make that the channel won't be shown in the WHOIS reply of a user or in any listing (/SQUERY Alis list, /LIST or such).

Both can't be set together. And uppon setting one mode, the other one is automatically unset.

The main difference between the modes is that +s is a bit "more" than +p.

If a channel is "secret" the server will act as if it doesn't exist for queries outside of the channel. (For example if somebody who is not on the channel does NAMES.)

The only exception to this rule is the command MODE which works correctly in any case (it just doesn't show the values of +l or +k to people outside BTW).


NAMES #private_chan
:irc.arnes.si 353 fic * #private_chan :
:irc.arnes.si 366 fic #private_chan :End of NAMES list.
NAMES #secret_chan
:irc.arnes.si 366 fic #secret_chan :End of NAMES list.
NAMES #nonexisting_channel
:irc.arnes.si 366 fic #nonexisting_channel :End of NAMES list.

If there were users on the private channel who were not invisible (usermode +i), NAMES would show them.

(If you JOIN the channel, NAMES shows all the people - +s or +p don't have any impact then.)

Any "+s channel" a not invisible user might have joined has also impact on his appereance in a WHO or WHOIS listing.

The old logic was that if some user is invisible and has joined a secret-chan, he won't be shown by WHO or WHOIS - i.e. he would be treated as if he had +i usermode set.

With the well known "hemp" patch written by jv that logic changes. The function "m_who" was rewritten and is now less CPU consuming than before. It now also shows

visible people, who joined any number of secret channels. However WHOIS still works the same as before.

Notice that also +i users are shown if you do WHOIS with the exact nick.

Invisibility matters just for using wildcards.