mcabber/src/jabglue.c
changeset 999 9687ecc59303
parent 998 f984baa9a789
child 1001 dff25377c11f
equal deleted inserted replaced
998:f984baa9a789 999:9687ecc59303
   684   jep22 = buddy_resource_jep22(buddy, NULL);
   684   jep22 = buddy_resource_jep22(buddy, NULL);
   685   if (jep22 && jep22->support == CHATSTATES_SUPPORT_OK) {
   685   if (jep22 && jep22->support == CHATSTATES_SUPPORT_OK) {
   686     jb_send_jep22_event(jid, chatstate);
   686     jb_send_jep22_event(jid, chatstate);
   687   }
   687   }
   688 #endif
   688 #endif
       
   689 }
       
   690 #endif
       
   691 
       
   692 //  chatstates_reset_probed(fulljid)
       
   693 // If the JEP has been probed for this contact, set it back to unknown so
       
   694 // that we probe it again.  The parameter must be a full jid (w/ resource).
       
   695 #if defined JEP0022 || defined JEP0085
       
   696 static void chatstates_reset_probed(const char *fulljid)
       
   697 {
       
   698   char *rname, *barejid;
       
   699   GSList *sl_buddy;
       
   700   struct jep0085 *jep85;
       
   701   struct jep0022 *jep22;
       
   702 
       
   703   rname = strchr(fulljid, JID_RESOURCE_SEPARATOR);
       
   704   if (!rname++)
       
   705     return;
       
   706 
       
   707   barejid = jidtodisp(fulljid);
       
   708   sl_buddy = roster_find(barejid, jidsearch, ROSTER_TYPE_USER);
       
   709   g_free(barejid);
       
   710 
       
   711   if (!sl_buddy)
       
   712     return;
       
   713 
       
   714   jep85 = buddy_resource_jep85(sl_buddy->data, rname);
       
   715   jep22 = buddy_resource_jep22(sl_buddy->data, rname);
       
   716 
       
   717   if (jep85 && jep85->support == CHATSTATES_SUPPORT_PROBED)
       
   718     jep85->support = CHATSTATES_SUPPORT_UNKNOWN;
       
   719   if (jep22 && jep22->support == CHATSTATES_SUPPORT_PROBED)
       
   720     jep22->support = CHATSTATES_SUPPORT_UNKNOWN;
   689 }
   721 }
   690 #endif
   722 #endif
   691 
   723 
   692 //  jb_subscr_send_auth(jid)
   724 //  jb_subscr_send_auth(jid)
   693 // Allow jid to receive our presence updates
   725 // Allow jid to receive our presence updates
  1686   timestamp = xml_get_timestamp(xmldata);
  1718   timestamp = xml_get_timestamp(xmldata);
  1687 
  1719 
  1688   if (type && !strcmp(type, TMSG_ERROR)) {
  1720   if (type && !strcmp(type, TMSG_ERROR)) {
  1689     if ((x = xmlnode_get_tag(xmldata, TMSG_ERROR)) != NULL)
  1721     if ((x = xmlnode_get_tag(xmldata, TMSG_ERROR)) != NULL)
  1690       display_server_error(x);
  1722       display_server_error(x);
       
  1723 #if defined JEP0022 || defined JEP0085
       
  1724     // If the JEP85/22 support is probed, set it back to unknown so that
       
  1725     // we probe it again.
       
  1726     chatstates_reset_probed(from);
       
  1727 #endif
  1691   }
  1728   }
  1692   if (from && body)
  1729   if (from && body)
  1693     gotmessage(type, from, body, enc, timestamp);
  1730     gotmessage(type, from, body, enc, timestamp);
  1694   g_free(tmp);
  1731   g_free(tmp);
  1695 }
  1732 }