diff options
author | James Booth <boothj5@gmail.com> | 2014-04-20 22:02:55 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2014-04-20 22:02:55 +0100 |
commit | 9a55d8ad193e79c38d59c9448330132f1c874bca (patch) | |
tree | 05dde8cae2a038c6887f8c78f0f845d3d90e3a9a /src | |
parent | e830e2a06a43b03377c9bb862b1843aec91cb366 (diff) | |
download | profani-tty-9a55d8ad193e79c38d59c9448330132f1c874bca.tar.gz |
Store password with room
Diffstat (limited to 'src')
-rw-r--r-- | src/muc.c | 9 | ||||
-rw-r--r-- | src/muc.h | 2 | ||||
-rw-r--r-- | src/xmpp/presence.c | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/muc.c b/src/muc.c index 9ee94755..11a707a4 100644 --- a/src/muc.c +++ b/src/muc.c @@ -32,6 +32,7 @@ typedef struct _muc_room_t { char *room; // e.g. test@conference.server char *nick; // e.g. Some User + char *password; char *subject; gboolean pending_nick_change; GHashTable *roster; @@ -125,7 +126,7 @@ muc_clear_invites(void) * Join the chat room with the specified nickname */ void -muc_join_room(const char * const room, const char * const nick) +muc_join_room(const char * const room, const char * const nick, const char * const password) { if (rooms == NULL) { rooms = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, @@ -135,6 +136,11 @@ muc_join_room(const char * const room, const char * const nick) ChatRoom *new_room = malloc(sizeof(ChatRoom)); new_room->room = strdup(room); new_room->nick = strdup(nick); + if (password != NULL) { + new_room->password = strdup(password); + } else { + new_room->password = NULL; + } new_room->subject = NULL; new_room->roster = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)p_contact_free); @@ -469,6 +475,7 @@ _free_room(ChatRoom *room) free(room->room); free(room->nick); free(room->subject); + free(room->password); if (room->roster != NULL) { g_hash_table_remove_all(room->roster); } diff --git a/src/muc.h b/src/muc.h index e28e048a..fc8c4668 100644 --- a/src/muc.h +++ b/src/muc.h @@ -31,7 +31,7 @@ void muc_init(void); void muc_close(void); -void muc_join_room(const char * const room, const char * const nick); +void muc_join_room(const char * const room, const char * const nick, const char * const password); void muc_leave_room(const char * const room); gboolean muc_room_is_active(const char * const room); GList* muc_get_active_room_list(void); diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index 46467b2e..433c05f3 100644 --- a/src/xmpp/presence.c +++ b/src/xmpp/presence.c @@ -283,7 +283,7 @@ _presence_join_room(char *room, char *nick, char * passwd) xmpp_send(conn, presence); xmpp_stanza_release(presence); - muc_join_room(jid->barejid, jid->resourcepart); + muc_join_room(jid->barejid, jid->resourcepart, passwd); jid_destroy(jid); } |