mcabber/mcabber/xmpp.c
changeset 2295 eb96666502f5
parent 2294 2a9569fd7644
child 2303 4f3821bda633
equal deleted inserted replaced
2294:2a9569fd7644 2295:eb96666502f5
  1134   gboolean carbons = FALSE;
  1134   gboolean carbons = FALSE;
  1135   if (x && (!g_strcmp0(x->name, "received") || !g_strcmp0(x->name, "sent"))) {
  1135   if (x && (!g_strcmp0(x->name, "received") || !g_strcmp0(x->name, "sent"))) {
  1136     LmMessageNode *xenc;
  1136     LmMessageNode *xenc;
  1137     const char *carbon_name = x->name;
  1137     const char *carbon_name = x->name;
  1138     carbons = TRUE;
  1138     carbons = TRUE;
       
  1139 
       
  1140     // Check envelope JID for carbon messages
       
  1141     if (!jid_equal(lm_connection_get_jid(lconnection), bjid)) {
       
  1142       scr_LogPrint(LPRINT_LOGNORM, "Received invalid carbon copy from %s.", bjid);
       
  1143       goto handle_messages_return;
       
  1144     }
       
  1145 
  1139     // Go 1 level deeper to the forwarded message
  1146     // Go 1 level deeper to the forwarded message
  1140     x = lm_message_node_find_xmlns(x, NS_FORWARD);
  1147     x = lm_message_node_find_xmlns(x, NS_FORWARD);
  1141     if (x)
  1148     if (x)
  1142       x = lm_message_node_get_child(x, "message");
  1149       x = lm_message_node_get_child(x, "message");
  1143 
  1150 
  1156     else
  1163     else
  1157       skip_process = TRUE;
  1164       skip_process = TRUE;
  1158 
  1165 
  1159     // Parse a message that is send to one of our other resources
  1166     // Parse a message that is send to one of our other resources
  1160     if (!g_strcmp0(carbon_name, "received")) {
  1167     if (!g_strcmp0(carbon_name, "received")) {
  1161       // Check envelope JID for carbon messages
       
  1162       gchar *self_bjid = jidtodisp(lm_connection_get_jid(lconnection));
       
  1163       if (g_strcmp0(self_bjid, bjid)) {
       
  1164         scr_LogPrint(LPRINT_LOGNORM, "Received invalid carbon copy!");
       
  1165         g_free(self_bjid);
       
  1166         goto handle_messages_return;
       
  1167       }
       
  1168       g_free(self_bjid);
       
  1169 
       
  1170       from = lm_message_node_get_attribute(x, "from");
  1168       from = lm_message_node_get_attribute(x, "from");
  1171       if (!from) {
  1169       if (!from) {
  1172         scr_LogPrint(LPRINT_LOGNORM, "Malformed carbon copy!");
  1170         scr_LogPrint(LPRINT_LOGNORM, "Malformed carbon copy!");
  1173         goto handle_messages_return;
  1171         goto handle_messages_return;
  1174       }
  1172       }