mcabber/mcabber/xmpp.c
changeset 2347 db8de1b464d3
parent 2346 7921c8d671c8
equal deleted inserted replaced
2346:7921c8d671c8 2347:db8de1b464d3
  1383   char bpprio;
  1383   char bpprio;
  1384   time_t timestamp = 0L;
  1384   time_t timestamp = 0L;
  1385   LmMessageNode *muc_packet, *caps;
  1385   LmMessageNode *muc_packet, *caps;
  1386   LmMessageSubType mstype = lm_message_get_sub_type(m);
  1386   LmMessageSubType mstype = lm_message_get_sub_type(m);
  1387 
  1387 
  1388   // Check for MUC presence packet
       
  1389   muc_packet = lm_message_node_find_xmlns(m->node, NS_MUC_USER);
       
  1390 
       
  1391   from = lm_message_get_from(m);
  1388   from = lm_message_get_from(m);
  1392   if (!from) {
  1389   if (!from) {
  1393     scr_LogPrint(LPRINT_LOGNORM, "Unexpected presence packet!");
  1390     scr_LogPrint(LPRINT_LOGNORM, "Unexpected presence packet!");
  1394 
  1391 
  1395     if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
  1392     if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
  1397                            lm_message_get_from(m));
  1394                            lm_message_get_from(m));
  1398       return LM_HANDLER_RESULT_REMOVE_MESSAGE;
  1395       return LM_HANDLER_RESULT_REMOVE_MESSAGE;
  1399     }
  1396     }
  1400     return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
  1397     return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
  1401   }
  1398   }
  1402 
       
  1403   rname = jid_get_resource_name(from);
       
  1404 
  1399 
  1405   if (settings_opt_get_int("ignore_self_presence")) {
  1400   if (settings_opt_get_int("ignore_self_presence")) {
  1406     const char *self_fjid = lm_connection_get_jid(connection);
  1401     const char *self_fjid = lm_connection_get_jid(connection);
  1407     if (self_fjid && !strcasecmp(self_fjid, from)) {
  1402     if (self_fjid && !strcasecmp(self_fjid, from)) {
  1408       return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; // Ignoring self presence
  1403       return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; // Ignoring self presence
  1462   if (ustmsg && !*ustmsg)
  1457   if (ustmsg && !*ustmsg)
  1463     ustmsg = NULL;
  1458     ustmsg = NULL;
  1464 
  1459 
  1465   // Timestamp?
  1460   // Timestamp?
  1466   timestamp = lm_message_node_get_timestamp(m->node);
  1461   timestamp = lm_message_node_get_timestamp(m->node);
       
  1462   // Check for MUC presence packet
       
  1463   muc_packet = lm_message_node_find_xmlns(m->node, NS_MUC_USER);
       
  1464   rname = jid_get_resource_name(from);
  1467 
  1465 
  1468   if (muc_packet) {
  1466   if (muc_packet) {
  1469     // This is a MUC presence message
  1467     // This is a MUC presence message
  1470     handle_muc_presence(from, muc_packet, bjid, rname,
  1468     handle_muc_presence(from, muc_packet, bjid, rname,
  1471                         ust, ustmsg, timestamp, bpprio);
  1469                         ust, ustmsg, timestamp, bpprio);
  1594   LmMessageSubType mstype = lm_message_get_sub_type(m);
  1592   LmMessageSubType mstype = lm_message_get_sub_type(m);
  1595   const char *from = lm_message_get_from(m);
  1593   const char *from = lm_message_get_from(m);
  1596   const char *msg = lm_message_node_get_child_value(m->node, "status");
  1594   const char *msg = lm_message_node_get_child_value(m->node, "status");
  1597 
  1595 
  1598   if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
  1596   if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
  1599     display_server_error(lm_message_node_get_child(m->node, "error"),
  1597     display_server_error(lm_message_node_get_child(m->node, "error"), from);
  1600                          lm_message_get_from(m));
       
  1601     return LM_HANDLER_RESULT_REMOVE_MESSAGE;
  1598     return LM_HANDLER_RESULT_REMOVE_MESSAGE;
  1602   }
  1599   }
  1603 
  1600 
  1604   if (!from) {
  1601   if (!from) {
  1605     scr_LogPrint(LPRINT_DEBUG, "handle_s10n: Unexpected presence packet!");
  1602     scr_LogPrint(LPRINT_DEBUG, "handle_s10n: Unexpected presence packet!");