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