Browse code

make more attempts when cl_load returns CL_ELOCKDB

git-svn: trunk@2893

Tomasz Kojm authored on 2007/03/02 08:10:09
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Thu Mar  1 22:12:22 CET 2007 (tk)
2
+---------------------------------
3
+  * clamd/server-th.c: make more attempts when cl_load returns CL_ELOCKDB
4
+
1 5
 Thu Mar  1 18:50:01 GMT 2007 (njh)
2 6
 ----------------------------------
3 7
   * libclamav/blob.h:	NAME_MAX is now in others.h
... ...
@@ -181,7 +181,7 @@ static struct cl_engine *reload_db(struct cl_engine *engine, unsigned int dbopti
181 181
 {
182 182
 	const char *dbdir;
183 183
 	int retval;
184
-	unsigned int sigs = 0;
184
+	unsigned int sigs = 0, try = 1;
185 185
 
186 186
     *ret = 0;
187 187
     if(do_check) {
... ...
@@ -226,7 +226,13 @@ static struct cl_engine *reload_db(struct cl_engine *engine, unsigned int dbopti
226 226
 	return NULL;
227 227
     }
228 228
 
229
-    if((retval = cl_load(dbdir, &engine, &sigs, dboptions))) {
229
+    while((retval = cl_load(dbdir, &engine, &sigs, dboptions)) == CL_ELOCKDB) {
230
+	logg("!reload db failed: %s (try %u)\n", cl_strerror(retval), try);
231
+	if(++try > 3)
232
+	    break;
233
+    }
234
+
235
+    if(retval) {
230 236
 	logg("!reload db failed: %s\n", cl_strerror(retval));
231 237
 	*ret = 1;
232 238
 	return NULL;