--- a/mcabber/mcabber/commands.c Thu Feb 25 21:21:43 2010 +0100
+++ b/mcabber/mcabber/commands.c Thu Feb 25 21:26:15 2010 +0100
@@ -3227,7 +3227,7 @@
static void do_request(char *arg)
{
char **paramlst;
- char *fjid, *type;
+ char *fjid, *type, *tmp;
enum iqreq_type numtype = iqreq_none;
char *jid_utf8 = NULL;
@@ -3289,10 +3289,13 @@
if (fjid) {
switch (numtype) {
+ case iqreq_vcard:
+ // vCards requests are done to bare jid
+ tmp = strchr(fjid, JID_RESOURCE_SEPARATOR);
+ if (tmp) *tmp = '\0';
case iqreq_version:
case iqreq_time:
case iqreq_last:
- case iqreq_vcard:
case iqreq_ping:
xmpp_request(fjid, numtype);
break;
--- a/mcabber/mcabber/xmpp.c Thu Feb 25 21:21:43 2010 +0100
+++ b/mcabber/mcabber/xmpp.c Thu Feb 25 21:26:15 2010 +0100
@@ -254,8 +254,9 @@
} else
return;
- if (strchr(fjid, JID_RESOURCE_SEPARATOR)) {
+ if (strchr(fjid, JID_RESOURCE_SEPARATOR) || reqtype == iqreq_vcard) {
// This is a full JID
+ // Or a vCard request, resource should have been stripped before
xmpp_iq_request(fjid, xmlns);
scr_LogPrint(LPRINT_NORMAL, "Sent %s request to <%s>", strreqtype, fjid);
return;