mcabber/mcabber/xmpp.c
changeset 1998 41667bc02883
parent 1994 024bdd1c6418
child 1999 51f032d5ca22
equal deleted inserted replaced
1997:555e342556e7 1998:41667bc02883
   322   char *rname, *barejid;
   322   char *rname, *barejid;
   323   GSList *sl_buddy;
   323   GSList *sl_buddy;
   324 #endif
   324 #endif
   325 #if defined XEP0022 || defined XEP0085
   325 #if defined XEP0022 || defined XEP0085
   326   LmMessageNode *event;
   326   LmMessageNode *event;
       
   327   struct xep0085 *xep85 = NULL;
       
   328 #if defined XEP0022
   327   guint use_xep85 = 0;
   329   guint use_xep85 = 0;
   328   struct xep0085 *xep85 = NULL;
   330 #endif
   329 #endif
   331 #endif
   330   gchar *enc = NULL;
   332   gchar *enc = NULL;
   331 
   333 
   332   if (encrypted)
   334   if (encrypted)
   333     *encrypted = 0;
   335     *encrypted = 0;
   454                 xep85->support == CHATSTATES_SUPPORT_UNKNOWN)) {
   456                 xep85->support == CHATSTATES_SUPPORT_UNKNOWN)) {
   455     event = lm_message_node_add_child(x->node, "active", NULL);
   457     event = lm_message_node_add_child(x->node, "active", NULL);
   456     lm_message_node_set_attribute(event, "xmlns", NS_CHATSTATES);
   458     lm_message_node_set_attribute(event, "xmlns", NS_CHATSTATES);
   457     if (xep85->support == CHATSTATES_SUPPORT_UNKNOWN)
   459     if (xep85->support == CHATSTATES_SUPPORT_UNKNOWN)
   458       xep85->support = CHATSTATES_SUPPORT_PROBED;
   460       xep85->support = CHATSTATES_SUPPORT_PROBED;
       
   461 #ifdef XEP0022
   459     else
   462     else
   460       use_xep85 = 1;
   463       use_xep85 = 1;
       
   464 #endif
   461     xep85->last_state_sent = ROSTER_EVENT_ACTIVE;
   465     xep85->last_state_sent = ROSTER_EVENT_ACTIVE;
   462   }
   466   }
   463 #endif
   467 #endif
   464 #ifdef XEP0022
   468 #ifdef XEP0022
   465   /* XEP-22
   469   /* XEP-22
   969 
   973 
   970 static void handle_state_events(const char *from, LmMessageNode *node)
   974 static void handle_state_events(const char *from, LmMessageNode *node)
   971 {
   975 {
   972 #if defined XEP0022 || defined XEP0085
   976 #if defined XEP0022 || defined XEP0085
   973   LmMessageNode *state_ns = NULL;
   977   LmMessageNode *state_ns = NULL;
   974   const char *body;
       
   975   char *rname, *bjid;
   978   char *rname, *bjid;
   976   GSList *sl_buddy;
   979   GSList *sl_buddy;
   977   guint events;
   980   guint events;
   978   struct xep0022 *xep22 = NULL;
   981   struct xep0022 *xep22 = NULL;
   979   struct xep0085 *xep85 = NULL;
   982   struct xep0085 *xep85 = NULL;
  1021 
  1024 
  1022   if (!which_xep) { /* Sender does not use chat states */
  1025   if (!which_xep) { /* Sender does not use chat states */
  1023     return;
  1026     return;
  1024   }
  1027   }
  1025 
  1028 
  1026   body = lm_message_node_get_child_value(node, "body");
       
  1027 
       
  1028   if (which_xep == XEP_85) { /* XEP-0085 */
  1029   if (which_xep == XEP_85) { /* XEP-0085 */
  1029     xep85->support = CHATSTATES_SUPPORT_OK;
  1030     xep85->support = CHATSTATES_SUPPORT_OK;
  1030 
  1031 
  1031     if (!strcmp(state_ns->name, "composing")) {
  1032     if (!strcmp(state_ns->name, "composing")) {
  1032       xep85->last_state_rcvd = ROSTER_EVENT_COMPOSING;
  1033       xep85->last_state_rcvd = ROSTER_EVENT_COMPOSING;
  1040       xep85->last_state_rcvd = ROSTER_EVENT_GONE;
  1041       xep85->last_state_rcvd = ROSTER_EVENT_GONE;
  1041     }
  1042     }
  1042     events = xep85->last_state_rcvd;
  1043     events = xep85->last_state_rcvd;
  1043   } else {              /* XEP-0022 */
  1044   } else {              /* XEP-0022 */
  1044 #ifdef XEP0022
  1045 #ifdef XEP0022
       
  1046     const char *body = lm_message_node_get_child_value(node, "body");
  1045     const char *msgid;
  1047     const char *msgid;
  1046     xep22->support = CHATSTATES_SUPPORT_OK;
  1048     xep22->support = CHATSTATES_SUPPORT_OK;
  1047     xep22->last_state_rcvd = ROSTER_EVENT_NONE;
  1049     xep22->last_state_rcvd = ROSTER_EVENT_NONE;
  1048 
  1050 
  1049     msgid = lm_message_node_get_attribute(node, "id");
  1051     msgid = lm_message_node_get_attribute(node, "id");