|
|
@@ -23,3 +23,85 @@ This patch drops the deprecated OpenLDAP API.
|
|
|
#endif
|
|
|
}
|
|
|
if (msg_verbose)
|
|
|
+
|
|
|
+https://rt.openpkg.org/Ticket/Display.html?id=285
|
|
|
+ USE_SOFTLIMITONLY kludge
|
|
|
+
|
|
|
+Index: src/util/file_limit.c
|
|
|
+--- src/util/file_limit.c.orig 2000-08-22 23:44:44.000000000 +0200
|
|
|
++++ src/util/file_limit.c 2003-10-28 11:11:47.000000000 +0100
|
|
|
+@@ -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 2003-09-14 03:34:33.000000000 +0200
|
|
|
++++ src/util/msg_syslog.c 2003-10-28 11:14:00.000000000 +0100
|
|
|
+@@ -50,6 +50,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. */
|
|
|
+
|
|
|
+@@ -144,6 +149,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,
|
|
|
+ };
|
|
|
+@@ -154,6 +162,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(syslog_facility | log_level[level], "%.*s",
|
|
|
+ (int) MSG_SYSLOG_RECLEN, text);
|
|
|
+@@ -161,6 +178,9 @@
|
|
|
+ syslog(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 */
|
|
|
+
|