# HG changeset patch # User Sadrul Habib Chowdhury # Date 1191194800 0 # Node ID f653af2d46597c87694f596b58d8873a398b4a5a # Parent 2354c9748a66de208fd1c773b53a4132f4eaa0c5# Parent bcda8512dce477d5fb139048400859071ca02c9c merge of '0a539d88f58a5f0cf13448ab6fcc7b3e6e30db52' and '85513af6378ee439127fd26e37d36980f07bf835' diff -r 2354c9748a66 -r f653af2d4659 ChangeLog --- a/ChangeLog Sun Sep 30 02:11:37 2007 +0000 +++ b/ChangeLog Sun Sep 30 23:26:40 2007 +0000 @@ -1,6 +1,6 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -Version 2.2.2: +version 2.2.2: http://developer.pidgin.im/query?status=closed&milestone=2.2.2 NOTE: Due to the backporting that happened for the 2.2.1 release, it is possible bugs this release fixes bugs @@ -30,9 +30,9 @@ * The "Smiley" menu has been moved to the top-level of the toolbar. * Pidgin's display is now saved with the command line for session restoration. (David Mohr) - * ICQ Birthday notifications are shown as buddy list emblems + * ICQ Birthday notifications are shown as buddy list emblems. -Version 2.2.1: +version 2.2.1 (09/29/2007): http://developer.pidgin.im/query?status=closed&milestone=2.2.1 NOTE: Due to the backporting that happened for the actual release, it is possible bugs marked as fixed in 2.2.1 @@ -43,24 +43,28 @@ * Cancelling the password prompt for an account will no longer leave it in an ambiguous state. (It will be disabled.) * Fixed an erroneous size display for MSN file transfers. (galt) + * Fixed multiple memory leaks, particularly in XMPP and MySpace + protocols + * Fixed remembering proxy preferences and status scores * Gmail notifications are better tracked Pidgin: * Fixed keyboard tab reordering to move tabs one step instead of two. * You should no longer lose proxy settings when Pidgin is restarted. + * Fixed detection of X11 when compiling Finch: * Pressing 'Insert' in the buddylist will bring up the 'Add Buddy' dialog. -Version 2.2.0 (09/13/2007): +version 2.2.0 (09/13/2007): http://developer.pidgin.im/query?status=closed&milestone=2.2.0 Libpurple: * New protocol plugin: MySpaceIM (Jeff Connelly, Google Summer of Code) * XMPP enhancements. See - http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas + http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas Monitzer, Google Summer of Code for Adium) * Certificate management. Libpurple will validate certificates on SSL-encrypted protocols (William Ehlhardt, Google Summer of Code) @@ -2296,4 +2300,4 @@ * Fixed WindowMaker Appicon * Version Number in About Box * Gaim Slogan in about box :) - * Created Changelog File :) \ No newline at end of file + * Created Changelog File :) diff -r 2354c9748a66 -r f653af2d4659 configure.ac --- a/configure.ac Sun Sep 30 02:11:37 2007 +0000 +++ b/configure.ac Sun Sep 30 23:26:40 2007 +0000 @@ -1460,7 +1460,7 @@ [enable_nss="$enableval"], [enable_nss="yes"]) -msg_ssl="None (MSN and Google Talk will not work without SSL!)" +msg_ssl="None. MSN, Novell Groupwise and Google Talk will not work without GnuTLS or NSS. OpenSSL is NOT usable!" dnl # dnl # Check for GnuTLS if it's specified. diff -r 2354c9748a66 -r f653af2d4659 libpurple/protocols/irc/msgs.c --- a/libpurple/protocols/irc/msgs.c Sun Sep 30 02:11:37 2007 +0000 +++ b/libpurple/protocols/irc/msgs.c Sun Sep 30 23:26:40 2007 +0000 @@ -751,7 +751,10 @@ } purple_conversation_set_data(convo, IRC_NAMES_FLAG, GINT_TO_POINTER(FALSE)); - purple_conversation_present(convo); + /* Until purple_conversation_present does something that + * one would expect in Pidgin, this call produces buggy + * behavior both for the /join and auto-join cases. */ + /* purple_conversation_present(convo); */ return; } diff -r 2354c9748a66 -r f653af2d4659 libpurple/protocols/oscar/odc.c --- a/libpurple/protocols/oscar/odc.c Sun Sep 30 02:11:37 2007 +0000 +++ b/libpurple/protocols/oscar/odc.c Sun Sep 30 23:26:40 2007 +0000 @@ -27,6 +27,8 @@ #include "imgstore.h" #include "util.h" +#define DIRECTIM_MAX_FILESIZE 52428800 + /** * Free any ODC related data and print a message to the conversation * window based on conn->disconnect_reason. @@ -587,6 +589,27 @@ if (frame->payload.len > 0) { + if (frame->payload.len > DIRECTIM_MAX_FILESIZE) + { + gchar *tmp, *size1, *size2; + PurpleAccount *account; + PurpleConversation *conv; + + size1 = purple_str_size_to_units(frame->payload.len); + size2 = purple_str_size_to_units(DIRECTIM_MAX_FILESIZE); + tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"), conn->sn, size1, size2); + g_free(size1); + g_free(size2); + + account = purple_connection_get_account(conn->od->gc); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); + purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); + g_free(tmp); + + peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL); + return; + } + /* We have payload data! Switch to the ODC watcher to read it. */ frame->payload.data = g_new(guint8, frame->payload.len); frame->payload.offset = 0; diff -r 2354c9748a66 -r f653af2d4659 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Sun Sep 30 02:11:37 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Sun Sep 30 23:26:40 2007 +0000 @@ -2184,12 +2184,14 @@ { PurpleConnection *gc; OscarData *od; + PurpleAccount *account; PurpleBuddy *buddy; PurpleGroup *group; gc = data->gc; od = gc->proto_data; - buddy = purple_find_buddy(purple_connection_get_account(gc), data->name); + account = purple_connection_get_account(gc); + buddy = purple_find_buddy(account, data->name); if (buddy != NULL) group = purple_buddy_get_group(buddy); else @@ -2201,7 +2203,19 @@ buddy->name, group->name); aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) + { aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); + + /* Mobile users should always be online */ + if (buddy->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_MOBILE, NULL); + } + } } } @@ -4621,12 +4635,16 @@ void oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od; + PurpleAccount *account; + + od = (OscarData *)gc->proto_data; + account = purple_connection_get_account(gc); if (!aim_snvalid(buddy->name)) { gchar *buf; buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); - if (!purple_conv_present_error(buddy->name, purple_connection_get_account(gc), buf)) + if (!purple_conv_present_error(buddy->name, account, buf)) purple_notify_error(gc, NULL, _("Unable To Add"), buf); g_free(buf); @@ -4640,6 +4658,16 @@ purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n", buddy->name, group->name); aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); + + /* Mobile users should always be online */ + if (buddy->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(buddy), + OSCAR_STATUS_ID_MOBILE, NULL); + } } /* XXX - Should this be done from AIM accounts, as well? */ @@ -4955,6 +4983,17 @@ g_free(comment); } } + + /* Mobile users should always be online */ + if (b->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_MOBILE, NULL); + } + g_free(gname_utf8); g_free(alias_utf8); } @@ -5145,6 +5184,17 @@ purple_debug_info("oscar", "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); purple_blist_add_buddy(b, NULL, g, NULL); + + /* Mobile users should always be online */ + if (b->name[0] == '+') { + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_AVAILABLE, NULL); + purple_prpl_got_user_status(account, + purple_buddy_get_name(b), + OSCAR_STATUS_ID_MOBILE, NULL); + } + } g_free(gname_utf8);