X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Fmessage.cpp;h=5905021de147e290c95f86ec489832b6f7d6adb4;hp=d2693f58fa3a54229e9aeceb90b6202013d9cc00;hb=63376b2a82c3f6cdf2df56b1f134bd7df0aaab3a;hpb=e773b0ecb8a35c67cde5b2e82bbebb05224f34d0 diff --git a/src/message.cpp b/src/message.cpp index d2693f5..5905021 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -325,6 +325,7 @@ void Message::Initialize() m_fromname=""; m_boards.clear(); m_inreplyto.clear(); + m_fileattachments.clear(); m_changemessagetrustonreply=0; Option::Instance()->Get("ChangeMessageTrustOnReply",tempval); StringFunctions::Convert(tempval,m_changemessagetrustonreply); @@ -694,6 +695,12 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) #endif m_body+=bodypart; } + // add a binary file attachment + else if((*i)->GetName()!="" && (*i)->GetLength()>0 && (*i)->GetContent()) + { + std::vector data((*i)->GetContent(),(*i)->GetContent()+(*i)->GetContentLength()); + m_fileattachments.push_back(fileattachment((*i)->GetName(),data)); + } } return true; @@ -735,6 +742,18 @@ const bool Message::StartFreenetInsert() st.Bind(2,xml.GetXML()); st.Step(); + // insert file attachments into database + st=m_db->Prepare("INSERT INTO tblFileInserts(MessageUUID,FileName,Size,Data) VALUES(?,?,?,?);"); + for(std::vector::iterator i=m_fileattachments.begin(); i!=m_fileattachments.end(); i++) + { + st.Bind(0,m_messageuuid); + st.Bind(1,(*i).m_filename); + st.Bind(2,(long)(*i).m_data.size()); + st.Bind(3,&((*i).m_data[0]),(*i).m_data.size()); + st.Step(); + st.Reset(); + } + HandleChangeTrust(); return true;