diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index dc9b1fb0..e8b80534 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -3017,17 +3017,14 @@ cmd_blocked(ProfWin* window, const char* const command, gchar** args) if (g_strcmp0(args[0], "add") == 0) { char* jid = args[1]; - // /blocked add jid or /blocked add (in window) - if (g_strv_length(args) < 3) { - if (jid == NULL && (window->type == WIN_CHAT)) { - ProfChatWin* chatwin = (ProfChatWin*)window; - jid = chatwin->barejid; - } + if (jid == NULL && (window->type == WIN_CHAT)) { + ProfChatWin* chatwin = (ProfChatWin*)window; + jid = chatwin->barejid; + } - if (jid == NULL) { - cons_bad_cmd_usage(command); - return TRUE; - } + if (jid == NULL) { + cons_bad_cmd_usage(command); + return TRUE; } gboolean res = blocked_add(jid, br, NULL); @@ -3053,6 +3050,20 @@ cmd_blocked(ProfWin* window, const char* const command, gchar** args) } if (strncmp(args[0], "report-", 7) == 0) { + char *jid; + char *msg = NULL; + guint argn = g_strv_length(args); + + if (argn >= 2) { + jid = args[1]; + } else { + cons_bad_cmd_usage(command); + } + + if (argn >= 3) { + msg = args[2]; + } + if (args[1] && g_strcmp0(args[0], "report-abuse") == 0) { br = BLOCKED_REPORT_ABUSE; } else if (args[1] && g_strcmp0(args[0], "report-spam") == 0) { @@ -3067,11 +3078,11 @@ cmd_blocked(ProfWin* window, const char* const command, gchar** args) return TRUE; } - // args[3] is an optional message - gboolean res = blocked_add(args[1], br, args[3]); + gboolean res = blocked_add(jid, br, msg); if (!res) { cons_show("User %s already blocked.", args[1]); } + return TRUE; } GList* blocked = blocked_list(); diff --git a/src/xmpp/blocking.c b/src/xmpp/blocking.c index b16f95cb..7c55b1bf 100644 --- a/src/xmpp/blocking.c +++ b/src/xmpp/blocking.c @@ -132,6 +132,7 @@ blocked_add(char* jid, blocked_report reportkind, const char* const message) if (reportkind != BLOCKED_NO_REPORT) { xmpp_stanza_t* report = xmpp_stanza_new(ctx); xmpp_stanza_set_name(report, STANZA_NAME_REPORT); + xmpp_stanza_set_ns(report, STANZA_NS_REPORTING); if (reportkind == BLOCKED_REPORT_ABUSE) { xmpp_stanza_set_attribute(report, STANZA_ATTR_REASON, STANZA_REPORTING_ABUSE); } else { diff --git a/src/xmpp/stanza.h b/src/xmpp/stanza.h index 47560ce0..52008b1c 100644 --- a/src/xmpp/stanza.h +++ b/src/xmpp/stanza.h @@ -243,6 +243,7 @@ #define STANZA_NS_VOICEREQUEST "http://jabber.org/protocol/muc#request" #define STANZA_NS_JINGLE_MESSAGE "urn:xmpp:jingle-message:0" #define STANZA_NS_JINGLE_RTP "urn:xmpp:jingle:apps:rtp:1" +#define STANZA_NS_REPORTING "urn:xmpp:reporting:1" #define STANZA_DATAFORM_SOFTWARE "urn:xmpp:dataforms:softwareinfo"