about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-03-29 02:46:59 +0100
committerJames Booth <boothj5@gmail.com>2015-03-29 02:46:59 +0100
commit1917d4c095d3df705a79a92078bef060d50b6947 (patch)
tree99d627631944b0b36a474baa6d9b68e66c312e2a /src
parent714faeb2e6330a65de6eddbff48a12a6e6f00abc (diff)
downloadprofani-tty-1917d4c095d3df705a79a92078bef060d50b6947.tar.gz
Added password to direct invites
Diffstat (limited to 'src')
-rw-r--r--src/xmpp/message.c4
-rw-r--r--src/xmpp/stanza.c7
-rw-r--r--src/xmpp/stanza.h3
3 files changed, 10 insertions, 4 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index 1bb3bcdc..bdbd5907 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -206,10 +206,12 @@ message_send_invite(const char * const roomjid, const char * const contact,
     xmpp_ctx_t * const ctx = connection_get_ctx();
     xmpp_stanza_t *stanza;
 
+
     muc_member_type_t member_type = muc_member_type(roomjid);
     if (member_type == MUC_MEMBER_TYPE_PUBLIC) {
         log_debug("Sending direct invite to %s, for %s", contact, roomjid);
-        stanza = stanza_create_invite(ctx, roomjid, contact, reason);
+        char *password = muc_password(roomjid);
+        stanza = stanza_create_invite(ctx, roomjid, contact, reason, password);
     } else {
         log_debug("Sending mediated invite to %s, for %s", contact, roomjid);
         stanza = stanza_create_mediated_invite(ctx, roomjid, contact, reason);
diff --git a/src/xmpp/stanza.c b/src/xmpp/stanza.c
index 03567e31..84dcb797 100644
--- a/src/xmpp/stanza.c
+++ b/src/xmpp/stanza.c
@@ -414,7 +414,7 @@ stanza_create_roster_set(xmpp_ctx_t *ctx, const char * const id,
 
 xmpp_stanza_t *
 stanza_create_invite(xmpp_ctx_t *ctx, const char * const room,
-    const char * const contact, const char * const reason)
+    const char * const contact, const char * const reason, const char * const password)
 {
     xmpp_stanza_t *message, *x;
 
@@ -430,9 +430,12 @@ stanza_create_invite(xmpp_ctx_t *ctx, const char * const room,
     xmpp_stanza_set_ns(x, STANZA_NS_CONFERENCE);
 
     xmpp_stanza_set_attribute(x, STANZA_ATTR_JID, room);
-    if (reason != NULL) {
+    if (reason) {
         xmpp_stanza_set_attribute(x, STANZA_ATTR_REASON, reason);
     }
+    if (password) {
+        xmpp_stanza_set_attribute(x, STANZA_ATTR_PASSWORD, password);
+    }
 
     xmpp_stanza_add_child(message, x);
     xmpp_stanza_release(x);
diff --git a/src/xmpp/stanza.h b/src/xmpp/stanza.h
index 744bd7fb..89dbda57 100644
--- a/src/xmpp/stanza.h
+++ b/src/xmpp/stanza.h
@@ -135,6 +135,7 @@
 #define STANZA_ATTR_CATEGORY "category"
 #define STANZA_ATTR_REASON "reason"
 #define STANZA_ATTR_AUTOJOIN "autojoin"
+#define STANZA_ATTR_PASSWORD "password"
 
 #define STANZA_TEXT_AWAY "away"
 #define STANZA_TEXT_DND "dnd"
@@ -214,7 +215,7 @@ xmpp_stanza_t* stanza_create_disco_info_iq(xmpp_ctx_t *ctx, const char * const i
     const char * const to, const char * const node);
 
 xmpp_stanza_t* stanza_create_invite(xmpp_ctx_t *ctx, const char * const room,
-    const char * const contact, const char * const reason);
+    const char * const contact, const char * const reason, const char * const password);
 xmpp_stanza_t* stanza_create_mediated_invite(xmpp_ctx_t *ctx, const char * const room,
     const char * const contact, const char * const reason);