"Fossies" - the Fresh Open Source Software Archive 
Member "postal-0.76/smtpserver.cpp" (24 Sep 2006, 1754 Bytes) of package /linux/privat/postal-0.76.tgz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "smtpserver.cpp" see the
Fossies "Dox" file reference documentation.
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
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
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
35 Thread *smtp_server::newThread(int threadNum)
36 {
37 return new smtp_server(threadNum, this);
38 }
39
40 smtp_server::~smtp_server()
41 {
42 }
43
44 int smtp_server::action(PVOID)
45 {
46 while(1)
47 {
48
49 }
50 }
51
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
75 void smtp_server::error()
76 {
77 m_res->error();
78 tcp::disconnect();
79 }
80
81 int smtp_server::WriteWork(PVOID buf, int size, int timeout)
82 {
83 return Write(buf, size, timeout);
84 }
85
86 void smtp_server::sentData(int bytes)
87 {
88 m_res->dataBytes(bytes);
89 }
90
91 ERROR_TYPE smtp_server::readCommandResp()
92 {
93 char recvBuf[1024];
94
95 }
96
97 int smtp_server::doAllWork()
98 {
99
100 }
101
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 }