diff options
author | gshapiro <gshapiro@FreeBSD.org> | 2012-12-29 20:30:46 +0000 |
---|---|---|
committer | gshapiro <gshapiro@FreeBSD.org> | 2012-12-29 20:30:46 +0000 |
commit | 840d2bbbfce5c06cdb4e10ce26107aa98d13e700 (patch) | |
tree | 1e7560ff85bedb732a3f654dd9ad287affaac140 /contrib/sendmail/src/savemail.c | |
parent | 896fc63862ccf01e4da5831d63296c6c274972a0 (diff) | |
download | FreeBSD-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.c | 34 |
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. ** |