From: Art Cancro Date: Sat, 14 Feb 2015 22:26:32 +0000 (-0500) Subject: Fixed the remaining bugs in roster iq replies. X-Git-Tag: v9.01~19 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=2dea277848e779e7a923c9b4c8b98414d41abbda Fixed the remaining bugs in roster iq replies. --- diff --git a/citadel/modules/xmpp/xmpp_presence.c b/citadel/modules/xmpp/xmpp_presence.c index 3a06c68f7..d716d4b1a 100644 --- a/citadel/modules/xmpp/xmpp_presence.c +++ b/citadel/modules/xmpp/xmpp_presence.c @@ -1,7 +1,7 @@ /* * Handle XMPP presence exchanges * - * Copyright (c) 2007-2010 by Art Cancro + * Copyright (c) 2007-2015 by Art Cancro and citadel.org * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -148,7 +148,7 @@ void xmpp_destroy_buddy(char *presence_jid, int aggressively) { ); } - // FIXME ... we should implement xmpp_indicate_nonpresence so we can use it elsewhere + // note: we should implement xmpp_indicate_nonpresence so we can use it elsewhere /* Do an unsolicited roster update that deletes the contact. */ cprintf("", @@ -310,14 +310,6 @@ void xmpp_store_mortuary(HashList *mortuary) { } DeleteHashPos(&HashPos); - /* FIXME temp crap - StrBufAppendPrintf(themsg, "foo@bar.com\n"); - StrBufAppendPrintf(themsg, "baz@quux.com\n"); - StrBufAppendPrintf(themsg, "haha%c\n", 1); - StrBufAppendPrintf(themsg, "baaaz@quux.com\n"); - StrBufAppendPrintf(themsg, "baaaz@quuuuuux.com\n"); - */ - /* Delete the old mortuary */ CtdlDeleteMessages(USERCONFIGROOM, NULL, 0, XMPPMORTUARY); diff --git a/citadel/modules/xmpp/xmpp_query_namespace.c b/citadel/modules/xmpp/xmpp_query_namespace.c index 8482b4b81..df7671798 100644 --- a/citadel/modules/xmpp/xmpp_query_namespace.c +++ b/citadel/modules/xmpp/xmpp_query_namespace.c @@ -79,7 +79,7 @@ void xmpp_iq_roster_query(void) int nContexts, i; syslog(LOG_DEBUG, "Roster push!"); - cprintf(""); + cprintf(""); cptr = CtdlGetContextArray(&nContexts); if (cptr) { for (i=0; iclient_jid, sizeof(dom)); // result stanza is "from" - it wants the - if (IsEmptyStr(dom)) { // same domain that the user's jid is in. - safestrncpy(dom, XMPP->server_name, sizeof(dom)); + if (!strcasecmp(query_xmlns, "jabber:iq:roster:query")) { + reply_must_be_from_my_jid = 1; } - char *at = strrchr(dom, '@'); - if (at) { - strcpy(dom, ++at); + + char dom[1024]; // client is expecting to see the reply + if (reply_must_be_from_my_jid) { // coming "from" the user's jid + safestrncpy(dom, XMPP->client_jid, sizeof(dom)); + char *slash = strchr(dom, '/'); + if (slash) { + *slash = 0; + } } - char *slash = strchr(dom, '/'); - if (slash) { - *slash = 0; + else { + safestrncpy(dom, XMPP->client_jid, sizeof(dom)); // client is expecting to see the reply + if (IsEmptyStr(dom)) { // coming "from" the domain of the user's jid + safestrncpy(dom, XMPP->server_name, sizeof(dom)); + } + char *at = strrchr(dom, '@'); + if (at) { + strcpy(dom, ++at); + } + char *slash = strchr(dom, '/'); + if (slash) { + *slash = 0; + } } if (supported_namespace) {