PGP: Do not sign presence messages to chatrooms
We do not sign auto-away messages either.
--- a/mcabber/src/commands.c Sun Nov 26 20:08:18 2006 +0100
+++ b/mcabber/src/commands.c Sun Nov 26 20:24:34 2006 +0100
@@ -699,7 +699,7 @@
if (recipient && !msg)
msg = "";
- jb_setstatus(st, recipient, msg);
+ jb_setstatus(st, recipient, msg, FALSE);
free_arg_lst(paramlst);
}
@@ -1951,7 +1951,7 @@
roomid = g_strdup_printf("%s/%s", buddy_getjid(bud), nickname);
desc = to_utf8(arg);
- jb_setstatus(offline, roomid, desc);
+ jb_setstatus(offline, roomid, desc, TRUE);
g_free(desc);
g_free(roomid);
}
--- a/mcabber/src/jabglue.c Sun Nov 26 20:08:18 2006 +0100
+++ b/mcabber/src/jabglue.c Sun Nov 26 20:24:34 2006 +0100
@@ -136,7 +136,7 @@
if (online) {
// Announce it to everyone else
- jb_setstatus(offline, NULL, "");
+ jb_setstatus(offline, NULL, "", FALSE);
// End the XML flow
jb_send_raw("</stream:stream>");
/*
@@ -337,7 +337,7 @@
if (!nickname) return;
to = g_strdup_printf("%s/%s", jid, nickname);
- jb_setstatus(pres->st, to, pres->msg);
+ jb_setstatus(pres->st, to, pres->msg, TRUE);
g_free(to);
}
@@ -403,7 +403,8 @@
return x;
}
-void jb_setstatus(enum imstatus st, const char *recipient, const char *msg)
+void jb_setstatus(enum imstatus st, const char *recipient, const char *msg,
+ int do_not_sign)
{
xmlnode x;
@@ -433,7 +434,7 @@
const char *s_msg = (st != invisible ? msg : NULL);
x = presnew(st, recipient, s_msg);
#ifdef HAVE_GPGME
- if (s_msg && *s_msg && gpg_enabled()) {
+ if (!do_not_sign && s_msg && *s_msg && gpg_enabled()) {
char *signature = gpg_sign(s_msg);
if (signature) {
xmlnode y;
@@ -488,7 +489,7 @@
// Set previous status. This wrapper function is used after a disconnection.
inline void jb_setprevstatus(void)
{
- jb_setstatus(mywantedstatus, NULL, mystatusmsg);
+ jb_setstatus(mywantedstatus, NULL, mystatusmsg, FALSE);
}
// new_msgid()
@@ -1525,7 +1526,7 @@
g_free(mbuf);
// Send back an unavailable packet
- jb_setstatus(offline, jid, "");
+ jb_setstatus(offline, jid, "", TRUE);
// MUC
// Make sure this is a room (it can be a conversion user->room)
@@ -1804,7 +1805,7 @@
scr_WriteIncomingMessage(roomjid, mbuf, 0, HBB_PREFIX_INFO);
g_free(mbuf);
// Send back an unavailable packet
- jb_setstatus(offline, roomjid, "");
+ jb_setstatus(offline, roomjid, "", TRUE);
scr_DrawRoster();
return;
}
--- a/mcabber/src/jabglue.h Sun Nov 26 20:08:18 2006 +0100
+++ b/mcabber/src/jabglue.h Sun Nov 26 20:24:34 2006 +0100
@@ -58,7 +58,8 @@
void jb_updatebuddy(const char *jid, const char *name, const char *group);
inline enum imstatus jb_getstatus(void);
inline const char *jb_getstatusmsg(void);
-void jb_setstatus(enum imstatus st, const char *recipient, const char *msg);
+void jb_setstatus(enum imstatus st, const char *recipient, const char *msg,
+ int do_not_sign);
inline void jb_setprevstatus(void);
void jb_send_msg(const char *jid, const char *text, int type,
const char *subject, const char *id);
--- a/mcabber/src/screen.c Sun Nov 26 20:08:18 2006 +0100
+++ b/mcabber/src/screen.c Sun Nov 26 20:24:34 2006 +0100
@@ -1387,10 +1387,10 @@
msg = prevmsg;
if (prevmsg)
oldmsg = g_strdup(prevmsg);
- jb_setstatus(away, NULL, msg);
+ jb_setstatus(away, NULL, msg, TRUE);
} else {
// Back
- jb_setstatus(oldstatus, NULL, (oldmsg ? oldmsg : ""));
+ jb_setstatus(oldstatus, NULL, (oldmsg ? oldmsg : ""), FALSE);
if (oldmsg) {
g_free(oldmsg);
oldmsg = NULL;