equal
deleted
inserted
replaced
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"); |