From ddf1b11a732e293cd242c80bc63d459dda595bf4 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Wed, 28 Sep 2016 19:41:08 +0100 Subject: Default to filesystem space/inode checking enabled --- src/src/globals.c | 8 ++++---- src/src/receive.c | 21 ++++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/src/globals.c b/src/src/globals.c index cb71a6094..631e1d61c 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -488,11 +488,11 @@ int callout_cache_positive_expire = 24*60*60; int callout_cache_negative_expire = 2*60*60; uschar *callout_random_local_part = US"$primary_hostname-$tod_epoch-testing"; uschar *check_dns_names_pattern= US"(?i)^(?>(?(1)\\.|())[^\\W](?>[a-z0-9/_-]*[^\\W])?)+(\\.?)$"; -int check_log_inodes = 0; -int check_log_space = 0; +int check_log_inodes = 100; +int check_log_space = 10*1024; /* 10K Kbyte == 10MB */ BOOL check_rfc2047_length = TRUE; -int check_spool_inodes = 0; -int check_spool_space = 0; +int check_spool_inodes = 100; +int check_spool_space = 10*1024; /* 10K Kbyte == 10MB */ uschar *chunking_advertise_hosts = US"*"; unsigned chunking_datasize = 0; diff --git a/src/src/receive.c b/src/src/receive.c index 51ce2844e..e53587619 100644 --- a/src/src/receive.c +++ b/src/src/receive.c @@ -124,6 +124,7 @@ receive_statvfs(BOOL isspool, int *inodeptr) { #ifdef HAVE_STATFS struct STATVFS statbuf; +struct stat dummy; uschar *path; uschar *name; uschar buffer[1024]; @@ -180,12 +181,18 @@ else memset(&statbuf, 0, sizeof(statbuf)); if (STATVFS(CS path, &statbuf) != 0) - { - log_write(0, LOG_MAIN|LOG_PANIC, "cannot accept message: failed to stat " - "%s directory %s: %s", name, spool_directory, strerror(errno)); - smtp_closedown(US"spool or log directory problem"); - exim_exit(EXIT_FAILURE); - } + if (stat(CS path, &dummy) == -1 && errno == ENOENT) + { /* Can happen on first run after installation */ + *inodeptr = -1; + return -1; + } + else + { + log_write(0, LOG_MAIN|LOG_PANIC, "cannot accept message: failed to stat " + "%s directory %s: %s", name, path, strerror(errno)); + smtp_closedown(US"spool or log directory problem"); + exim_exit(EXIT_FAILURE); + } *inodeptr = (statbuf.F_FILES > 0)? statbuf.F_FAVAIL : -1; @@ -193,9 +200,9 @@ if (STATVFS(CS path, &statbuf) != 0) return (int)(((double)statbuf.F_BAVAIL * (double)statbuf.F_FRSIZE)/1024.0); +#else /* Unable to find partition sizes in this environment. */ -#else *inodeptr = -1; return -1; #endif -- cgit v1.2.3