X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fsmtp%2Fsmtp_clienthandlers.c;h=b3de3ae1ee0acac10af62d859bc44d98f17ca795;hb=0d7d457ca13abbbc077633edd900cf20f6552dda;hp=ebc6a7cb0d8a2262dafadc155d6630c8e66276e6;hpb=73422328a6781e5073a485cf85d54b43974153d9;p=citadel.git diff --git a/citadel/modules/smtp/smtp_clienthandlers.c b/citadel/modules/smtp/smtp_clienthandlers.c index ebc6a7cb0..b3de3ae1e 100644 --- a/citadel/modules/smtp/smtp_clienthandlers.c +++ b/citadel/modules/smtp/smtp_clienthandlers.c @@ -19,19 +19,19 @@ * * Copyright (c) 1998-2012 by the citadel.org team * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3. + * + * * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + * */ #include "sysdep.h" @@ -90,26 +90,28 @@ #define SMTP_ERROR(WHICH_ERR, ERRSTR) do { \ Msg->MyQEntry->Status = WHICH_ERR; \ - StrBufAppendBufPlain(Msg->MyQEntry->StatusMessage, \ + StrBufAppendBufPlain(Msg->MyQEntry->StatusMessage, \ HKEY(ERRSTR), 0); \ + StrBufTrim(Msg->MyQEntry->StatusMessage); \ return eAbort; } \ while (0) #define SMTP_VERROR(WHICH_ERR) do { \ Msg->MyQEntry->Status = WHICH_ERR; \ - StrBufPlain(Msg->MyQEntry->StatusMessage, \ - ChrPtr(Msg->IO.IOBuf) + 4, \ - StrLength(Msg->IO.IOBuf) - 4); \ + StrBufPlain(Msg->MyQEntry->StatusMessage, \ + ChrPtr(Msg->IO.IOBuf) + 4, \ + StrLength(Msg->IO.IOBuf) - 4); \ + StrBufTrim(Msg->MyQEntry->StatusMessage); \ return eAbort; } \ while (0) #define SMTP_IS_STATE(WHICH_STATE) (ChrPtr(Msg->IO.IOBuf)[0] == WHICH_STATE) #define SMTP_DBG_SEND() \ - EVS_syslog(LOG_DEBUG, "SMTP: > %s\n", ChrPtr(Msg->IO.SendBuf.Buf)) + EVS_syslog(LOG_DEBUG, "> %s\n", ChrPtr(Msg->IO.SendBuf.Buf)) #define SMTP_DBG_READ() \ - EVS_syslog(LOG_DEBUG, "SMTP: < %s\n", ChrPtr(Msg->IO.IOBuf)) + EVS_syslog(LOG_DEBUG, "< %s\n", ChrPtr(Msg->IO.IOBuf)) /*****************************************************************************/ @@ -120,6 +122,7 @@ eNextState SMTPC_read_greeting(SmtpOutMsg *Msg) /* Process the SMTP greeting from the server */ AsyncIO *IO = &Msg->IO; SMTP_DBG_READ(); + SetSMTPState(IO, eSTMPsmtp); if (!SMTP_IS_STATE('2')) { if (SMTP_IS_STATE('4')) @@ -302,11 +305,13 @@ eNextState SMTPC_read_DATAcmd_reply(SmtpOutMsg *Msg) SMTP_DBG_READ(); if (!SMTP_IS_STATE('3')) { + SetSMTPState(IO, eSTMPfailOne); if (SMTP_IS_STATE('4')) SMTP_VERROR(3); else SMTP_VERROR(5); } + SetSMTPState(IO, eSTMPsmtpdata); return eSendReply; } @@ -350,10 +355,12 @@ eNextState SMTPC_read_data_body_reply(SmtpOutMsg *Msg) SMTP_VERROR(5); } + SetSMTPState(IO, eSTMPsmtpdone); /* We did it! */ StrBufPlain(Msg->MyQEntry->StatusMessage, &ChrPtr(Msg->IO.RecvBuf.Buf)[4], StrLength(Msg->IO.RecvBuf.Buf) - 4); + StrBufTrim(Msg->MyQEntry->StatusMessage); Msg->MyQEntry->Status = 2; return eSendReply; } @@ -373,9 +380,8 @@ eNextState SMTPC_read_QUIT_reply(SmtpOutMsg *Msg) AsyncIO *IO = &Msg->IO; SMTP_DBG_READ(); - EVS_syslog(LOG_INFO, - "SMTP client[%ld]: delivery to <%s> @ <%s> (%s) succeeded\n", - Msg->n, + EVS_syslog(LOG_DEBUG, + "delivery to <%s> @ <%s> (%s) succeeded\n", Msg->user, Msg->node, Msg->name); @@ -457,8 +463,8 @@ const ConstStr ReadErrors[eMaxSMTPC + 1] = { {HKEY("Connection broken during SMTP RCPT")}, {HKEY("Connection broken during SMTP DATA")}, {HKEY("Connection broken during SMTP message transmit")}, - {HKEY("")},/* quit reply, don't care. */ - {HKEY("")},/* quit reply, don't care. */ + {HKEY("Connection broken during SMTP message transmit")},/* quit reply, don't care. */ + {HKEY("Connection broken during SMTP message transmit")},/* quit reply, don't care. */ {HKEY("")}/* quit reply, don't care. */ }; @@ -475,7 +481,7 @@ int smtp_resolve_recipients(SmtpOutMsg *Msg) int lp, rp; int i; - EVNCS_syslog(LOG_DEBUG, "SMTP: %s\n", __FUNCTION__); + EVNCS_syslog(LOG_DEBUG, "%s\n", __FUNCTION__); if ((Msg==NULL) || (Msg->MyQEntry == NULL) || @@ -490,9 +496,7 @@ int smtp_resolve_recipients(SmtpOutMsg *Msg) Msg->name); EVNCS_syslog(LOG_DEBUG, - "SMTP client[%ld]: Attempting delivery to " - "<%s> @ <%s> (%s)\n", - Msg->n, + "Attempting delivery to <%s> @ <%s> (%s)\n", Msg->user, Msg->node, Msg->name);