Chat room windows now created only after successful join

This commit is contained in:
James Booth
2014-04-21 00:37:04 +01:00
parent 9a55d8ad19
commit 2c15aba92a
17 changed files with 89 additions and 102 deletions

View File

@@ -260,7 +260,7 @@ _bookmark_handle_result(xmpp_conn_t * const conn,
room_jid = jid_create_from_bare_and_resource(jid, name);
if (!muc_room_is_active(room_jid->barejid)) {
presence_join_room(jid, name, NULL);
handle_bookmark_autojoin(jid);
muc_join_room(jid, name, NULL, TRUE);
}
jid_destroy(room_jid);
} else {

View File

@@ -283,7 +283,6 @@ _presence_join_room(char *room, char *nick, char * passwd)
xmpp_send(conn, presence);
xmpp_stanza_release(presence);
muc_join_room(jid->barejid, jid->resourcepart, passwd);
jid_destroy(jid);
}
@@ -342,11 +341,31 @@ _presence_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
char *id = xmpp_stanza_get_id(stanza);
char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
xmpp_stanza_t *error_stanza = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_ERROR);
xmpp_stanza_t *x = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_X);
char *xmlns = xmpp_stanza_get_ns(x);
char *type = NULL;
if (error_stanza != NULL) {
type = xmpp_stanza_get_attribute(error_stanza, STANZA_ATTR_TYPE);
}
// handle MUC join errors
if (g_strcmp0(xmlns, STANZA_NS_MUC) == 0) {
Jid *fulljid = jid_create(from);
char *error_cond = NULL;
xmpp_stanza_t *reason_st = xmpp_stanza_get_child_by_ns(error_stanza, STANZA_NS_STANZAS);
if (reason_st != NULL) {
error_cond = xmpp_stanza_get_name(reason_st);
}
if (error_cond == NULL) {
error_cond = "unknown";
}
log_info("Error joining room: %s, reason: %s", fulljid->barejid, error_cond);
handle_room_join_error(fulljid->barejid, error_cond);
return 1;
}
// stanza_get_error never returns NULL
char *err_msg = stanza_get_error_message(stanza);
@@ -676,7 +695,6 @@ _muc_user_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
// handle roster complete
} else if (!muc_get_roster_received(room)) {
handle_room_roster_complete(room);
}
// handle presence from room members

View File

@@ -124,6 +124,7 @@
#define STANZA_TEXT_XA "xa"
#define STANZA_TEXT_ONLINE "online"
#define STANZA_NS_STANZAS "urn:ietf:params:xml:ns:xmpp-stanzas"
#define STANZA_NS_CHATSTATES "http://jabber.org/protocol/chatstates"
#define STANZA_NS_MUC "http://jabber.org/protocol/muc"
#define STANZA_NS_MUC_USER "http://jabber.org/protocol/muc#user"