version 0.1.9
[fms.git] / src / freenet / messagerequester.cpp
index c9908a5..980e688 100644 (file)
@@ -78,6 +78,7 @@ const bool MessageRequester::HandleAllData(FCPMessage &message)
        MessageXML xml;\r
        long identityid;\r
        long index;\r
+       bool inserted=false;\r
 \r
        StringFunctions::Split(message["Identifier"],"|",idparts);\r
        StringFunctions::Convert(message["DataLength"],datalength);\r
@@ -133,32 +134,41 @@ const bool MessageRequester::HandleAllData(FCPMessage &message)
                st.Bind(5,xml.GetMessageID());\r
                st.Bind(6,GetBoardID(xml.GetReplyBoard()));\r
                st.Bind(7,xml.GetBody());\r
-               st.Step(true);\r
+               inserted=st.Step(true);\r
                int messageid=st.GetLastInsertRowID();\r
 \r
-               st=m_db->Prepare("INSERT INTO tblMessageBoard(MessageID,BoardID) VALUES(?,?);");\r
-               for(std::vector<std::string>::iterator i=boards.begin(); i!=boards.end(); i++)\r
+               if(inserted==true)\r
                {\r
-                       st.Bind(0,messageid);\r
-                       st.Bind(1,GetBoardID((*i)));\r
-                       st.Step();\r
-                       st.Reset();\r
-               }\r
-               st.Finalize();\r
 \r
-               st=m_db->Prepare("INSERT INTO tblMessageReplyTo(MessageID,ReplyToMessageUUID,ReplyOrder) VALUES(?,?,?);");\r
-               std::map<long,std::string> replyto=xml.GetInReplyTo();\r
-               for(std::map<long,std::string>::iterator j=replyto.begin(); j!=replyto.end(); j++)\r
+                       st=m_db->Prepare("INSERT INTO tblMessageBoard(MessageID,BoardID) VALUES(?,?);");\r
+                       for(std::vector<std::string>::iterator i=boards.begin(); i!=boards.end(); i++)\r
+                       {\r
+                               st.Bind(0,messageid);\r
+                               st.Bind(1,GetBoardID((*i)));\r
+                               st.Step();\r
+                               st.Reset();\r
+                       }\r
+                       st.Finalize();\r
+\r
+                       st=m_db->Prepare("INSERT INTO tblMessageReplyTo(MessageID,ReplyToMessageUUID,ReplyOrder) VALUES(?,?,?);");\r
+                       std::map<long,std::string> replyto=xml.GetInReplyTo();\r
+                       for(std::map<long,std::string>::iterator j=replyto.begin(); j!=replyto.end(); j++)\r
+                       {\r
+                               st.Bind(0,messageid);\r
+                               st.Bind(1,(*j).second);\r
+                               st.Bind(2,(*j).first);\r
+                               st.Step();\r
+                               st.Reset();\r
+                       }\r
+                       st.Finalize();\r
+\r
+                       m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"MessageRequester::HandleAllData parsed Message XML file : "+message["Identifier"]);\r
+\r
+               }\r
+               else    // couldn't insert - was already in database\r
                {\r
-                       st.Bind(0,messageid);\r
-                       st.Bind(1,(*j).second);\r
-                       st.Bind(2,(*j).first);\r
-                       st.Step();\r
-                       st.Reset();\r
+                       m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"MessageRequester::HandleAddData could not insert message into database.  "+message["Identifier"]);\r
                }\r
-               st.Finalize();\r
-\r
-               m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"MessageRequester::HandleAllData parsed Message XML file : "+message["Identifier"]);\r
 \r
        }\r
        else\r
@@ -301,6 +311,8 @@ void MessageRequester::StartRequest(const std::string &requestid)
                m_fcp->SendMessage(message);\r
 \r
                m_requesting.push_back(requestid);\r
+\r
+               m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"MessageRequester::StartRequest requesting "+message["Identifier"]);\r
        }\r
        \r
        m_ids[requestid]=true;\r