diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-05-09 12:26:57 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-05-09 12:26:57 +0100 |
commit | e5abfd413a797b268db0b107d0748eb7e40da431 (patch) | |
tree | 21a690353186830332d145fce1748103b5f0af83 | |
parent | bd5eee34fd1495820fb8440d515cbc86e8d912b2 (diff) |
Safety check for yesterday's fixes: Double-check that a groupchat struct
isn't claimed already.
-rw-r--r-- | protocols/msn/sb.c | 7 | ||||
-rw-r--r-- | protocols/oscar/oscar.c | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/protocols/msn/sb.c b/protocols/msn/sb.c index 626cc83e..bfdbfe64 100644 --- a/protocols/msn/sb.c +++ b/protocols/msn/sb.c @@ -232,13 +232,16 @@ int msn_sb_sendmessage( struct msn_switchboard *sb, char *text ) struct groupchat *msn_sb_to_chat( struct msn_switchboard *sb ) { struct im_connection *ic = sb->ic; + struct groupchat *c = NULL; char buf[1024]; /* Create the groupchat structure. */ g_snprintf( buf, sizeof( buf ), "MSN groupchat session %d", sb->session ); if( sb->who ) - sb->chat = bee_chat_by_title( ic->bee, ic, sb->who ); - if( sb->chat == NULL ) + c = bee_chat_by_title( ic->bee, ic, sb->who ); + if( c && !msn_sb_by_chat( c ) ) + sb->chat = c; + else sb->chat = imcb_chat_new( ic, buf ); /* Populate the channel. */ diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 2d07f912..94dd876e 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -786,6 +786,7 @@ static int gaim_parse_logout(aim_session_t *sess, aim_frame_t *fr, ...) { static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) { struct im_connection *ic = sess->aux_data; struct chat_connection *chatcon; + struct groupchat *c = NULL; static int id = 1; aim_conn_addhandler(sess, fr->conn, 0x000e, 0x0001, gaim_parse_genericerr, 0); @@ -798,8 +799,11 @@ static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) { chatcon = find_oscar_chat_by_conn(ic, fr->conn); chatcon->id = id; - chatcon->cnv = bee_chat_by_title(ic->bee, ic, chatcon->show); - if (chatcon->cnv == NULL) + + c = bee_chat_by_title(ic->bee, ic, chatcon->show); + if (c && !c->data) + chatcon->cnv = c; + else chatcon->cnv = imcb_chat_new(ic, chatcon->show); chatcon->cnv->data = chatcon; |