im.pidgin.pidgin.2.2.2: 2e6c7c109c4d550208ef40d72073d597a7a8307a
lschiere at pidgin.im
lschiere at pidgin.im
Fri Oct 19 17:11:14 EDT 2007
-----------------------------------------------------------------
Revision: 2e6c7c109c4d550208ef40d72073d597a7a8307a
Ancestor: 81a33e5c1827b32ff5b144f2a2d9f87450f4c182
Author: lschiere at pidgin.im
Date: 2007-10-19T16:27:50
Branch: im.pidgin.pidgin.2.2.2
Modified files:
finch/gntconv.c libpurple/protocols/oscar/odc.c
libpurple/protocols/oscar/oscar.c
ChangeLog:
applied changes from 2ab75e32c52e94c674d0b5a396d224da7e9d509e
through 3829f989342d787500e9abe363c89909db102f4b
-------------- next part --------------
============================================================
--- finch/gntconv.c 4e36328b74e1411573d114659d31ab30eacdd1ca
+++ finch/gntconv.c a38f3246e3471d27ce3dc0fe3344e6a4a06a818a
@@ -931,7 +931,7 @@ finch_conv_present(PurpleConversation *c
{
FinchConv *fc = FINCH_CONV(conv);
if (fc && fc->window)
- return gnt_window_present(fc->window);
+ gnt_window_present(fc->window);
}
static gboolean
============================================================
--- libpurple/protocols/oscar/odc.c 341c7512f4c1f9e9a46a794ffa654586dc5e836d
+++ libpurple/protocols/oscar/odc.c 0934367189b3e8bca4a66530e9ccc1656c18dd25
@@ -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 @@ peer_odc_recv_frame(PeerConnection *conn
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;
============================================================
--- libpurple/protocols/oscar/oscar.c eb42674cb17361d02d46695db4047129e2d829c9
+++ libpurple/protocols/oscar/oscar.c 802a4c029208b50d5ffab805d7306a80a6286210
@@ -2184,12 +2184,14 @@ purple_auth_request(struct name_data *da
{
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 @@ purple_auth_request(struct name_data *da
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 @@ oscar_add_buddy(PurpleConnection *gc, Pu
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 @@ oscar_add_buddy(PurpleConnection *gc, Pu
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 @@ static int purple_ssi_parselist(OscarDat
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_ssi_parseaddmod(OscarData *od, Fl
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);
More information about the Commits
mailing list