aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/msn/msn.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/msn/msn.c')
-rw-r--r--protocols/msn/msn.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c
index 0b9cffc2..4de2d822 100644
--- a/protocols/msn/msn.c
+++ b/protocols/msn/msn.c
@@ -67,6 +67,7 @@ static void msn_login( account_t *acc )
md->ic = ic;
md->away_state = msn_away_state_list;
+ md->domaintree = g_tree_new( msn_domaintree_cmp );
msn_connections = g_slist_append( msn_connections, ic );
}
@@ -106,6 +107,9 @@ static void msn_logout( struct im_connection *ic )
g_free( md->tokens[1] );
g_free( md->lock_key );
+ g_tree_destroy( md->domaintree );
+ md->domaintree = NULL;
+
while( md->grpq )
{
struct msn_groupadd *ga = md->grpq->data;
@@ -335,11 +339,15 @@ static char *set_eval_display_name( set_t *set, char *value )
static void msn_buddy_data_add( bee_user_t *bu )
{
+ struct msn_data *md = bu->ic->proto_data;
bu->data = g_new0( struct msn_buddy_data, 1 );
+ g_tree_insert( md->domaintree, bu->handle, bu );
}
static void msn_buddy_data_free( bee_user_t *bu )
{
+ struct msn_data *md = bu->ic->proto_data;
+ g_tree_remove( md->domaintree, bu->handle );
g_free( bu->data );
}