/*
- * $Id: cnid_dbd.c,v 1.1.4.18.2.3 2005-09-27 10:40:41 didg Exp $
+ * $Id: cnid_dbd.c,v 1.1.4.18.2.4 2007-06-06 10:13:17 didg Exp $
*
* Copyright (C) Joerg Lenneis 2003
* All Rights Reserved. See COPYING.
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
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) {
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;
}