X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fsmtp%2Fserv_smtpeventclient.c;h=f3a1566bdefa8f83caac66159bbaa80c2eacf706;hb=7cced4381b0497cf3d99a489bbb1a4f5375ded32;hp=efc274d37716515d52624095066b4b9f1527d3b5;hpb=7b6191e9787496d0a3157637414210832e68117b;p=citadel.git diff --git a/citadel/modules/smtp/serv_smtpeventclient.c b/citadel/modules/smtp/serv_smtpeventclient.c index efc274d37..f3a1566bd 100644 --- a/citadel/modules/smtp/serv_smtpeventclient.c +++ b/citadel/modules/smtp/serv_smtpeventclient.c @@ -210,7 +210,6 @@ eNextState FailOneAttempt(AsyncIO *IO) void SetConnectStatus(AsyncIO *IO) { - SmtpOutMsg *SendMsg = IO->Data; char buf[256]; void *src; @@ -258,16 +257,15 @@ eNextState mx_connect_ip(AsyncIO *IO) SmtpOutMsg *SendMsg = IO->Data; EVS_syslog(LOG_DEBUG, "SMTP: %s\n", __FUNCTION__); - + IO->ConnectMe = SendMsg->pCurrRelay; - /* Bypass the ns lookup result like this: IO->Addr.sin_addr.s_addr = inet_addr("127.0.0.1"); */ SetConnectStatus(IO); - return InitEventIO(IO, SendMsg, - SMTP_C_ConnTimeout, - SMTP_C_ReadTimeouts[0], - 1); + return EvConnectSock(IO, + SMTP_C_ConnTimeout, + SMTP_C_ReadTimeouts[0], + 1); } eNextState get_one_mx_host_ip_done(AsyncIO *IO) @@ -361,13 +359,13 @@ eNextState smtp_resolve_mx_record_done(AsyncIO *IO) while ((pp != NULL) && (*pp != NULL) && ((*pp)->Next != NULL)) pp = &(*pp)->Next; - if ((IO->DNSQuery->DNSStatus == ARES_SUCCESS) && - (IO->DNSQuery->VParsedDNSReply != NULL)) + if ((IO->DNS.Query->DNSStatus == ARES_SUCCESS) && + (IO->DNS.Query->VParsedDNSReply != NULL)) { /* ok, we found mx records. */ SendMsg->IO.ErrMsg = SendMsg->MyQEntry->StatusMessage; SendMsg->CurrMX = SendMsg->AllMX - = IO->DNSQuery->VParsedDNSReply; + = IO->DNS.Query->VParsedDNSReply; while (SendMsg->CurrMX) { int i; for (i = 0; i < 2; i++) { @@ -437,7 +435,7 @@ eNextState resolve_mx_records(AsyncIO *IO) ******************************************************************************/ SmtpOutMsg *new_smtp_outmsg(OneQueItem *MyQItem, - MailQEntry *MyQEntry, + MailQEntry *MyQEntry, int MsgCount) { SmtpOutMsg * SendMsg; @@ -450,51 +448,44 @@ SmtpOutMsg *new_smtp_outmsg(OneQueItem *MyQItem, SendMsg->MyQItem = MyQItem; SendMsg->pCurrRelay = MyQItem->URL; - SendMsg->IO.Data = SendMsg; - - SendMsg->IO.SendDone = SMTP_C_DispatchWriteDone; - SendMsg->IO.ReadDone = SMTP_C_DispatchReadDone; - SendMsg->IO.Terminate = SMTP_C_Terminate; - SendMsg->IO.LineReader = SMTP_C_ReadServerStatus; - SendMsg->IO.ConnFail = SMTP_C_ConnFail; - SendMsg->IO.DNSFail = SMTP_C_DNSFail; - SendMsg->IO.Timeout = SMTP_C_Timeout; - SendMsg->IO.ShutdownAbort = SMTP_C_Shutdown; - - SendMsg->IO.SendBuf.Buf = NewStrBufPlain(NULL, 1024); - SendMsg->IO.RecvBuf.Buf = NewStrBufPlain(NULL, 1024); - SendMsg->IO.IOBuf = NewStrBuf(); - - SendMsg->IO.NextState = eReadMessage; + InitIOStruct(&SendMsg->IO, + SendMsg, + eReadMessage, + SMTP_C_ReadServerStatus, + SMTP_C_DNSFail, + SMTP_C_DispatchWriteDone, + SMTP_C_DispatchReadDone, + SMTP_C_Terminate, + SMTP_C_ConnFail, + SMTP_C_Timeout, + SMTP_C_Shutdown); return SendMsg; } void smtp_try_one_queue_entry(OneQueItem *MyQItem, - MailQEntry *MyQEntry, - StrBuf *MsgText, + MailQEntry *MyQEntry, + StrBuf *MsgText, int KeepMsgText, /* KeepMsgText allows us to use MsgText as ours. */ int MsgCount) { - AsyncIO *IO; SmtpOutMsg *SendMsg; syslog(LOG_DEBUG, "SMTP: %s\n", __FUNCTION__); SendMsg = new_smtp_outmsg(MyQItem, MyQEntry, MsgCount); - IO = &SendMsg->IO; if (KeepMsgText) SendMsg->msgtext = MsgText; - else SendMsg->msgtext = NewStrBufDup(MsgText); - + else SendMsg->msgtext = NewStrBufDup(MsgText); + if (smtp_resolve_recipients(SendMsg)) { - CitContext *SubC; - SubC = CloneContext (CC); - SubC->session_specific_data = (char*) SendMsg; - SendMsg->IO.CitContext = SubC; - - safestrncpy(SubC->cs_host, SendMsg->node, sizeof(SubC->cs_host)); + + safestrncpy( + ((CitContext *)SendMsg->IO.CitContext)->cs_host, + SendMsg->node, + sizeof(((CitContext *)SendMsg->IO.CitContext)->cs_host)); + syslog(LOG_DEBUG, "SMTP Starting: [%ld] <%s> CC <%d> \n", - SendMsg->MyQItem->MessageID, + SendMsg->MyQItem->MessageID, ChrPtr(SendMsg->MyQEntry->Recipient), ((CitContext*)SendMsg->IO.CitContext)->cs_pid); if (SendMsg->pCurrRelay == NULL) @@ -513,10 +504,10 @@ void smtp_try_one_queue_entry(OneQueItem *MyQItem, } else { /* No recipients? well fail then. */ - if ((SendMsg==NULL) || + if ((SendMsg==NULL) || (SendMsg->MyQEntry == NULL)) { SendMsg->MyQEntry->Status = 5; - StrBufPlain(SendMsg->MyQEntry->StatusMessage, + StrBufPlain(SendMsg->MyQEntry->StatusMessage, HKEY("Invalid Recipient!")); } FinalizeMessageSend(SendMsg); @@ -627,8 +618,6 @@ eNextState SMTP_C_ConnFail(AsyncIO *IO) } eNextState SMTP_C_DNSFail(AsyncIO *IO) { - SmtpOutMsg *pMsg = IO->Data; - EVS_syslog(LOG_DEBUG, "SMTP: %s\n", __FUNCTION__); return FailOneAttempt(IO); }