X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=etc%2Fcnid_dbd%2Fcnid_metad.c;h=2c8e3c92e948528de237b8b3670474bdd0027c80;hp=b23d57cf41d5f6208615d2ddcec968c98742d580;hb=b0bcb8f6b0571592a50ce039882c9319e012a270;hpb=313b5f94348618d65523c1d8bde1fba9988f040a diff --git a/etc/cnid_dbd/cnid_metad.c b/etc/cnid_dbd/cnid_metad.c index b23d57cf..2c8e3c92 100644 --- a/etc/cnid_dbd/cnid_metad.c +++ b/etc/cnid_dbd/cnid_metad.c @@ -407,6 +407,26 @@ static void set_signal(void) sigprocmask(SIG_BLOCK, &set, NULL); } +static int setlimits(void) +{ + struct rlimit rlim; + + if (getrlimit(RLIMIT_NOFILE, &rlim) != 0) { + LOG(log_error, logtype_afpd, "setlimits: %s", strerror(errno)); + exit(1); + } + if (rlim.rlim_cur != RLIM_INFINITY && rlim.rlim_cur < 65535) { + rlim.rlim_cur = 65535; + if (rlim.rlim_max != RLIM_INFINITY && rlim.rlim_max < 65535) + rlim.rlim_max = 65535; + if (setrlimit(RLIMIT_NOFILE, &rlim) != 0) { + LOG(log_error, logtype_afpd, "setlimits: %s", strerror(errno)); + exit(1); + } + } + return 0; +} + /* ------------------ */ int main(int argc, char *argv[]) { @@ -487,6 +507,8 @@ int main(int argc, char *argv[]) daemon_exit(1); } + (void)setlimits(); + /* Check PID lockfile and become a daemon */ switch(server_lock("cnid_metad", _PATH_CNID_METAD_LOCK, debug)) { case -1: /* error */