version 0.1.10
[fms.git] / src / freenet / trustlistxml.cpp
index 0d0df5c..c3e71db 100644 (file)
@@ -1,6 +1,8 @@
 #include "../../include/freenet/trustlistxml.h"\r
 #include "../../include/stringfunctions.h"\r
 \r
+#include <algorithm>\r
+\r
 #ifdef XMEM\r
        #include <xmem.h>\r
 #endif\r
@@ -99,6 +101,7 @@ const bool TrustListXML::ParseXML(const std::string &xml)
                TiXmlText *txt;\r
                TiXmlHandle hnd(&td);\r
                TiXmlNode *node;\r
+               std::vector<std::string> m_foundkeys;\r
 \r
                Initialize();\r
 \r
@@ -130,7 +133,12 @@ const bool TrustListXML::ParseXML(const std::string &xml)
 \r
                        if(identity!="" && messagetrust>=0 && messagetrust<=100 && trustlisttrust>=0 && trustlisttrust<=100)\r
                        {\r
-                               m_trust.push_back(trust(identity,messagetrust,trustlisttrust));\r
+                               // check so we don't add the same identity multiple times from a trust list\r
+                               if(std::find(m_foundkeys.begin(),m_foundkeys.end(),identity)==m_foundkeys.end())\r
+                               {\r
+                                       m_foundkeys.push_back(identity);\r
+                                       m_trust.push_back(trust(identity,messagetrust,trustlisttrust));\r
+                               }\r
                        }\r
                        else\r
                        {\r