summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/src/savemail.c
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2012-12-29 20:30:46 +0000
committergshapiro <gshapiro@FreeBSD.org>2012-12-29 20:30:46 +0000
commit840d2bbbfce5c06cdb4e10ce26107aa98d13e700 (patch)
tree1e7560ff85bedb732a3f654dd9ad287affaac140 /contrib/sendmail/src/savemail.c
parent896fc63862ccf01e4da5831d63296c6c274972a0 (diff)
downloadFreeBSD-src-840d2bbbfce5c06cdb4e10ce26107aa98d13e700.zip
FreeBSD-src-840d2bbbfce5c06cdb4e10ce26107aa98d13e700.tar.gz
Merge sendmail 8.14.6 to HEAD
MFC after: 4 days
Diffstat (limited to 'contrib/sendmail/src/savemail.c')
-rw-r--r--contrib/sendmail/src/savemail.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/contrib/sendmail/src/savemail.c b/contrib/sendmail/src/savemail.c
index 4178245..2413281 100644
--- a/contrib/sendmail/src/savemail.c
+++ b/contrib/sendmail/src/savemail.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: savemail.c,v 8.314 2009/12/18 17:08:01 ca Exp $")
+SM_RCSID("@(#)$Id: savemail.c,v 8.315 2012/02/27 17:43:03 gshapiro Exp $")
static bool errbody __P((MCI *, ENVELOPE *, char *));
static bool pruneroute __P((char *));
@@ -506,6 +506,7 @@ returntosender(msg, returnq, flags, e)
int flags;
register ENVELOPE *e;
{
+ int ret;
register ENVELOPE *ee;
ENVELOPE *oldcur = CurEnv;
ENVELOPE errenvelope;
@@ -703,24 +704,35 @@ returntosender(msg, returnq, flags, e)
/* actually deliver the error message */
sendall(ee, SM_DELIVER);
-
- /* restore state */
(void) dropenvelope(ee, true, false);
- sm_rpool_free(ee->e_rpool);
- CurEnv = oldcur;
- returndepth--;
/* check for delivery errors */
+ ret = -1;
if (ee->e_parent == NULL ||
!bitset(EF_RESPONSE, ee->e_parent->e_flags))
- return 0;
- for (q = ee->e_sendqueue; q != NULL; q = q->q_next)
{
- if (QS_IS_ATTEMPTED(q->q_state))
- return 0;
+ ret = 0;
}
- return -1;
+ else
+ {
+ for (q = ee->e_sendqueue; q != NULL; q = q->q_next)
+ {
+ if (QS_IS_ATTEMPTED(q->q_state))
+ {
+ ret = 0;
+ break;
+ }
+ }
+ }
+
+ /* restore state */
+ sm_rpool_free(ee->e_rpool);
+ CurEnv = oldcur;
+ returndepth--;
+
+ return ret;
}
+
/*
** ERRBODY -- output the body of an error message.
**
OpenPOWER on IntegriCloud