diff options
author | dequis <dx@dxzone.com.ar> | 2016-09-25 00:07:25 -0300 |
---|---|---|
committer | dequis <dx@dxzone.com.ar> | 2016-09-25 00:07:25 -0300 |
commit | 1a8875ffaae873853fd8537cdce43e35e9889266 (patch) | |
tree | ed07853842a13e1ab5d5064f73f40fd493ae89ca /lib/ssl_openssl.c | |
parent | 985d66d3f99046583175fe44e125e54b666f3c51 (diff) |
purple: Fix another issue where /join results in two channels
Follow up to a3019499665384a3dcbbc11016d256e6d4dcd26c (which actually
made things worse than before for this particular case - found it by
bisecting)
This affected skypeweb and hangouts, maybe others.
Sometimes serv_join_chat() results in a call chain like this
(outermost frame first)
1. purple_chat_join
2. serv_join_chat
3. (the join_chat function of the prpl)
4. serv_got_joined_chat
5. purple_conversation_new
6. prplcb_conv_new
The last one tries to find a struct groupchat by name (that's the code
from the referenced commit). If it doesn't exist, it creates a new one.
This usually isn't an issue because the 4th step is done asynchronously,
and a groupchat is created at the end of purple_chat_join. If it's not,
you end up with two groupchats, which can lead to other nasty issues.
This moves the creation of the groupchat right before serv_join_chat().
That way, it always exists even if the conversation is created
immediately.
Diffstat (limited to 'lib/ssl_openssl.c')
0 files changed, 0 insertions, 0 deletions