diff options
-rw-r--r-- | protocols/jabber/jabber.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c index c1e55a78..74c870e7 100644 --- a/protocols/jabber/jabber.c +++ b/protocols/jabber/jabber.c @@ -199,6 +199,20 @@ static void jabber_login(account_t *acc) } } +static void jabber_xmlconsole_enable(struct im_connection *ic) +{ + struct jabber_data *jd = ic->proto_data; + const char *handle = JABBER_XMLCONSOLE_HANDLE; + bee_user_t *bu; + + jd->flags |= JFLAG_XMLCONSOLE; + + if (!(bu = bee_user_by_handle(ic->bee, ic, handle))) { + bu = bee_user_new(ic->bee, ic, handle, 0); + bu->flags |= BEE_USER_NOOTR; + } +} + /* Separate this from jabber_login() so we can do OAuth first if necessary. Putting this in io.c would probably be more correct. */ void jabber_connect(struct im_connection *ic) @@ -265,10 +279,7 @@ void jabber_connect(struct im_connection *ic) } if (set_getbool(&acc->set, "xmlconsole")) { - jd->flags |= JFLAG_XMLCONSOLE; - /* Shouldn't really do this at this stage already, maybe. But - I think this shouldn't break anything. */ - imcb_add_buddy(ic, JABBER_XMLCONSOLE_HANDLE, NULL); + jabber_xmlconsole_enable(ic); } if (set_getbool(&acc->set, "mail_notifications")) { @@ -473,11 +484,8 @@ static void jabber_set_away(struct im_connection *ic, char *state_txt, char *mes static void jabber_add_buddy(struct im_connection *ic, char *who, char *group) { - struct jabber_data *jd = ic->proto_data; - if (g_strcasecmp(who, JABBER_XMLCONSOLE_HANDLE) == 0) { - jd->flags |= JFLAG_XMLCONSOLE; - imcb_add_buddy(ic, JABBER_XMLCONSOLE_HANDLE, NULL); + jabber_xmlconsole_enable(ic); return; } |