eNextState FinalizeMessageSend_DB1(AsyncIO *IO);
eNextState FinalizeMessageSend_DB2(AsyncIO *IO);
eNextState FinalizeMessageSend_DB3(AsyncIO *IO);
+eNextState FinalizeMessageSend_DB4(AsyncIO *IO);
/******************************************************************************
* So, we're finished with sending (regardless of success or failure) *
"");
FreeStrBuf(&Msg->QMsgData);
}
+ DecreaseShutdownDeliveries(Msg->MyQItem);
}
eNextState FinalizeMessageSend_DB3(AsyncIO *IO)
{
+ SmtpOutMsg *Msg = IO->Data;
FinalizeMessageSend_DB_3(IO);
- return eAbort;
+ if (!Msg->IDestructQueItem)
+ return eAbort;
+ return NextDBOperation(IO, FinalizeMessageSend_DB4);
+}
+
+eNextState FinalizeMessageSend_DB4(AsyncIO *IO)
+{
+ int Done;
+ SmtpOutMsg *Msg = IO->Data;
+
+ Done = GetShutdownDeliveries(Msg->MyQItem);
+ if (!Done)
+ return NextDBOperation(IO, FinalizeMessageSend_DB4);
+ else
+ return eAbort;
}
eNextState FinalizeMessageSend_DB(AsyncIO *IO)
addr->sin_port = htons(DefaultMXPort);
}
Msg->mx_host = Msg->pCurrRelay->Host;
+ if (Msg->HostLookup.VParsedDNSReply != NULL) {
+ Msg->HostLookup.DNSReplyFree(Msg->HostLookup.VParsedDNSReply);
+ Msg->HostLookup.VParsedDNSReply = NULL;
+ }
return mx_connect_ip(IO);
}
- else
+ else {
+ if (Msg->HostLookup.VParsedDNSReply != NULL) {
+ Msg->HostLookup.DNSReplyFree(Msg->HostLookup.VParsedDNSReply);
+ Msg->HostLookup.VParsedDNSReply = NULL;
+ }
return FailOneAttempt(IO);
+ }
}
eNextState get_one_mx_host_ip(AsyncIO *IO)
* - one of the mx'es
*/
- InitC_ares_dns(IO);
-
EVS_syslog(LOG_DEBUG, "SMTP: %s\n", __FUNCTION__);
EVS_syslog(LOG_DEBUG,