mcabber/mcabber/commands.c
changeset 1722 b18142457ca9
parent 1720 98d99485d276
child 1725 318c64ceb494
--- a/mcabber/mcabber/commands.c	Sun Feb 28 10:20:13 2010 +0100
+++ b/mcabber/mcabber/commands.c	Sun Feb 28 11:33:39 2010 +0100
@@ -3227,7 +3227,7 @@
 static void do_request(char *arg)
 {
   char **paramlst;
-  char *fjid, *type, *tmp;
+  char *fjid, *type;
   enum iqreq_type numtype = iqreq_none;
   char *jid_utf8 = NULL;
 
@@ -3290,9 +3290,15 @@
   if (fjid) {
     switch (numtype) {
       case iqreq_vcard:
-          // vCards requests are done to bare jid
-          tmp = strchr(fjid, JID_RESOURCE_SEPARATOR);
-          if (tmp) *tmp = '\0';
+          { // vCards requests are sent to the bare jid, except in MUC rooms
+            gchar *tmp = strchr(fjid, JID_RESOURCE_SEPARATOR);
+            if (tmp) {
+              gchar *bjid = jidtodisp(fjid);
+              if (!roster_find(bjid, jidsearch, ROSTER_TYPE_ROOM))
+                *tmp = '\0';
+              g_free(bjid);
+            }
+          }
       case iqreq_version:
       case iqreq_time:
       case iqreq_last: