X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Fmessagelistrequester.cpp;h=c5cb291a082494b50dd02d71912a2979759ae476;hb=59a5414ec47a2932a7802fcd1d98c4d80166564f;hp=d8ed8aa25ae10b51a8e55cfbcd6cc53b2d2d6aa7;hpb=e662ea47fba8715474851ceebacba400984ee433;p=fms.git diff --git a/src/freenet/messagelistrequester.cpp b/src/freenet/messagelistrequester.cpp index d8ed8aa..c5cb291 100644 --- a/src/freenet/messagelistrequester.cpp +++ b/src/freenet/messagelistrequester.cpp @@ -10,12 +10,12 @@ #include #endif -MessageListRequester::MessageListRequester() +MessageListRequester::MessageListRequester(SQLite3DB::DB *db):IIndexRequester(db) { Initialize(); } -MessageListRequester::MessageListRequester(FCPv2 *fcp):IIndexRequester(fcp) +MessageListRequester::MessageListRequester(SQLite3DB::DB *db, FCPv2::Connection *fcp):IIndexRequester(db,fcp) { Initialize(); } @@ -97,7 +97,7 @@ void MessageListRequester::GetBoardList(std::map &boards) } } -const bool MessageListRequester::HandleAllData(FCPMessage &message) +const bool MessageListRequester::HandleAllData(FCPv2::Message &message) { SQLite3DB::Statement st; SQLite3DB::Statement trustst; @@ -121,28 +121,23 @@ const bool MessageListRequester::HandleAllData(FCPMessage &message) StringFunctions::Convert(idparts[2],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); - if(data.size()>0) - { - m_fcp->ReceiveRaw(&data[0],datalength); - } + m_fcp->Receive(data,datalength); // parse file into xml and update the database if(data.size()>0 && xml.ParseXML(std::string(data.begin(),data.end()))==true) { + m_db->Execute("BEGIN;"); + SQLite3DB::Statement st=m_db->Prepare("SELECT IdentityID FROM tblMessageRequests WHERE IdentityID=? AND Day=? AND RequestIndex=?;"); SQLite3DB::Statement spk=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey=?;"); SQLite3DB::Statement mst=m_db->Prepare("INSERT INTO tblMessageRequests(IdentityID,Day,RequestIndex,FromMessageList) VALUES(?,?,?,'true');"); @@ -278,6 +273,8 @@ const bool MessageListRequester::HandleAllData(FCPMessage &message) st.Step(); st.Finalize(); + m_db->Execute("COMMIT;"); + m_log->debug(m_fcpuniquename+"::HandleAllData parsed MessageList XML file : "+message["Identifier"]); } else @@ -300,7 +297,7 @@ const bool MessageListRequester::HandleAllData(FCPMessage &message) } -const bool MessageListRequester::HandleGetFailed(FCPMessage &message) +const bool MessageListRequester::HandleGetFailed(FCPv2::Message &message) { SQLite3DB::Statement st; std::vector idparts; @@ -340,10 +337,11 @@ const bool MessageListRequester::HandleGetFailed(FCPMessage &message) void MessageListRequester::Initialize() { m_fcpuniquename="ActiveMessageListRequester"; - std::string tempval=""; - + std::string tempval(""); m_maxrequests=0; - Option::Instance()->GetInt("MaxMessageListRequests",m_maxrequests); + Option option(m_db); + + option.GetInt("MaxMessageListRequests",m_maxrequests); // active identities get 1/2 of the max requests option + any remaining if not evenly divisible - inactive identities get 1/2 m_maxrequests=(m_maxrequests/2)+(m_maxrequests%2); @@ -359,7 +357,7 @@ void MessageListRequester::Initialize() } tempval=""; - Option::Instance()->Get("LocalTrustOverridesPeerTrust",tempval); + option.Get("LocalTrustOverridesPeerTrust",tempval); if(tempval=="true") { m_localtrustoverrides=true; @@ -370,7 +368,7 @@ void MessageListRequester::Initialize() } tempval=""; - Option::Instance()->Get("SaveMessagesFromNewBoards",tempval); + option.Get("SaveMessagesFromNewBoards",tempval); if(tempval=="true") { m_savetonewboards=true; @@ -382,7 +380,7 @@ void MessageListRequester::Initialize() m_messagedownloadmaxdaysbackward=5; tempval="5"; - Option::Instance()->Get("MessageDownloadMaxDaysBackward",tempval); + option.Get("MessageDownloadMaxDaysBackward",tempval); StringFunctions::Convert(tempval,m_messagedownloadmaxdaysbackward); } @@ -416,13 +414,13 @@ void MessageListRequester::PopulateIDList() } } -void MessageListRequester::StartRedirectRequest(FCPMessage &message) +void MessageListRequester::StartRedirectRequest(FCPv2::Message &message) { std::vector parts; std::string indexstr=""; std::string identityidstr=""; std::string datestr=""; - FCPMessage newmessage; + FCPv2::Message newmessage; // get the new edition # StringFunctions::Split(message["RedirectURI"],"/",parts); @@ -450,14 +448,14 @@ void MessageListRequester::StartRedirectRequest(FCPMessage &message) newmessage["ReturnType"]="direct"; newmessage["MaxSize"]="1000000"; - m_fcp->SendMessage(newmessage); + m_fcp->Send(newmessage); } void MessageListRequester::StartRequest(const long &id) { Poco::DateTime now; - FCPMessage message; + FCPv2::Message message; std::string publickey; int index=0; std::string indexstr; @@ -500,7 +498,7 @@ void MessageListRequester::StartRequest(const long &id) message["ReturnType"]="direct"; message["MaxSize"]="1000000"; - m_fcp->SendMessage(message); + m_fcp->Send(message); m_requesting.push_back(id); }