aboutsummaryrefslogtreecommitdiffstats
path: root/smtpd/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'smtpd/config.c')
-rw-r--r--smtpd/config.c9
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