diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-25 01:26:33 +0200 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-25 01:26:33 +0200 |
commit | 8b0121711986494410bb9d224e90a5dab1dcc601 (patch) | |
tree | d95384e6b7735f9523eff72de90feabcc804d90c /protocols/msn/msn.c | |
parent | f1f7b5e5d7f99419fc9b1a3d3ee3bce6e8602b10 (diff) |
MSN supports having people in multiple groups and BitlBee does not. When
moving people between groups, make sure they *are* removed from their old
group.
Diffstat (limited to 'protocols/msn/msn.c')
-rw-r--r-- | protocols/msn/msn.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c index 8b4f1a81..fe1d16ac 100644 --- a/protocols/msn/msn.c +++ b/protocols/msn/msn.c @@ -198,12 +198,16 @@ static void msn_get_info(struct im_connection *ic, char *who) static void msn_add_buddy( struct im_connection *ic, char *who, char *group ) { + struct bee_user *bu = bee_user_by_handle( ic->bee, ic, who ); + msn_buddy_list_add( ic, "FL", who, who, group ); + if( bu && bu->group ) + msn_buddy_list_remove( ic, "FL", who, bu->group->name ); } static void msn_remove_buddy( struct im_connection *ic, char *who, char *group ) { - msn_buddy_list_remove( ic, "FL", who ); + msn_buddy_list_remove( ic, "FL", who, NULL ); } static void msn_chat_msg( struct groupchat *c, char *message, int flags ) @@ -273,7 +277,7 @@ static void msn_add_permit( struct im_connection *ic, char *who ) static void msn_rem_permit( struct im_connection *ic, char *who ) { - msn_buddy_list_remove( ic, "AL", who ); + msn_buddy_list_remove( ic, "AL", who, NULL ); } static void msn_add_deny( struct im_connection *ic, char *who ) @@ -291,7 +295,7 @@ static void msn_add_deny( struct im_connection *ic, char *who ) static void msn_rem_deny( struct im_connection *ic, char *who ) { - msn_buddy_list_remove( ic, "BL", who ); + msn_buddy_list_remove( ic, "BL", who, NULL ); } static int msn_send_typing( struct im_connection *ic, char *who, int typing ) |