version 0.2.18
[fms.git] / src / message.cpp
index 53d8b34..8281db7 100644 (file)
@@ -542,6 +542,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
                m_fromname=mime.GetFieldValue("From");\r
                // remove any path folding\r
                m_fromname=StringFunctions::Replace(m_fromname,"\r\n","");\r
+               m_fromname=StringFunctions::Replace(m_fromname,"\t","");\r
                // strip off everything between () and <> and any whitespace\r
                std::string::size_type startpos=m_fromname.find("(");\r
                std::string::size_type endpos;\r
@@ -586,6 +587,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
                std::string temp=mime.GetFieldValue("Newsgroups");\r
                // remove any path folding\r
                temp=StringFunctions::Replace(temp,"\r\n","");\r
+               temp=StringFunctions::Replace(temp,"\t","");\r
                std::vector<std::string> parts;\r
                StringFunctions::SplitMultiple(temp,", \t",parts);\r
                for(std::vector<std::string>::iterator i=parts.begin(); i!=parts.end(); i++)\r
@@ -605,6 +607,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
                m_replyboardname=mime.GetFieldValue("Followup-To");\r
                // remove any path folding\r
                m_replyboardname=StringFunctions::Replace(m_replyboardname,"\r\n","");\r
+               m_replyboardname=StringFunctions::Replace(m_replyboardname,"\t","");\r
        }\r
        else\r
        {\r
@@ -619,6 +622,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
                m_subject=mime.GetFieldValue("Subject");\r
                // remove any path folding\r
                m_subject=StringFunctions::Replace(m_subject,"\r\n","");\r
+               m_subject=StringFunctions::Replace(m_subject,"\t","");\r
 #if DO_CHARSET_CONVERSION\r
                if(mime.GetFieldCharset("Subject"))\r
                {\r
@@ -643,6 +647,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
                std::string temp=mime.GetFieldValue("References");\r
                // remove any path folding\r
                temp=StringFunctions::Replace(temp,"\r\n","");\r
+               temp=StringFunctions::Replace(temp,"\t","");\r
                std::vector<std::string> parts;\r
                int count=0;\r
                StringFunctions::SplitMultiple(temp,", \t",parts);\r
@@ -738,8 +743,6 @@ const bool Message::StartFreenetInsert()
                xml.SetSubject(m_subject);\r
                xml.SetBody(m_body);\r
                xml.SetReplyBoard(m_replyboardname);\r
-               xml.SetDate(m_datetime.Format("%Y-%m-%d"));\r
-               xml.SetTime(m_datetime.Format("%H:%M:%S"));\r
                \r
                for(std::vector<std::string>::iterator i=m_boards.begin(); i!=m_boards.end(); i++)\r
                {\r
@@ -757,10 +760,43 @@ const bool Message::StartFreenetInsert()
                        return false;\r
                }\r
 \r
-               SQLite3DB::Statement st=m_db->Prepare("INSERT INTO tblMessageInserts(LocalIdentityID,MessageUUID,MessageXML) VALUES(?,?,?);");\r
+               // add the message delay if there is one\r
+               SQLite3DB::Statement st=m_db->Prepare("SELECT MinMessageDelay,MaxMessageDelay FROM tblLocalIdentity WHERE LocalIdentityID=?;");\r
+               st.Bind(0,localidentityid);\r
+               st.Step();\r
+               if(st.RowReturned())\r
+               {\r
+                       int min=0;\r
+                       int max=0;\r
+                       st.ResultInt(0,min);\r
+                       st.ResultInt(1,max);\r
+\r
+                       min<0 ? min=0 : false;\r
+                       max<0 ? max=0 : false;\r
+                       min>max ? min=max : false;\r
+\r
+                       if(min==max)\r
+                       {\r
+                               m_datetime.Add(0,min);\r
+                       }\r
+                       else if(max>min)\r
+                       {\r
+                               int delay=(rand()%(max-min))+min;\r
+                               m_datetime.Add(0,delay);\r
+                       }\r
+\r
+               }\r
+               st.Finalize();\r
+\r
+               // set date in xml file AFTER we set the delay\r
+               xml.SetDate(m_datetime.Format("%Y-%m-%d"));\r
+               xml.SetTime(m_datetime.Format("%H:%M:%S"));\r
+\r
+               st=m_db->Prepare("INSERT INTO tblMessageInserts(LocalIdentityID,MessageUUID,MessageXML,SendDate) VALUES(?,?,?,?);");\r
                st.Bind(0,localidentityid);\r
                st.Bind(1,m_messageuuid);\r
                st.Bind(2,xml.GetXML());\r
+               st.Bind(3,m_datetime.Format("%Y-%m-%d %H:%M:%S"));\r
                st.Step();\r
 \r
                // insert file attachments into database\r