view libpurple/dbus-useful.c @ 32607:88a46649de3d

Remove a bogus short-circuit check intended to prevent downloading the same icon every time a buddy logs in. There are three problems with the check: * The fact that we already have an icon for the buddy doesn't mean it hasn't changed on the server since we last downloaded. * We should really be checking against the server-provided checksum, but we don't know how to checksum the same way the server does. * We no longer receive a checksum at the YMSG protocol level, so we'd have to parse such a checksum out of the picture URL, which is going to be fragile and seems just plain stupid to me. It seems better to me all around to just axe the check and potentially waste some bandwidth. If someone wants to figure out a bandwidth-saving fix for this, feel free. At any rate, this fixes #13050.
author John Bailey <rekkanoryo@rekkanoryo.org>
date Sun, 11 Sep 2011 04:18:46 +0000
parents 32c366eeeb99
children 4ca97b26a8fb f75041cb3fec
line wrap: on
line source

#include <string.h>
#include <glib.h>

#include "dbus-useful.h"
#include "conversation.h"
#include "util.h"


PurpleAccount *
purple_accounts_find_ext(const char *name, const char *protocol_id,
		       gboolean (*account_test)(const PurpleAccount *account))
{
	PurpleAccount *result = NULL;
	GList *l;
	char *who;

	if (name)
		who = g_strdup(purple_normalize(NULL, name));
	else
		who = NULL;

	for (l = purple_accounts_get_all(); l != NULL; l = l->next) {
		PurpleAccount *account = (PurpleAccount *)l->data;

		if (who && strcmp(purple_normalize(NULL, purple_account_get_username(account)), who))
			continue;

		if (protocol_id && strcmp(account->protocol_id, protocol_id))
			continue;

		if (account_test && !account_test(account))
			continue;

		result = account;
		break;
	}

	g_free(who);

	return result;
}

PurpleAccount *purple_accounts_find_any(const char *name, const char *protocol)
{
	return purple_accounts_find_ext(name, protocol, NULL);
}

PurpleAccount *purple_accounts_find_connected(const char *name, const char *protocol)
{
	return purple_accounts_find_ext(name, protocol, purple_account_is_connected);
}