X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Fmessagerequester.cpp;h=fbd767cdb827c0b717d2ac4f5ee139b385f2fe9e;hb=4e96d123460d6363cf7274e36bd9357768eb86ad;hp=ea3ec858540aa6220969c8db54c31189f83fef40;hpb=dec33c63afafabf83c3039e916725cac6faef9b3;p=fms.git diff --git a/src/freenet/messagerequester.cpp b/src/freenet/messagerequester.cpp index ea3ec85..fbd767c 100644 --- a/src/freenet/messagerequester.cpp +++ b/src/freenet/messagerequester.cpp @@ -16,7 +16,7 @@ MessageRequester::MessageRequester() Initialize(); } -MessageRequester::MessageRequester(FCPv2 *fcp):IIndexRequester(fcp) +MessageRequester::MessageRequester(FCPv2::Connection *fcp):IIndexRequester(fcp) { Initialize(); } @@ -85,7 +85,7 @@ const std::string MessageRequester::GetIdentityName(const long identityid) } } -const bool MessageRequester::HandleAllData(FCPMessage &message) +const bool MessageRequester::HandleAllData(FCPv2::Message &message) { SQLite3DB::Statement st; std::vector idparts; @@ -104,20 +104,16 @@ const bool MessageRequester::HandleAllData(FCPMessage &message) StringFunctions::Convert(idparts[4],index); // wait for all data to be received from connection - while(m_fcp->Connected() && m_fcp->ReceiveBufferSize()Update(1); - } + m_fcp->WaitForBytes(1000,datalength); // if we got disconnected- return immediately - if(m_fcp->Connected()==false) + if(m_fcp->IsConnected()==false) { return false; } // receive the file - data.resize(datalength); - m_fcp->ReceiveRaw(&data[0],datalength); + m_fcp->Receive(data,datalength); // mark this index as received st=m_db->Prepare("UPDATE tblMessageRequests SET Found='true' WHERE IdentityID=? AND Day=? AND RequestIndex=?;"); @@ -128,7 +124,7 @@ const bool MessageRequester::HandleAllData(FCPMessage &message) st.Finalize(); // parse file into xml and update the database - if(xml.ParseXML(std::string(data.begin(),data.end()))==true) + if(data.size()>0 && xml.ParseXML(std::string(data.begin(),data.end()))==true) { std::vector boards=xml.GetBoards(); std::map replyto=xml.GetInReplyTo(); @@ -288,7 +284,7 @@ const bool MessageRequester::HandleAllData(FCPMessage &message) return true; } -const bool MessageRequester::HandleGetFailed(FCPMessage &message) +const bool MessageRequester::HandleGetFailed(FCPv2::Message &message) { SQLite3DB::Statement st; std::vector idparts; @@ -324,8 +320,9 @@ void MessageRequester::Initialize() { m_fcpuniquename="MessageRequester"; std::string tempval; - Option::Instance()->Get("MaxMessageRequests",tempval); - StringFunctions::Convert(tempval,m_maxrequests); + + m_maxrequests=0; + Option::Instance()->GetInt("MaxMessageRequests",m_maxrequests); if(m_maxrequests<1) { m_maxrequests=1; @@ -335,8 +332,9 @@ void MessageRequester::Initialize() { m_log->warning("Option MaxMessageRequests is currently set at "+tempval+". This value might be incorrectly configured."); } - Option::Instance()->Get("MessageDownloadMaxDaysBackward",tempval); - StringFunctions::Convert(tempval,m_maxdaysbackward); + + m_maxdaysbackward=0; + Option::Instance()->GetInt("MessageDownloadMaxDaysBackward",m_maxdaysbackward); if(m_maxdaysbackward<0) { m_maxdaysbackward=0; @@ -346,8 +344,9 @@ void MessageRequester::Initialize() { m_log->warning("Option MessageDownloadMaxDaysBackward is currently set at "+tempval+". This value might be incorrectly configured."); } - Option::Instance()->Get("MaxPeerMessagesPerDay",tempval); - StringFunctions::Convert(tempval,m_maxpeermessages); + + m_maxpeermessages=0; + Option::Instance()->GetInt("MaxPeerMessagesPerDay",m_maxpeermessages); if(m_maxpeermessages<1) { m_maxpeermessages=1; @@ -357,8 +356,9 @@ void MessageRequester::Initialize() { m_log->warning("Option MaxPeerMessagesPerDay is currently set at "+tempval+". This value might be incorrectly configured. The suggested value is 200."); } - Option::Instance()->Get("MaxBoardsPerMessage",tempval); - StringFunctions::Convert(tempval,m_maxboardspermessage); + + m_maxboardspermessage=0; + Option::Instance()->GetInt("MaxBoardsPerMessage",m_maxboardspermessage); if(m_maxboardspermessage<1) { m_maxboardspermessage=1; @@ -416,7 +416,9 @@ void MessageRequester::PopulateIDList() } sql+="AND tblIdentity.Name <> '' "; // sort by day descending - in case there is a bunch of messages on a day that keep timing out, we will eventually get to the next day and hopefully find messages there - sql+="ORDER BY tblMessageRequests.Day DESC "; + // secondary ascending sort on tries + // tertiary sort on request index (so we get low indexes first) + sql+="ORDER BY tblMessageRequests.Day DESC, tblMessageRequests.Tries ASC, tblMessageRequests.RequestIndex ASC "; sql+=";"; SQLite3DB::Statement st=m_db->Prepare(sql); @@ -470,7 +472,7 @@ const bool MessageRequester::SaveToBoard(const std::string &boardname) void MessageRequester::StartRequest(const std::string &requestid) { - FCPMessage message; + FCPv2::Message message; std::vector parts; std::string tempval; long identityid; @@ -498,10 +500,17 @@ void MessageRequester::StartRequest(const std::string &requestid) message["MaxSize"]="1000000"; // 1 MB message["MaxRetries"]="-1"; // use ULPR since we are fairly sure message exists since the author says it does - m_fcp->SendMessage(message); + m_fcp->Send(message); m_requesting.push_back(requestid); + // update tries + st=m_db->Prepare("UPDATE tblMessageRequests SET Tries=Tries+1 WHERE IdentityID=? AND Day=? AND RequestIndex=?;"); + st.Bind(0,identityid); + st.Bind(1,date); + st.Bind(2,indexstr); + st.Step(); + m_log->debug("MessageRequester::StartRequest requesting "+message["Identifier"]); }