1 #include "smtpserver.h"
2 
3 int smtp_server::m_processes = 0;
4 int smtp_server::m_max_conn = 0;
5 int smtp_server::m_nextThread = 0;
6 
7 
smtp_server(short port,UserList & ul,int maxMsgSize,int processes,Logit * log,Logit * debug,bool use_ssl)8 smtp_server::smtp_server(short port, UserList &ul, int maxMsgSize
9                        , int processes, Logit *log, Logit *debug
10 #ifdef USE_SSL
11     , bool use_ssl
12 #endif
13     )
14  : tcp(NULL, port, log
15 #ifdef USE_SSL
16      , use_ssl
17 #endif
18      , debug)
19  , m_ul(ul)
20  , m_res(new results)
21  , m_maxMsgSize(maxMsgSize)
22 {
23   m_max_conn = processes;
24 }
25 
smtp_server(int threadNum,const smtp_server * parent)26 smtp_server::smtp_server(int threadNum, const smtp_server *parent)
27  : tcp(threadNum, parent)
28  , m_ul(parent->m_ul)
29  , m_res(parent->m_res)
30  , m_maxMsgSize(parent->m_maxMsgSize)
31 {
32 }
33 
34 
newThread(int threadNum)35 Thread *smtp_server::newThread(int threadNum)
36 {
37   return new smtp_server(threadNum, this);
38 }
39 
~smtp_server()40 smtp_server::~smtp_server()
41 {
42 }
43 
action(PVOID)44 int smtp_server::action(PVOID)
45 {
46   while(1)
47   {
48 
49   }
50 }
51 
pollRead()52 int smtp_server::pollRead()
53 {
54   m_res->pollPrint();
55   if(m_max_conn && m_processes < m_max_conn)
56   {
57     int rc = pollForAccept();
58     if(rc == -1)
59       return -1;
60     if(rc == 1)
61     {
62       smtp_server *n = (smtp_server *)newThread(m_nextThread);
63       if(n->isOpen())
64       {
65         m_nextThread++;
66         m_processes++;
67       }
68       else
69         delete n;
70     }
71   }
72   return 0;
73 }
74 
error()75 void smtp_server::error()
76 {
77   m_res->error();
78   tcp::disconnect();
79 }
80 
WriteWork(PVOID buf,int size,int timeout)81 int smtp_server::WriteWork(PVOID buf, int size, int timeout)
82 {
83   return Write(buf, size, timeout);
84 }
85 
sentData(int bytes)86 void smtp_server::sentData(int bytes)
87 {
88   m_res->dataBytes(bytes);
89 }
90 
readCommandResp()91 ERROR_TYPE smtp_server::readCommandResp()
92 {
93   char recvBuf[1024];
94 
95 }
96 
doAllWork()97 int smtp_server::doAllWork()
98 {
99 
100 }
101 
disconnect()102 int smtp_server::disconnect()
103 {
104   const char * str = "550 disconnect\r\n";
105   const len = strlen(str);
106   rc = sendData(str, len);
107   if(rc != len)
108     return -1;
109   rc =
110 }
111