]> arthur.barton.de Git - netatalk.git/commitdiff
Don't wait five second after the first error when speaking to the dbd backend, from...
authordidg <didg>
Wed, 4 Feb 2009 20:28:01 +0000 (20:28 +0000)
committerdidg <didg>
Wed, 4 Feb 2009 20:28:01 +0000 (20:28 +0000)
etc/cnid_dbd/db_param.c
libatalk/cnid/dbd/cnid_dbd.c

index 3020c80f1eb89430d2e3f18fdb4a4f095edc96c3..4fb20b018ea92d44179d0b9be06e84b92983ae0d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: db_param.c,v 1.2 2005-04-28 20:49:47 bfernhomberg Exp $
+ * $Id: db_param.c,v 1.3 2009-02-04 20:28:01 didg Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -36,7 +36,7 @@
 #define DEFAULT_FLUSH_FREQUENCY    100  
 #define DEFAULT_FLUSH_INTERVAL     30   
 #define DEFAULT_USOCK_FILE         "usock"
-#define DEFAULT_FD_TABLE_SIZE      16
+#define DEFAULT_FD_TABLE_SIZE      64
 #define DEFAULT_IDLE_TIMEOUT       600
 #define DEFAULT_CHECK              0
 
index 085e0cd2e0c633e471f0bbabb6dfbfea4450acd1..ba0ab90b2263f867ae3389312c0d827a0b026e7f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cnid_dbd.c,v 1.4 2005-09-07 15:23:22 didg Exp $
+ * $Id: cnid_dbd.c,v 1.5 2009-02-04 20:28:01 didg Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -304,6 +304,7 @@ static int transmit(CNID_private *db, struct cnid_dbd_rqst *rqst, struct cnid_db
     struct timeval tv;
     time_t orig, t;
     int silent = 1;
+    int clean = 1; /* no errors so far - to prevent sleep on first try */
     
     if (db->changed) {
         /* volume and db don't have the same timestamp
@@ -357,6 +358,7 @@ transmit_fail:
                        will log messages if something goes wrong again */
         if (db->fd != -1) {
             close(db->fd);
+            db->fd = -1; /* FD not valid... will need to reconnect */
         }
         time(&t);
         if (t - orig > MAX_DELAY) {
@@ -364,11 +366,14 @@ transmit_fail:
             return -1;
        }
 
-        /* sleep a little before retry */
-        db->fd = -1;
-        tv.tv_usec = 0;
-        tv.tv_sec  = 5;
-        select(0, NULL, NULL, NULL, &tv);
+       if (!clean) { /* don't sleep if just got disconnected by cnid server */
+            /* sleep a little before retry */
+            tv.tv_usec = 0;
+            tv.tv_sec  = 5;
+            select(0, NULL, NULL, NULL, &tv); /* sleep for 5 seconds */
+       } else {
+            clean = 0; /* false... next time sleep */
+        }
     }
     return -1;
 }