X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmessage.cpp;h=d7aaf3fc12bf26896b5cccedb999fa6a08ed00ad;hb=44f964d9b2b2d55a5b5672e9297717bd25fa8ee2;hp=5905021de147e290c95f86ec489832b6f7d6adb4;hpb=63376b2a82c3f6cdf2df56b1f134bd7df0aaab3a;p=fms.git diff --git a/src/message.cpp b/src/message.cpp index 5905021..d7aaf3f 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -696,10 +696,27 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) m_body+=bodypart; } // add a binary file attachment - else if((*i)->GetName()!="" && (*i)->GetLength()>0 && (*i)->GetContent()) + else if(((*i)->GetName()!="" || (*i)->GetFilename()!="") && (*i)->GetLength()>0 && (*i)->GetContent()) { + std::string filename=""; + std::string contenttype=""; std::vector data((*i)->GetContent(),(*i)->GetContent()+(*i)->GetContentLength()); - m_fileattachments.push_back(fileattachment((*i)->GetName(),data)); + if((*i)->GetContentType()) + { + contenttype=(*i)->GetContentType(); + // find first ; tab cr or lf and erase it and everything after it + std::string::size_type endpos=contenttype.find_first_of(";\t\r\n "); + if(endpos!=std::string::npos) + { + contenttype.erase(endpos); + } + } + filename=(*i)->GetFilename(); + if(filename=="") + { + filename=(*i)->GetName(); + } + m_fileattachments.push_back(fileattachment(filename,contenttype,data)); } } @@ -743,13 +760,14 @@ const bool Message::StartFreenetInsert() st.Step(); // insert file attachments into database - st=m_db->Prepare("INSERT INTO tblFileInserts(MessageUUID,FileName,Size,Data) VALUES(?,?,?,?);"); + st=m_db->Prepare("INSERT INTO tblFileInserts(MessageUUID,FileName,Size,MimeType,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.Bind(3,(*i).m_mimetype); + st.Bind(4,&((*i).m_data[0]),(*i).m_data.size()); st.Step(); st.Reset(); }