From a3d6427d343e5f3de206272a664a126fea1af6bb Mon Sep 17 00:00:00 2001 From: VMiklos Date: Mon, 20 Aug 2007 19:25:32 +0200 Subject: bugfix: we can't join to &bitlbee twice --- skype/skype.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'skype/skype.c') diff --git a/skype/skype.c b/skype/skype.c index 3dc96719..e1837063 100644 --- a/skype/skype.c +++ b/skype/skype.c @@ -14,6 +14,7 @@ struct skype_data { struct im_connection *ic; + char *username; int fd; char *txq; int tx_len; @@ -107,14 +108,17 @@ static gboolean skype_read_callback( gpointer data, gint fd, b_input_condition c status++; ptr = strchr(++user, ' '); *ptr = '\0'; - ptr = g_strdup_printf("%s@skype.com", user); - imcb_add_buddy(ic, ptr, NULL); - if(strcmp(status, "OFFLINE") != 0) - flags |= OPT_LOGGED_IN; - if(strcmp(status, "ONLINE") != 0 && strcmp(status, "SKYPEME") != 0) - flags |= OPT_AWAY; - imcb_buddy_status(ic, ptr, flags, NULL, NULL); - g_free(ptr); + if(strcmp(user, sd->username) != 0) + { + ptr = g_strdup_printf("%s@skype.com", user); + imcb_add_buddy(ic, ptr, NULL); + if(strcmp(status, "OFFLINE") != 0) + flags |= OPT_LOGGED_IN; + if(strcmp(status, "ONLINE") != 0 && strcmp(status, "SKYPEME") != 0) + flags |= OPT_AWAY; + imcb_buddy_status(ic, ptr, flags, NULL, NULL); + g_free(ptr); + } } else if(!strncmp(line, "CHATMESSAGE ", 12)) { @@ -220,6 +224,7 @@ static void skype_login( account_t *acc ) /*imcb_add_buddy(ic, "test@skype.com", NULL); imcb_buddy_status(ic, "test@skype.com", OPT_LOGGED_IN, NULL, NULL); imcb_buddy_msg(ic, "test@skype.com", "test from skype plugin", 0, 0);*/ + sd->username = g_strdup( acc->user ); sd->ic = ic; } @@ -227,6 +232,7 @@ static void skype_login( account_t *acc ) static void skype_logout( struct im_connection *ic ) { struct skype_data *sd = ic->proto_data; + g_free(sd->username); g_free(sd); } -- cgit v1.2.3