63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
#ifndef _ASYNC_SMTPMX_HXX_
|
|
#define _ASYNC_SMTPMX_HXX_
|
|
|
|
class SMTP_SERVER_INSTANCE;
|
|
|
|
#define SMTP_ASYNCMX_SIGNATURE 'uDNS'
|
|
#define SMTP_ASYNCMX_SIGNATURE_FREE 'fDNS'
|
|
|
|
class CAsyncSmtpDns : public CAsyncDns
|
|
{
|
|
private:
|
|
DWORD m_Signature;
|
|
DWORD m_DomainOptions;
|
|
BOOL m_fConnectToSmartHost;
|
|
CTcpRegIpList *m_pIpEntry;
|
|
SMTP_SERVER_INSTANCE *m_pServiceInstance;
|
|
ISMTPConnection *m_pISMTPConnection;
|
|
|
|
// used to get an alternate destination host if needed.
|
|
DNS_RESOLVER_RECORD *m_pDNS_RESOLVER_RECORD;
|
|
LPSTR m_pszSSLVerificationName;
|
|
BOOL m_fInitCalled;
|
|
|
|
public:
|
|
//use CPool for better memory management
|
|
static CPool Pool;
|
|
|
|
// override the mem functions to use CPool functions
|
|
void *operator new (size_t cSize)
|
|
{ return Pool.Alloc(); }
|
|
void operator delete (void *pInstance)
|
|
{ Pool.Free(pInstance); }
|
|
|
|
LIST_ENTRY m_ListEntry;
|
|
|
|
LIST_ENTRY & QueryListEntry(void) {return m_ListEntry;}
|
|
|
|
CAsyncSmtpDns (SMTP_SERVER_INSTANCE * pServiceInstance,
|
|
ISMTPConnection *pSmtpConnection);
|
|
|
|
~CAsyncSmtpDns();
|
|
|
|
|
|
BOOL Init (LPSTR pszSSLVerificationName);
|
|
void SetDomainOptions(DWORD Options) {m_DomainOptions = Options;}
|
|
void SetSmartHostOption(BOOL fConnectToSmartHost) {m_fConnectToSmartHost = fConnectToSmartHost;}
|
|
|
|
BOOL GetMissingIpAddresses(PSMTPDNS_RECS pDnsList);
|
|
BOOL GetIpFromDns(PSMTPDNS_RECS pDnsRec, DWORD Count);
|
|
|
|
void HandleCompletedData(DNS_STATUS);
|
|
|
|
BOOL RetryAsyncDnsQuery(BOOL fUdp);
|
|
|
|
|
|
BOOL NDRAllMessages();
|
|
|
|
void SetDnsResolverRecord(DNS_RESOLVER_RECORD *pDnsResolverRecord)
|
|
{ m_pDNS_RESOLVER_RECORD = pDnsResolverRecord; }
|
|
|
|
};
|
|
#endif
|