Pidgin Privacy options

Stu Tomlinson stu at
Fri Sep 5 15:49:12 EDT 2008

On Fri, 2008-09-05 at 10:46 -0700, chris wrote:
> I'm trying to understand the meaning of the Privacy options dialog 

Good luck with that :)

> I assume each option is probably has slightly different meanings for 
> each protocol.

Slightly different in some cases, and vastly different in others. It is
a long standing item on the TODO list to improve the Privacy API & UI in
Pidgin. Much of it still is very AIM-centric, due to the history of

> 1. Allow all users to contact me
> 2. Allow only the users on my buddy list
> 3. Allow only the users below
> 4. Block all users
> 5. Block only the users below.
> I use the following protocols: AIM, ICQ, IRC, MSN, XMPP


> So my questions are:

Instead of answering your questions I will attempt to explain the
current behavior of the protocols I know about, hopefully other
developers more familiar with other protocols will chime in to fill this

For protocols where the protocol implementation itself does not handle
the privacy settings (eg. with server-side blocking), libpurple
implements the behavior as described by the privacy settings, but only
to the reception of IMs and chat invitations (online status is not
blocked, and messages are not blocked).

On AIM, the options behave as they are described, and I believe block
both online status and messaging. This blocking is server-side.

On ICQ, the privacy dialog should basically be ignored - we do not
support ICQ's block lists. The "allow" and "block" lists in Pidgin are
used for the visible/invisible ICQ lists, that control who can see your
online status when you switch to Invisible. This is why it appears your
options are reset when you sign on or switch between Invisible and other

On IRC, there is no protocol implementation handling of privacy, so it
falls back to libpurple as described above.

On MSN, the protocol does not support all the functionality of all the
options, only #3 and #5 are valid, but due to the way the block/allow
lists are initially populated, #3 is analogous to #2 unless you have
modified the allow list, and #5 is analogous to #1 unless you have
denied a buddy's add request or modified the block list.

On XMPP, I'm not sure exactly what we support, I suspect the little we
support is only valid for Google Talk accounts using Google specific
extensions to XMPP.

On Yahoo, I think it's a mess. Looking at the code it seems 2-5 are all
"equivalent", in that they add the list of blocked names to the server
side block list (even if the selection is one where you can't manipulate
the block list). In addition to this, the libpurple default privacy
checks are called in several places.

I hope I got the above correct, and I hope from that you can infer
answers to at least some of your original questions.



PS. Once all my glaring mistakes are pointed out and corrected by
others, it would be nice to get this in the wiki somewhere to help out
whoever is foolish enough to step forward and fix our Privacy API; or
any other users lost in the current UI.

More information about the Support mailing list