# HG changeset patch # User Mark Doliner # Date 1041992077 0 # Node ID 0e4be672f516ca61dd5000979c27c6318f9bbe49 # Parent 2b5fa2b2f4ae30876bda0034b4c8c9f42b8d767a [gaim-migrate @ 4484] An ssi fix. Yay. Previously, when moving a buddy from one group to another, we just deleted the buddy then added it to the other group. That would result in needed to re-ask the person for authorization. This should fix that. It's not really major. Basically, you add the person to the other group before deleting them from the first group. I hope this is verbose enough. Let me know if it's not, and next time I'll run "./mark -vv" committer: Tailor Script diff -r 2b5fa2b2f4ae -r 0e4be672f516 src/protocols/oscar/aim.h --- a/src/protocols/oscar/aim.h Wed Jan 08 01:56:03 2003 +0000 +++ b/src/protocols/oscar/aim.h Wed Jan 08 02:14:37 2003 +0000 @@ -1176,7 +1176,7 @@ faim_export char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn); faim_export int aim_ssi_getpermdeny(struct aim_ssi_item *list); faim_export fu32_t aim_ssi_getpresence(struct aim_ssi_item *list); -faim_export char *aim_ssi_getalias(struct aim_ssi_item *list, char *gn, char *sn); +faim_export char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn); /* Client functions for changing SSI data */ faim_export int aim_ssi_addbuddy(aim_session_t *sess, aim_conn_t *conn, const char *name, const char *group, const char *alias, const char *comment, const char *smsnum, int needauth); diff -r 2b5fa2b2f4ae -r 0e4be672f516 src/protocols/oscar/ssi.c --- a/src/protocols/oscar/ssi.c Wed Jan 08 01:56:03 2003 +0000 +++ b/src/protocols/oscar/ssi.c Wed Jan 08 02:14:37 2003 +0000 @@ -412,7 +412,7 @@ * alias, or NULL if the buddy has no alias. You should free * this returned value! */ -faim_export char *aim_ssi_getalias(struct aim_ssi_item *list, char *gn, char *sn) +faim_export char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn) { struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY); if (cur) { @@ -459,12 +459,12 @@ * buddy ID#s, which makes things more efficient. I think. */ - /* Deletions */ + /* Additions */ if (!sess->ssi.pending) { - for (cur1=sess->ssi.official; cur1; cur1=cur1->next) { - if (!aim_ssi_itemlist_find(sess->ssi.local, cur1->gid, cur1->bid)) { + for (cur1=sess->ssi.local; cur1; cur1=cur1->next) { + if (!aim_ssi_itemlist_find(sess->ssi.official, cur1->gid, cur1->bid)) { new = (struct aim_ssi_tmp *)malloc(sizeof(struct aim_ssi_tmp)); - new->action = AIM_CB_SSI_DEL; + new->action = AIM_CB_SSI_ADD; new->ack = 0xffff; new->name = NULL; new->item = cur1; @@ -478,12 +478,12 @@ } } - /* Additions */ + /* Deletions */ if (!sess->ssi.pending) { - for (cur1=sess->ssi.local; cur1; cur1=cur1->next) { - if (!aim_ssi_itemlist_find(sess->ssi.official, cur1->gid, cur1->bid)) { + for (cur1=sess->ssi.official; cur1; cur1=cur1->next) { + if (!aim_ssi_itemlist_find(sess->ssi.local, cur1->gid, cur1->bid)) { new = (struct aim_ssi_tmp *)malloc(sizeof(struct aim_ssi_tmp)); - new->action = AIM_CB_SSI_ADD; + new->action = AIM_CB_SSI_DEL; new->ack = 0xffff; new->name = NULL; new->item = cur1; @@ -862,8 +862,8 @@ */ faim_export int aim_ssi_movebuddy(aim_session_t *sess, aim_conn_t *conn, const char *oldgn, const char *newgn, const char *sn) { + aim_ssi_addbuddy(sess, conn, sn, newgn, aim_ssi_getalias(sess->ssi.local, oldgn, sn), NULL, NULL, 0); aim_ssi_delbuddy(sess, conn, sn, oldgn); - aim_ssi_addbuddy(sess, conn, sn, newgn, NULL, NULL, NULL, 0); return 0; }