struct rlimit rlim;
if (getrlimit(RLIMIT_NOFILE, &rlim) != 0) {
- LOG(log_error, logtype_afpd, "setlimits: %s", strerror(errno));
- exit(1);
+ LOG(log_warning, logtype_afpd, "setlimits: reading current limits failed: %s", strerror(errno));
+ return -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);
+ LOG(log_warning, logtype_afpd, "setlimits: increasing limits failed: %s", strerror(errno));
+ return -1;
}
}
return 0;
if (!afp_options_parse(ac, av, &default_options))
exit(EXITERR_CONF);
+ if (check_lockfile("afpd", default_options.pidfile) != 0)
+ exit(EXITERR_SYS);
+
if (!(default_options.flags & OPTION_DEBUG) && (daemonize(0, 0) != 0))
exit(EXITERR_SYS);
- switch(check_lockfile("afpd", default_options.pidfile)) {
- case 0:
- break;
- default:
+ if (create_lockfile("afpd", default_options.pidfile) != 0)
exit(EXITERR_SYS);
- }
/* Log SIGBUS/SIGSEGV SBT */
fault_setup(NULL);