]> arthur.barton.de Git - netatalk.git/blobdiff - etc/cnid_dbd/db_param.c
do some sanity checks on dbd params read from config file
[netatalk.git] / etc / cnid_dbd / db_param.c
index 0d23a32a9e9695cd81f1f55bf8b54893e0cd50d6..82a9d35b52e12d1323d5a5fc37e0c8e107ba4474 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: db_param.c,v 1.6 2009-10-13 22:55:37 didg Exp $
+ * $Id: db_param.c,v 1.8 2009-10-19 05:38:22 didg Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * Copyright (c) Frank Lahm 2009
@@ -21,6 +21,7 @@
 #include <errno.h>
 #include <sys/param.h>
 #include <sys/un.h>
+#include <sys/select.h>
 #include <atalk/logger.h>
 
 #include "db_param.h"
 #define MAXKEYLEN         64
 
 #define DEFAULT_LOGFILE_AUTOREMOVE 1
-#define DEFAULT_CACHESIZE          8 * 1024 
-#define DEFAULT_FLUSH_FREQUENCY    100
+#define DEFAULT_CACHESIZE          (8 * 1024)
+#define DEFAULT_FLUSH_FREQUENCY    1000
 #define DEFAULT_FLUSH_INTERVAL     1800
 #define DEFAULT_USOCK_FILE         "usock"
-#define DEFAULT_FD_TABLE_SIZE      128
-#define DEFAULT_IDLE_TIMEOUT       10 * 60
+#define DEFAULT_FD_TABLE_SIZE      512
+#define DEFAULT_IDLE_TIMEOUT       (10 * 60)
 
 static struct db_param params;
 static int parse_err;
@@ -76,6 +77,8 @@ static void default_params(struct db_param *dbp, char *dir)
         dbp->usock_file[0] = '\0';
     }
     dbp->fd_table_size       = DEFAULT_FD_TABLE_SIZE;
+    if ( dbp->fd_table_size > FD_SETSIZE -1)
+        dbp->fd_table_size = FD_SETSIZE -1;
     dbp->idle_timeout        = DEFAULT_IDLE_TIMEOUT;
 
     return;
@@ -183,8 +186,22 @@ struct db_param *db_param_read(char *dir, enum identity id)
     }
 
     fclose(fp);
-    if (! parse_err)
+    if (! parse_err) {
+        /* sanity checks */
+        if (params.flush_frequency <= 0) 
+            params.flush_frequency = 86400;
+
+        if (params.flush_interval <= 0)
+            params.flush_interval = 1000000;
+
+        if (params.fd_table_size <= 2)
+            params.fd_table_size = 32;
+
+        if (params.idle_timeout <= 0)
+            params.idle_timeout = 86400;
+
         return &params;
+    }
     else
         return NULL;
 }