SCCS-vsn: usr.sbin/sendmail/src/recipient.c 8.4
SCCS-vsn: usr.sbin/sendmail/src/srvrsmtp.c 8.5
-static char sccsid[] = "@(#)recipient.c 8.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)recipient.c 8.4 (Berkeley) %G%";
#endif /* not lint */
# include "sendmail.h"
#endif /* not lint */
# include "sendmail.h"
bool firstone; /* set on first address sent */
char delimiter; /* the address delimiter */
int naddrs;
bool firstone; /* set on first address sent */
char delimiter; /* the address delimiter */
int naddrs;
ADDRESS *sibl; /* sibling pointer in tree */
ADDRESS *prev; /* previous sibling */
ADDRESS *sibl; /* sibling pointer in tree */
ADDRESS *prev; /* previous sibling */
return (naddrs);
if (ctladdr != NULL)
ctladdr->q_child = prev;
return (naddrs);
if (ctladdr != NULL)
ctladdr->q_child = prev;
!bitset(EF_QUEUERUN, e->e_flags))
{
a->q_flags |= QBADADDR;
!bitset(EF_QUEUERUN, e->e_flags))
{
a->q_flags |= QBADADDR;
- usrerr("550 Cannot mail directly to programs", m->m_name);
+ usrerr("550 Cannot mail directly to programs");
printf("at trylocaluser %s\n", a->q_user);
if (bitset(QDONTSEND|QBADADDR|QVERIFIED, a->q_flags))
printf("at trylocaluser %s\n", a->q_user);
if (bitset(QDONTSEND|QBADADDR|QVERIFIED, a->q_flags))
{
if (!bitset(QDONTSEND, a->q_flags))
e->e_nrcpts++;
{
if (!bitset(QDONTSEND, a->q_flags))
e->e_nrcpts++;
message("queued (user database error): %s",
errstring(errno));
e->e_nrcpts++;
message("queued (user database error): %s",
errstring(errno));
e->e_nrcpts++;
}
}
# endif
/* if it was an alias or a UDB expansion, just return now */
if (bitset(QDONTSEND|QQUEUEUP|QVERIFIED, a->q_flags))
}
}
# endif
/* if it was an alias or a UDB expansion, just return now */
if (bitset(QDONTSEND|QQUEUEUP|QVERIFIED, a->q_flags))
/*
** If we have a level two config file, then pass the name through
/*
** If we have a level two config file, then pass the name through
}
if (!bitset(QDONTSEND, a->q_flags))
e->e_nrcpts++;
}
if (!bitset(QDONTSEND, a->q_flags))
e->e_nrcpts++;
+
+ testselfdestruct:
+ if (a->q_alias == NULL && a != &e->e_from)
+ {
+ q = a->q_next;
+ while (q != NULL && bitset(QDONTSEND|QBADADDR, q->q_flags))
+ q = q->q_next;
+ if (bitset(QDONTSEND|QBADADDR, a->q_flags) && q == NULL)
+ {
+ a->q_flags |= QBADADDR;
+ usrerr("554 aliasing/forwarding loop broken");
+ }
+ }
(void) xfclose(fp, "include", fname);
FileName = oldfilename;
LineNumber = oldlinenumber;
(void) xfclose(fp, "include", fname);
FileName = oldfilename;
LineNumber = oldlinenumber;
-static char sccsid[] = "@(#)srvrsmtp.c 8.4 (Berkeley) %G% (with SMTP)";
+static char sccsid[] = "@(#)srvrsmtp.c 8.5 (Berkeley) %G% (with SMTP)";
-static char sccsid[] = "@(#)srvrsmtp.c 8.4 (Berkeley) %G% (without SMTP)";
+static char sccsid[] = "@(#)srvrsmtp.c 8.5 (Berkeley) %G% (without SMTP)";
#endif
#endif /* not lint */
#endif
#endif /* not lint */