Mercurial > pidgin
changeset 32784:665388a0f573
Remove periodic WHO on IRC.
I believe I have left enough functionality here that a misguided
libpurple client can continue to trigger WHO from its own UI.
References #11089, #14602
Fixes #14955
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Thu, 03 May 2012 00:09:14 +0000 |
parents | 6da4f286898c |
children | f911cdafdcd8 |
files | libpurple/protocols/irc/irc.c libpurple/protocols/irc/irc.h libpurple/protocols/irc/msgs.c |
diffstat | 3 files changed, 7 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/irc/irc.c Fri Apr 20 08:03:08 2012 +0000 +++ b/libpurple/protocols/irc/irc.c Thu May 03 00:09:14 2012 +0000 @@ -4,7 +4,7 @@ * purple * * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net> - * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> + * Copyright (C) 2003, 2012 Ethan Blanton <elb@pidgin.im> * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com> * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> * @@ -41,8 +41,6 @@ static void irc_ison_buddy_init(char *name, struct irc_buddy *ib, GList **list); -static void irc_who_channel(PurpleConversation *conv, struct irc_conn *irc); - static const char *irc_blist_icon(PurpleAccount *a, PurpleBuddy *b); static GList *irc_status_types(PurpleAccount *account); static GList *irc_actions(PurplePlugin *plugin, gpointer context); @@ -241,29 +239,6 @@ } -gboolean irc_who_channel_timeout(struct irc_conn *irc) -{ - // WHO all of our channels. - g_list_foreach(purple_get_conversations(), (GFunc)irc_who_channel, (gpointer)irc); - - return TRUE; -} - -static void irc_who_channel(PurpleConversation *conv, struct irc_conn *irc) -{ - if (purple_conversation_get_account(conv) == irc->account - && purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT - && !purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv))) { - char *buf = irc_format(irc, "vc", "WHO", purple_conversation_get_name(conv)); - - purple_debug(PURPLE_DEBUG_INFO, "irc", - "Performing periodic who on %s\n", - purple_conversation_get_name(conv)); - irc_send(irc, buf); - g_free(buf); - } -} - static void irc_ison_one(struct irc_conn *irc, struct irc_buddy *ib) { char *buf; @@ -536,8 +511,6 @@ } if (irc->timer) purple_timeout_remove(irc->timer); - if (irc->who_channel_timer) - purple_timeout_remove(irc->who_channel_timer); g_hash_table_destroy(irc->cmds); g_hash_table_destroy(irc->msgs); g_hash_table_destroy(irc->buddies);
--- a/libpurple/protocols/irc/irc.h Fri Apr 20 08:03:08 2012 +0000 +++ b/libpurple/protocols/irc/irc.h Thu May 03 00:09:14 2012 +0000 @@ -3,7 +3,7 @@ * * purple * - * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> + * Copyright (C) 2003, 2012 Ethan Blanton <elb@pidgin.im> * * 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 @@ -55,7 +55,6 @@ char *server; int fd; guint timer; - guint who_channel_timer; GHashTable *buddies; gboolean ison_outstanding;
--- a/libpurple/protocols/irc/msgs.c Fri Apr 20 08:03:08 2012 +0000 +++ b/libpurple/protocols/irc/msgs.c Thu May 03 00:09:14 2012 +0000 @@ -3,7 +3,7 @@ * * purple * - * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> + * Copyright (C) 2003, 2012 Ethan Blanton <elb@pidgin.im> * * 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 @@ -110,8 +110,6 @@ irc_blist_timeout(irc); if (!irc->timer) irc->timer = purple_timeout_add_seconds(45, (GSourceFunc)irc_blist_timeout, (gpointer)irc); - if (!irc->who_channel_timer) - irc->who_channel_timer = purple_timeout_add_seconds(300, (GSourceFunc)irc_who_channel_timeout, (gpointer)irc); } void irc_msg_default(struct irc_conn *irc, const char *name, const char *from, char **args) @@ -463,6 +461,10 @@ flags = cb->flags; + /* FIXME: I'm not sure this is really a good idea, now + * that we no longer do periodic WHO. It seems to me + * like it's more likely to be confusing than not. + * Comments? */ if (args[6][0] == 'G' && !(flags & PURPLE_CBFLAGS_AWAY)) { purple_conv_chat_user_set_flags(chat, cb->name, flags | PURPLE_CBFLAGS_AWAY); } else if(args[6][0] == 'H' && (flags & PURPLE_CBFLAGS_AWAY)) {