]> arthur.barton.de Git - netatalk.git/blobdiff - etc/afpd/main.c
Log warnings instead of exiting when increasing rlimits doesn't work out
[netatalk.git] / etc / afpd / main.c
index c27755655db75a551aec0505ca20975e5ed1eb06..edcfe6a7565d8339e5239b8ecead0a39fb66a821 100644 (file)
@@ -228,16 +228,16 @@ static int setlimits(void)
     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;
@@ -263,15 +263,14 @@ int main(int ac, char **av)
     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);