diff options
Diffstat (limited to 'gnu/dist/sendmail')
| -rw-r--r-- | gnu/dist/sendmail/sendmail/daemon.c | 10 | ||||
| -rw-r--r-- | gnu/dist/sendmail/sendmail/sendmail.h | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gnu/dist/sendmail/sendmail/daemon.c b/gnu/dist/sendmail/sendmail/daemon.c index 68ab6c0d881..07d1ed7896a 100644 --- a/gnu/dist/sendmail/sendmail/daemon.c +++ b/gnu/dist/sendmail/sendmail/daemon.c @@ -270,6 +270,8 @@ getrequests(e) { if (timenow < Daemons[idx].d_refuse_connections_until) continue; + if (bitnset(D_DISABLE, Daemons[idx].d_flags)) + continue; if (refuseconnections(Daemons[idx].d_name, e, idx)) { if (Daemons[idx].d_socket >= 0) @@ -880,6 +882,14 @@ opendaemonsocket(d, firsttime) { save_errno = errno; syserr("opendaemonsocket: daemon %s: can't create server SMTP socket", d->d_name); + if (bitnset(D_OPTIONAL, d->d_flags) && + (save_errno == EAFNOSUPPORT || + save_errno == EPROTONOSUPPORT)) + { + syserr("opendaemonsocket: daemon %s: optional socket disabled", d->d_name); + setbitn(D_DISABLE, d->d_flags); + return -1; + } severe: if (LogLevel > 0) sm_syslog(LOG_ALERT, NOQID, diff --git a/gnu/dist/sendmail/sendmail/sendmail.h b/gnu/dist/sendmail/sendmail/sendmail.h index d5d046a9fa8..e353629b3ea 100644 --- a/gnu/dist/sendmail/sendmail/sendmail.h +++ b/gnu/dist/sendmail/sendmail/sendmail.h @@ -1444,6 +1444,8 @@ struct termescape #define D_NOCANON 'C' /* no canonification (cf) */ #define D_NOETRN 'E' /* no ETRN (MSA) */ #define D_ETRNONLY ((char)0x01) /* allow only ETRN (disk low) */ +#define D_OPTIONAL 'O' /* optional socket */ +#define D_DISABLE ((char)0x02) /* optional socket disabled */ /* Flags for submitmode */ #define SUBMIT_UNKNOWN 0x0000 /* unknown agent type */ |
