Mercurial > pidgin
view libpurple/dbus-useful.c @ 27213:3e516701dd33
Changes to our DNS SRV record sorting, care of Vijay Vijay Raghunathan
from Meebo.
SRV records have two fields that determine the order in which the results
should be used:
1. Priority (which we call "pref" for some reason). Records with a
lower priority will be used first.
2. Weight. Records with a higher weight are more likely to be used
first, but there is some amount of randomness. We were actually
doing this backwards and using records with lower weight first. And
we weren't randomizing. But now we are.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 29 Jun 2009 06:49:59 +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); }