st=m_db->Prepare("INSERT INTO tblBoard(BoardName,DateAdded,SaveReceivedMessages,AddedMethod) VALUES(?,?,?,?);");\r
st.Bind(0,boardname);\r
st=m_db->Prepare("INSERT INTO tblBoard(BoardName,DateAdded,SaveReceivedMessages,AddedMethod) VALUES(?,?,?,?);");\r
st.Bind(0,boardname);\r
StringFunctions::Convert(idparts[4],index);\r
\r
// wait for all data to be received from connection\r
StringFunctions::Convert(idparts[4],index);\r
\r
// wait for all data to be received from connection\r
\r
// mark this index as received\r
st=m_db->Prepare("UPDATE tblMessageRequests SET Found='true' WHERE IdentityID=? AND Day=? AND RequestIndex=?;");\r
\r
// mark this index as received\r
st=m_db->Prepare("UPDATE tblMessageRequests SET Found='true' WHERE IdentityID=? AND Day=? AND RequestIndex=?;");\r
{\r
std::vector<std::string> boards=xml.GetBoards();\r
std::map<long,std::string> replyto=xml.GetInReplyTo();\r
{\r
std::vector<std::string> boards=xml.GetBoards();\r
std::map<long,std::string> replyto=xml.GetInReplyTo();\r
// remove this identityid from request list\r
RemoveFromRequestList(idparts[1]); \r
return true;\r
}\r
if(xml.GetReplyBoard()=="")\r
{\r
// remove this identityid from request list\r
RemoveFromRequestList(idparts[1]); \r
return true;\r
}\r
if(xml.GetReplyBoard()=="")\r
{\r
keypart=StringFunctions::Replace(StringFunctions::Replace(keyparts[1],"-",""),"~","");\r
if(keypart!=uuidparts[1])\r
{\r
keypart=StringFunctions::Replace(StringFunctions::Replace(keyparts[1],"-",""),"~","");\r
if(keypart!=uuidparts[1])\r
{\r
st=m_db->Prepare("INSERT INTO tblMessage(IdentityID,FromName,MessageDate,MessageTime,Subject,MessageUUID,ReplyBoardID,Body,MessageIndex) VALUES(?,?,?,?,?,?,?,?,?);");\r
st.Bind(0,identityid);\r
st.Bind(1,GetIdentityName(identityid));\r
st=m_db->Prepare("INSERT INTO tblMessage(IdentityID,FromName,MessageDate,MessageTime,Subject,MessageUUID,ReplyBoardID,Body,MessageIndex) VALUES(?,?,?,?,?,?,?,?,?);");\r
st.Bind(0,identityid);\r
st.Bind(1,GetIdentityName(identityid));\r
StringFunctions::Split(message["Identifier"],"|",idparts);\r
requestid=idparts[1];\r
StringFunctions::Convert(idparts[2],identityid);\r
StringFunctions::Split(message["Identifier"],"|",idparts);\r
requestid=idparts[1];\r
StringFunctions::Convert(idparts[2],identityid);\r
+ // increase the failure count of the identity who gave us this index\r
+ st=m_db->Prepare("UPDATE tblIdentity SET FailureCount=FailureCount+1 WHERE IdentityID IN (SELECT FromIdentityID FROM tblMessageRequests WHERE IdentityID=? AND Day=? AND RequestIndex=?);");\r
+ st.Bind(0,identityid);\r
+ st.Bind(1,idparts[3]);\r
+ st.Bind(2,index);\r
+ st.Step();\r
+ st.Finalize();\r
+\r
- std::string tempval;\r
- Option::Instance()->Get("MaxMessageRequests",tempval);\r
- StringFunctions::Convert(tempval,m_maxrequests);\r
+ std::string tempval("");\r
+ m_maxrequests=0;\r
+ Option option(m_db);\r
+\r
+ option.GetInt("MaxMessageRequests",m_maxrequests);\r
- Option::Instance()->Get("MessageDownloadMaxDaysBackward",tempval);\r
- StringFunctions::Convert(tempval,m_maxdaysbackward);\r
+\r
+ m_maxdaysbackward=0;\r
+ option.GetInt("MessageDownloadMaxDaysBackward",m_maxdaysbackward);\r
- Option::Instance()->Get("MaxPeerMessagesPerDay",tempval);\r
- StringFunctions::Convert(tempval,m_maxpeermessages);\r
+\r
+ m_maxpeermessages=0;\r
+ option.GetInt("MaxPeerMessagesPerDay",m_maxpeermessages);\r
- Option::Instance()->Get("MaxBoardsPerMessage",tempval);\r
- StringFunctions::Convert(tempval,m_maxboardspermessage);\r
+\r
+ m_maxboardspermessage=0;\r
+ option.GetInt("MaxBoardsPerMessage",m_maxboardspermessage);\r
- date.SetToGMTime();\r
- date.Add(0,0,0,-m_maxdaysbackward);\r
+ date-=Poco::Timespan(m_maxdaysbackward,0,0,0,0);\r
\r
sql="SELECT tblIdentity.IdentityID,Day,RequestIndex ";\r
sql+="FROM tblMessageRequests INNER JOIN tblIdentity ON tblMessageRequests.IdentityID=tblIdentity.IdentityID ";\r
\r
sql="SELECT tblIdentity.IdentityID,Day,RequestIndex ";\r
sql+="FROM tblMessageRequests INNER JOIN tblIdentity ON tblMessageRequests.IdentityID=tblIdentity.IdentityID ";\r
if(m_localtrustoverrides==false)\r
{\r
sql+="AND (tblIdentity.LocalMessageTrust IS NULL OR tblIdentity.LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust')) ";\r
if(m_localtrustoverrides==false)\r
{\r
sql+="AND (tblIdentity.LocalMessageTrust IS NULL OR tblIdentity.LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust')) ";\r
{\r
sql+="AND (tblIdentity.LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust') OR (tblIdentity.LocalMessageTrust IS NULL AND (tblIdentity.PeerMessageTrust IS NULL OR tblIdentity.PeerMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinPeerMessageTrust')))) ";\r
}\r
{\r
sql+="AND (tblIdentity.LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust') OR (tblIdentity.LocalMessageTrust IS NULL AND (tblIdentity.PeerMessageTrust IS NULL OR tblIdentity.PeerMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinPeerMessageTrust')))) ";\r
}\r
- sql+="ORDER BY tblMessageRequests.Day DESC ";\r
+ // secondary ascending sort on tries\r
+ // tertiary sort on request index (so we get low indexes first)\r
+ sql+="ORDER BY tblMessageRequests.Day DESC, tblMessageRequests.Tries ASC, tblMessageRequests.RequestIndex ASC ";\r
message["Identifier"]=m_fcpuniquename+"|"+requestid+"|"+parts[0]+"|"+parts[1]+"|"+parts[2]+"|"+message["URI"];\r
message["ReturnType"]="direct";\r
message["MaxSize"]="1000000"; // 1 MB\r
message["Identifier"]=m_fcpuniquename+"|"+requestid+"|"+parts[0]+"|"+parts[1]+"|"+parts[2]+"|"+message["URI"];\r
message["ReturnType"]="direct";\r
message["MaxSize"]="1000000"; // 1 MB\r
- m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"MessageRequester::StartRequest requesting "+message["Identifier"]);\r
+ // update tries\r
+ st=m_db->Prepare("UPDATE tblMessageRequests SET Tries=Tries+1 WHERE IdentityID=? AND Day=? AND RequestIndex=?;");\r
+ st.Bind(0,identityid);\r
+ st.Bind(1,date);\r
+ st.Bind(2,indexstr);\r
+ st.Step();\r
+\r
+ m_log->debug("MessageRequester::StartRequest requesting "+message["Identifier"]);\r