diff options
Diffstat (limited to 'smtpd/config.c')
-rw-r--r-- | smtpd/config.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/smtpd/config.c b/smtpd/config.c index 8b8b8570..0d80f2e3 100644 --- a/smtpd/config.c +++ b/smtpd/config.c @@ -16,6 +16,8 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "includes.h" + #include <sys/types.h> #include <sys/queue.h> #include <sys/tree.h> @@ -202,7 +204,9 @@ set_localaddrs(struct smtpd *conf, struct table *localnames) case AF_INET: sain = (struct sockaddr_in *)&ss; *sain = *(struct sockaddr_in *)p->ifa_addr; +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sain->sin_len = sizeof(struct sockaddr_in); +#endif table_add(t, ss_to_text(&ss), NULL); table_add(localnames, ss_to_text(&ss), NULL); (void)snprintf(buf, sizeof buf, "[%s]", ss_to_text(&ss)); @@ -212,7 +216,9 @@ set_localaddrs(struct smtpd *conf, struct table *localnames) case AF_INET6: sin6 = (struct sockaddr_in6 *)&ss; *sin6 = *(struct sockaddr_in6 *)p->ifa_addr; +#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN sin6->sin6_len = sizeof(struct sockaddr_in6); +#endif table_add(t, ss_to_text(&ss), NULL); table_add(localnames, ss_to_text(&ss), NULL); (void)snprintf(buf, sizeof buf, "[%s]", ss_to_text(&ss)); @@ -303,7 +309,8 @@ config_process(enum smtp_proc_type proc) fatal("fdlimit: getrlimit"); rl.rlim_cur = rl.rlim_max; if (setrlimit(RLIMIT_NOFILE, &rl) == -1) - fatal("fdlimit: setrlimit"); + if (errno != EINVAL) + fatal("fdlimit: setrlimit"); } void |