diff options
-rw-r--r-- | protocols/purple/purple.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c index 6c8ddf0d..374b826b 100644 --- a/protocols/purple/purple.c +++ b/protocols/purple/purple.c @@ -722,6 +722,7 @@ struct groupchat *purple_chat_join(struct im_connection *ic, const char *room, c PurplePluginProtocolInfo *pi = prpl->info->extra_info; GHashTable *chat_hash; PurpleConversation *conv; + struct groupchat *gc; GList *info, *l; if (!pi->chat_info || !pi->chat_info_defaults || @@ -755,11 +756,14 @@ struct groupchat *purple_chat_join(struct im_connection *ic, const char *room, c g_list_free(info); + /* do this before serv_join_chat to handle cases where prplcb_conv_new is called immediately (not async) */ + gc = imcb_chat_new(ic, room); + serv_join_chat(purple_account_get_connection(pd->account), chat_hash); g_hash_table_destroy(chat_hash); - return imcb_chat_new(ic, room); + return gc; } void purple_chat_list(struct im_connection *ic, const char *server) |