about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/command/commands.c4
-rw-r--r--src/ui/core.c6
-rw-r--r--src/ui/ui.h2
-rw-r--r--src/xmpp/bookmark.c4
-rw-r--r--src/xmpp/presence.c6
-rw-r--r--src/xmpp/xmpp.h2
6 files changed, 12 insertions, 12 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index 7738e7f2..e6d575f5 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1659,9 +1659,9 @@ cmd_join(gchar **args, struct cmd_help_t help)
     Jid *room_jid = jid_create_from_bare_and_resource(room, nick);
 
     if (!muc_room_is_active(room_jid)) {
-        presence_join_room(room_jid, passwd);
+        presence_join_room(room, nick, passwd);
     }
-    ui_room_join(room_jid);
+    ui_room_join(room);
     muc_remove_invite(room);
 
     jid_destroy(room_arg);
diff --git a/src/ui/core.c b/src/ui/core.c
index 740e5f6f..ef8ace73 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -1083,14 +1083,14 @@ _ui_outgoing_msg(const char * const from, const char * const to,
 }
 
 static void
-_ui_room_join(Jid *jid)
+_ui_room_join(char *room)
 {
-    ProfWin *window = wins_get_by_recipient(jid->barejid);
+    ProfWin *window = wins_get_by_recipient(room);
     int num = 0;
 
     // create new window
     if (window == NULL) {
-        window = wins_new(jid->barejid, WIN_MUC);
+        window = wins_new(room, WIN_MUC);
     }
 
     num = wins_get_num(window);
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 77d081ab..16657564 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -103,7 +103,7 @@ void (*ui_disconnected)(void);
 void (*ui_recipient_gone)(const char * const barejid);
 void (*ui_outgoing_msg)(const char * const from, const char * const to,
     const char * const message);
-void (*ui_room_join)(Jid *jid);
+void (*ui_room_join)(char *room);
 void (*ui_room_roster)(const char * const room, GList *roster, const char * const presence);
 void (*ui_room_history)(const char * const room_jid, const char * const nick,
     GTimeVal tv_stamp, const char * const message);
diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c
index 27a768be..5c27e2cf 100644
--- a/src/xmpp/bookmark.c
+++ b/src/xmpp/bookmark.c
@@ -301,9 +301,9 @@ _bookmark_handle_result(xmpp_conn_t * const conn,
                 log_debug("Autojoin %s with nick=%s", jid, name);
                 room_jid = jid_create_from_bare_and_resource(jid, name);
                 if (!muc_room_is_active(room_jid)) {
-                    presence_join_room(room_jid, NULL);
+                    presence_join_room(jid, name, NULL);
                     /* TODO: this should be removed after fixing #195 */
-                    ui_room_join(room_jid);
+                    ui_room_join(jid);
                 }
                 jid_destroy(room_jid);
             } else {
diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c
index 3098e6e4..74fff27a 100644
--- a/src/xmpp/presence.c
+++ b/src/xmpp/presence.c
@@ -260,10 +260,9 @@ _send_room_presence(xmpp_conn_t *conn, xmpp_stanza_t *presence)
 }
 
 static void
-_presence_join_room(Jid *jid, char * passwd)
+_presence_join_room(char *room, char *nick, char * passwd)
 {
-    assert(jid != NULL);
-    assert(jid->fulljid != NULL);
+    Jid *jid = jid_create_from_bare_and_resource(room, nick);
 
     log_debug("Sending room join presence to: %s", jid->fulljid);
     xmpp_ctx_t *ctx = connection_get_ctx();
@@ -285,6 +284,7 @@ _presence_join_room(Jid *jid, char * passwd)
     xmpp_stanza_release(presence);
 
     muc_join_room(jid->barejid, jid->resourcepart);
+    jid_destroy(jid);
 }
 
 static void
diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h
index 3ef9c93c..c8feb68e 100644
--- a/src/xmpp/xmpp.h
+++ b/src/xmpp/xmpp.h
@@ -114,7 +114,7 @@ GSList* (*presence_get_subscription_requests)(void);
 gint (*presence_sub_request_count)(void);
 void (*presence_reset_sub_request_search)(void);
 char * (*presence_sub_request_find)(char * search_str);
-void (*presence_join_room)(Jid *jid, char * passwd);
+void (*presence_join_room)(char *room, char *nick, char * passwd);
 void (*presence_change_room_nick)(const char * const room, const char * const nick);
 void (*presence_leave_chat_room)(const char * const room_jid);
 void (*presence_update)(resource_presence_t status, const char * const msg,