Mercurial > pidgin
changeset 4238:0e4be672f516
[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 <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 08 Jan 2003 02:14:37 +0000 |
parents | 2b5fa2b2f4ae |
children | 9b40fa57a8ed |
files | src/protocols/oscar/aim.h src/protocols/oscar/ssi.c |
diffstat | 2 files changed, 11 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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);
--- 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; }