pidgin: 86d7e4c1: Check in a change requested by Gregory C...
markdoliner at pidgin.im
markdoliner at pidgin.im
Wed Jun 10 03:45:33 EDT 2009
-----------------------------------------------------------------
Revision: 86d7e4c199cf2a62e48fd6fe79e35e3c80cc7926
Ancestor: 887e07e33e197965af1d590e4936f6c082494ea7
Author: markdoliner at pidgin.im
Date: 2009-06-10T07:44:35
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/86d7e4c199cf2a62e48fd6fe79e35e3c80cc7926
Modified files:
libpurple/protocols/oscar/family_auth.c
libpurple/protocols/oscar/oscar.c
ChangeLog:
Check in a change requested by Gregory Cypes from AOL. They want clients
to be able to specify the clientstring and distribution id used when
authenticating. Seems like a reasonable request.
If the UI doesn't change these preferences then the default values from the
ClientInfo struct are used.
-------------- next part --------------
============================================================
--- libpurple/protocols/oscar/family_auth.c f104bd4290a150d962025ee4791d3e4d6d764762
+++ libpurple/protocols/oscar/family_auth.c 39ef7ee585c14035679523ea9da4c65c9241540c
@@ -129,6 +129,8 @@ goddamnicq2(OscarData *od, FlapConnectio
GSList *tlvlist = NULL;
int passwdlen;
guint8 *password_encoded;
+ const char *clientstring;
+ guint32 distrib;
passwdlen = strlen(password);
password_encoded = (guint8 *)g_malloc(passwdlen+1);
@@ -139,18 +141,25 @@ goddamnicq2(OscarData *od, FlapConnectio
aim_encode_password(password, password_encoded);
+ clientstring = purple_prefs_get_string("/plugins/prpl/oscar/clientstring");
+ if (clientstring == NULL)
+ clientstring = ci->clientstring;
+ distrib = purple_prefs_get_int("/plugins/prpl/oscar/distid");
+ if ((gint32)distrib == -1)
+ distrib = ci->distrib;
+
byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */
aim_tlvlist_add_str(&tlvlist, 0x0001, sn);
aim_tlvlist_add_raw(&tlvlist, 0x0002, passwdlen, password_encoded);
- if (ci->clientstring)
- aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring);
+ if (clientstring)
+ aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring);
aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid);
aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major);
aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor);
aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point);
aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build);
- aim_tlvlist_add_32(&tlvlist, 0x0014, (guint32)ci->distrib); /* distribution chan */
+ aim_tlvlist_add_32(&tlvlist, 0x0014, distrib); /* distribution chan */
aim_tlvlist_add_str(&tlvlist, 0x000f, ci->lang);
aim_tlvlist_add_str(&tlvlist, 0x000e, ci->country);
@@ -210,6 +219,8 @@ aim_send_login(OscarData *od, FlapConnec
guint8 digest[16];
aim_snacid_t snacid;
size_t password_len;
+ const char *clientstring;
+ guint32 distrib;
if (!ci || !sn || !password)
return -EINVAL;
@@ -236,20 +247,27 @@ aim_send_login(OscarData *od, FlapConnec
aim_encode_password_md5(password, password_len, key, digest);
+ clientstring = purple_prefs_get_string("/plugins/prpl/oscar/clientstring");
+ if (clientstring == NULL)
+ clientstring = ci->clientstring;
+ distrib = purple_prefs_get_int("/plugins/prpl/oscar/distid");
+ if ((gint32)distrib == -1)
+ distrib = ci->distrib;
+
aim_tlvlist_add_raw(&tlvlist, 0x0025, 16, digest);
#ifndef USE_OLD_MD5
aim_tlvlist_add_noval(&tlvlist, 0x004c);
#endif
- if (ci->clientstring)
- aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring);
+ if (clientstring)
+ aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring);
aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid);
aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major);
aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor);
aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point);
aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build);
- aim_tlvlist_add_32(&tlvlist, 0x0014, (guint32)ci->distrib);
+ aim_tlvlist_add_32(&tlvlist, 0x0014, distrib);
aim_tlvlist_add_str(&tlvlist, 0x000f, ci->lang);
aim_tlvlist_add_str(&tlvlist, 0x000e, ci->country);
============================================================
--- libpurple/protocols/oscar/oscar.c 7f3dc807c2040c44d7d1466e47982a706d029734
+++ libpurple/protocols/oscar/oscar.c bf2102205c7cbb9777cb7bb8e8707b1edf712c58
@@ -7022,6 +7022,16 @@ void oscar_init(PurplePluginProtocolInfo
/* Preferences */
purple_prefs_add_none("/plugins/prpl/oscar");
purple_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE);
+
+ /*
+ * These two preferences will normally not be changed. UIs can optionally
+ * use them to override these two version fields which are sent to the
+ * server when logging in. AOL requested this change to allow clients to
+ * use custom values.
+ */
+ purple_prefs_add_string("/plugins/prpl/oscar/clientstring", NULL);
+ purple_prefs_add_int("/plugins/prpl/oscar/distid", -1);
+
purple_prefs_remove("/plugins/prpl/oscar/show_idle");
purple_prefs_remove("/plugins/prpl/oscar/always_use_rv_proxy");
More information about the Commits
mailing list