#include "../../include/messagelist.h"\r
#include "../../include/option.h"\r
\r
-#include <zthread/Thread.h>\r
+#include <algorithm>\r
+\r
+//#include <zthread/Thread.h>\r
+#include "../../include/pthreadwrapper/thread.h"\r
\r
#ifdef XMEM\r
#include <xmem.h>\r
m_status.m_messageid=-1;\r
m_status.m_mode=MODE_NONE;\r
\r
- Option::instance()->Get("NNTPAllowPost",tempval);\r
+ Option::Instance()->Get("NNTPAllowPost",tempval);\r
if(tempval=="true")\r
{\r
m_status.m_allowpost=true;\r
{\r
Message mess;\r
\r
- if(mess.Load(m_status.m_messageid,m_status.m_boardid))\r
+ if(mess.LoadPrevious(m_status.m_messageid,m_status.m_boardid))\r
{\r
std::ostringstream tempstr;\r
\r
\r
if(show==true)\r
{\r
- tempstr << (*i).GetBoardName() << "\t" << (*i).GetHighMessageID() << "\t" << (*i).GetLowMessageID() << "\t" << (m_status.m_allowpost ? "y" : "n");\r
+ tempstr << (*i).GetBoardName() << " " << (*i).GetHighMessageID() << " " << (*i).GetLowMessageID() << " " << (m_status.m_allowpost ? "y" : "n");\r
SendBufferedLine(tempstr.str());\r
}\r
}\r
std::ostringstream tempstr;\r
Board board;\r
bool validgroup=false;\r
- int tempint;\r
int lownum=-1;\r
int highnum=-1;\r
\r
{\r
Message mess;\r
\r
- if(mess.Load(m_status.m_messageid,m_status.m_boardid))\r
+ if(mess.LoadNext(m_status.m_messageid,m_status.m_boardid))\r
{\r
std::ostringstream tempstr;\r
\r
messageuuid=command.m_arguments[0];\r
messageuuid=StringFunctions::Replace(messageuuid,"<","");\r
messageuuid=StringFunctions::Replace(messageuuid,">","");\r
+ /*\r
+ // get rid of @ and everything after\r
+ if(messageuuid.find("@")!=std::string::npos)\r
+ {\r
+ messageuuid.erase(messageuuid.find("@"));\r
+ }\r
+ */\r
}\r
// single article or range\r
else\r
\r
if(mess.ParseNNTPMessage(message))\r
{\r
- mess.StartFreenetInsert();\r
- SendBufferedLine("240 Article received OK");\r
+ if(mess.PostedToAdministrationBoard()==true)\r
+ {\r
+ mess.HandleAdministrationMessage();\r
+ }\r
+ else\r
+ {\r
+ if(mess.StartFreenetInsert())\r
+ {\r
+ SendBufferedLine("240 Article received OK");\r
+ }\r
+ else\r
+ {\r
+ SendBufferedLine("441 Posting failed. Make sure the identity you are sending with exists!");\r
+ }\r
+ }\r
}\r
else\r
{\r
return true;\r
}\r
\r
-void NNTPConnection::run()\r
+void NNTPConnection::Run()\r
{\r
struct timeval tv;\r
fd_set writefs,readfs;\r
SocketSend();\r
}\r
}\r
- else if(rval==-1)\r
+ else if(rval==SOCKET_ERROR)\r
{\r
m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"NNTPConnection::run select returned -1 : "+GetSocketErrorMessage()); \r
}\r
\r
- }while(!Disconnected() && !ZThread::Thread::interrupted());\r
- \r
+// }while(!Disconnected() && !ZThread::Thread::interrupted());\r
+ }while(!Disconnected() && !IsCancelled());\r
+\r
Disconnect();\r
- \r
+\r
}\r
\r
void NNTPConnection::SendArticleOverInfo(Message &message)\r
{\r
line+=" ";\r
}\r
- line+="<"+(*i).second+">";\r
+ line+="<"+(*i).second+">"; //+"@freenetproject.org>";\r
}\r
line+="\t";\r
}\r
else\r
{\r
articleid=command.m_arguments[0];\r
+ //strip off < and > and everthing after @\r
+ if(articleid.size()>0 && articleid[0]=='<')\r
+ {\r
+ articleid.erase(0,1);\r
+ }\r
+ if(articleid.size()>0 && articleid[articleid.size()-1]=='>')\r
+ {\r
+ articleid.erase(articleid.size()-1);\r
+ }\r
+ /*\r
+ if(articleid.size()>0 && articleid.find('@')!=std::string::npos)\r
+ {\r
+ articleid.erase(articleid.find('@'));\r
+ }\r
+ */\r
message.Load(articleid);\r
type=2;\r
}\r
}\r
else if(rval==-1)\r
{\r
+ std::string errnostr;\r
+ StringFunctions::Convert(GetSocketErrorNumber(),errnostr);\r
// error on receive - close the connection\r
Disconnect();\r
- m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"NNTPConnection::SocketReceive recv returned -1 : "+GetSocketErrorMessage());\r
+ m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"NNTPConnection::SocketReceive recv returned -1 : "+errnostr+" - "+GetSocketErrorMessage());\r
}\r
}\r
\r
}\r
else if(rval==-1)\r
{\r
- m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"NNTPConnection::SocketSend returned -1 : "+GetSocketErrorMessage());\r
+ std::string errnostr;\r
+ StringFunctions::Convert(GetSocketErrorNumber(),errnostr);\r
+ m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"NNTPConnection::SocketSend returned -1 : "+errnostr+" - "+GetSocketErrorMessage());\r
}\r
}\r
}\r