]> arthur.barton.de Git - netatalk.git/blobdiff - etc/cnid_dbd/main.c
Merge from branch-2-1
[netatalk.git] / etc / cnid_dbd / main.c
index eb99102668dc0d1a1f34ea54a7145faa0de12695..a715c19a4cea5e1ad2b1cc048c0218cf96507413 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * $Id: main.c,v 1.13 2009-10-19 05:38:22 didg Exp $
- *
  * Copyright (C) Joerg Lenneis 2003
  * Copyright (c) Frank Lahm 2009
  * All Rights Reserved.  See COPYING.
@@ -124,26 +122,21 @@ static int loop(struct db_param *dbp)
         else
             timeout = 1;
 
-        if ((cret = comm_rcv(&rqst, timeout, &set)) < 0)
+        if ((cret = comm_rcv(&rqst, timeout, &set, &now)) < 0)
             return -1;
 
-        now = time(NULL);
-
         if (cret == 0) {
             /* comm_rcv returned from select without receiving anything. */
-            if (exit_sig)
+            if (exit_sig) {
                 /* Received signal (TERM|INT) */
                 return 0;
-            if (now - time_last_rqst > dbp->idle_timeout) {
-                if (comm_nbe() <= 0) {
-                    /* Idle timeout */
-                    return 0;
-                }
-                else {
-                    /* still active connections, reset time_last_rqst */
-                    time_last_rqst = now;
-                }
             }
+            if (now - time_last_rqst >= dbp->idle_timeout && comm_nbe() <= 0) {
+                /* Idle timeout */
+                return 0;
+            }
+            /* still active connections, reset time_last_rqst */
+            time_last_rqst = now;
         } else {
             /* We got a request */
             time_last_rqst = now;
@@ -158,7 +151,7 @@ static int loop(struct db_param *dbp)
                 ret = 1;
                 break;
             case CNID_DBD_OP_ADD:
-                ret = dbd_add(dbd, &rqst, &rply);
+                ret = dbd_add(dbd, &rqst, &rply, 0);
                 break;
             case CNID_DBD_OP_GET:
                 ret = dbd_get(dbd, &rqst, &rply);
@@ -167,7 +160,7 @@ static int loop(struct db_param *dbp)
                 ret = dbd_resolve(dbd, &rqst, &rply);
                 break;
             case CNID_DBD_OP_LOOKUP:
-                ret = dbd_lookup(dbd, &rqst, &rply);
+                ret = dbd_lookup(dbd, &rqst, &rply, 0);
                 break;
             case CNID_DBD_OP_UPDATE:
                 ret = dbd_update(dbd, &rqst, &rply);
@@ -186,7 +179,7 @@ static int loop(struct db_param *dbp)
                 ret = -1;
                 break;
             }
-            
+
             if ((cret = comm_snd(&rply)) < 0 || ret < 0) {
                 dbif_txn_abort(dbd);
                 return -1;
@@ -209,7 +202,7 @@ static int loop(struct db_param *dbp)
           Shall we checkpoint bdb ?
           "flush_interval" seconds passed ?
         */
-        if (now > time_next_flush) {
+        if (now >= time_next_flush) {
             LOG(log_info, logtype_cnid, "Checkpointing BerkeleyDB for volume '%s'", dbp->dir);
             if (dbif_txn_checkpoint(dbd, 0, 0, 0) < 0)
                 return -1;