Testing Done:
Built and followed the sasl instructions on freenode's site https://freenode.net/kb/answer/pidgin and connected and identified me to nickserv just fine. Also I checked Debian and they're manually enabling this so if there was an issue users were seeing we would have heard about it by now as this line was last changed in 2013.
Reviewed at https://reviews.imfreedom.org/r/26/
/**
* @file buddyicon.c Buddy Icon API
* @ingroup core
*/
/* purple
*
* Purple is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#define _PURPLE_BUDDYICON_C_
#include"internal.h"
#include"buddyicon.h"
#include"conversation.h"
#include"dbus-maybe.h"
#include"debug.h"
#include"imgstore.h"
#include"util.h"
/* NOTE: Instances of this struct are allocated without zeroing the memory, so
* NOTE: be sure to update purple_buddy_icon_new() if you add members. */
struct_PurpleBuddyIcon
{
PurpleAccount*account;/**< The account the user is on. */
PurpleStoredImage*img;/**< The stored image containing
the icon data. */
char*username;/**< The username the icon belongs to. */
char*checksum;/**< The protocol checksum. */
intref_count;/**< The buddy icon reference count. */
};
/**
* This is the big grand daddy hash table that contains references to
* everybody's buddy icons.
*
* Key is a PurpleAccount.
* Value is another hash table, usually referred to as "icon_cache."
* For this inner hash table:
* Key is the username of the buddy whose icon is being stored.
* Value is the PurpleBuddyIcon for this buddy.
*/
staticGHashTable*account_cache=NULL;
/**
* This hash table contains a bunch of PurpleStoredImages that are
* shared across all accounts.
*
* Key is the filename for this image as constructed by
* purple_util_get_image_filename(). So it is the base16 encoded
* sha-1 hash plus an appropriate file extension. For example:
* "0f4972d17d1e70e751c43c90c948e72efbff9796.gif"
*
* The value is a PurpleStoredImage containing the icon data. These
* images are reference counted, and when the count reaches 0
* imgstore.c emits the image-deleting signal and we remove the image
* from the hash table (but it might still be saved on disk, if the
* icon is being used by offline accounts or some such).
*/
staticGHashTable*icon_data_cache=NULL;
/**
* This hash table contains references counts for how many times each
* icon in the ~/.purple/icons/ directory is being used. It's pretty
* crazy. It maintains the reference count across sessions, too, so
* if you exit Pidgin then this hash table is reconstructed the next
* time Pidgin starts.
*
* Key is the filename for this image as constructed by
* purple_util_get_image_filename(). So it is the base16 encoded
* sha-1 hash plus an appropriate file extension. For example:
* "0f4972d17d1e70e751c43c90c948e72efbff9796.gif"
*
* The value is a GINT_TO_POINTER count of the number of times this
* icon is used. So if four of your buddies are using an icon, and
* you have the icon set for two of your accounts, then this number
* will be six. When this reference count reaches 0 the icon will
* be deleted from disk.
*/
staticGHashTable*icon_file_cache=NULL;
/**
* This hash table is used for both custom buddy icons on PurpleBlistNodes and