diff options
-rw-r--r-- | src/xmpp/message.c | 4 | ||||
-rw-r--r-- | src/xmpp/stanza.c | 7 | ||||
-rw-r--r-- | src/xmpp/stanza.h | 3 |
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); |