What is the difference between channel modes +s and +p
*** XuNiL sets mode +s-p
+p or +s, does it matter? Yes and no.
+s = totally secret
+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).
Example:
→ 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.
–fiction