You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.5 KiB
88 lines
2.5 KiB
Index: src/global/mail_params.h |
|
--- src/global/mail_params.h.orig 2025-08-18 22:06:41.000000000 +0200 |
|
+++ src/global/mail_params.h 2025-08-23 10:28:42.069229000 +0200 |
|
@@ -14,7 +14,7 @@ |
|
/* |
|
* This is to make it easier to auto-generate tables. |
|
*/ |
|
-typedef int bool; |
|
+#define bool int |
|
|
|
#ifdef USE_TLS |
|
#include <openssl/opensslv.h> /* OPENSSL_VERSION_NUMBER */ |
|
Index: src/util/file_limit.c |
|
--- src/util/file_limit.c.orig 2003-10-22 20:48:36.000000000 +0200 |
|
+++ src/util/file_limit.c 2025-08-23 10:28:21.052301000 +0200 |
|
@@ -80,12 +80,21 @@ |
|
void set_file_limit(off_t limit) |
|
{ |
|
#ifdef USE_ULIMIT |
|
+#ifdef USE_SOFTLIMITONLY |
|
+#error "USE_ULIMIT and USE_SOFTLIMITONLY are mutual exclusive" |
|
+#endif |
|
if (ulimit(UL_SETFSIZE, limit / ULIMIT_BLOCK_SIZE) < 0) |
|
msg_fatal("ulimit: %m"); |
|
#else |
|
struct rlimit rlim; |
|
|
|
+#ifdef USE_SOFTLIMITONLY |
|
+ if (getrlimit(RLIMIT_FSIZE, &rlim) < 0) |
|
+ rlim.rlim_max = RLIM_INFINITY; |
|
+ rlim.rlim_cur = limit; |
|
+#else |
|
rlim.rlim_cur = rlim.rlim_max = limit; |
|
+#endif |
|
if (setrlimit(RLIMIT_FSIZE, &rlim) < 0) |
|
msg_fatal("setrlimit: %m"); |
|
#ifdef SIGXFSZ |
|
Index: src/util/msg_syslog.c |
|
--- src/util/msg_syslog.c.orig 2019-01-29 23:24:42.000000000 +0100 |
|
+++ src/util/msg_syslog.c 2025-08-23 10:28:21.052392000 +0200 |
|
@@ -63,6 +63,11 @@ |
|
#include <syslog.h> |
|
#include <string.h> |
|
#include <time.h> |
|
+#ifdef USE_SOFTLIMITONLY |
|
+#include <sys/time.h> |
|
+#include <sys/resource.h> |
|
+#include <signal.h> |
|
+#endif |
|
|
|
/* Application-specific. */ |
|
|
|
@@ -159,6 +164,9 @@ |
|
|
|
static void msg_syslog_print(int level, const char *text) |
|
{ |
|
+#ifdef USE_SOFTLIMITONLY |
|
+ struct rlimit save, rlim; |
|
+#endif |
|
static int log_level[] = { |
|
LOG_INFO, LOG_WARNING, LOG_ERR, LOG_CRIT, LOG_CRIT, |
|
}; |
|
@@ -172,6 +180,15 @@ |
|
if (level < 0 || level >= (int) (sizeof(log_level) / sizeof(log_level[0]))) |
|
msg_panic("msg_syslog_print: invalid severity level: %d", level); |
|
|
|
+#ifdef USE_SOFTLIMITONLY |
|
+ if (getrlimit(RLIMIT_FSIZE, &save) < 0) { |
|
+ save.rlim_cur = RLIM_INFINITY; |
|
+ save.rlim_max = RLIM_INFINITY; |
|
+ } |
|
+ rlim.rlim_cur = save.rlim_max; |
|
+ rlim.rlim_max = save.rlim_max; |
|
+ (void)setrlimit(RLIMIT_FSIZE, &rlim); |
|
+#endif |
|
if (level == MSG_INFO) { |
|
syslog(msg_syslog_facility | log_level[level], "%.*s", |
|
(int) MSG_SYSLOG_RECLEN, text); |
|
@@ -179,6 +196,9 @@ |
|
syslog(msg_syslog_facility | log_level[level], "%s: %.*s", |
|
severity_name[level], (int) MSG_SYSLOG_RECLEN, text); |
|
} |
|
+#ifdef USE_SOFTLIMITONLY |
|
+ (void)setrlimit(RLIMIT_FSIZE, &save); |
|
+#endif |
|
} |
|
|
|
/* msg_syslog_init - initialize */
|
|
|