From bd073cfd7247526bfa3ad9c26b4811258d82d1a3 Mon Sep 17 00:00:00 2001 From: Love Hornquist Astrand Date: Sun, 19 Jul 2009 18:01:51 -0700 Subject: [PATCH] Limit maxinum retries of BUSY/BLOCK/LOCKED operations to MAX_RETRIES (default 10) --- lib/hdb/hdb-sqlite.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/hdb/hdb-sqlite.c b/lib/hdb/hdb-sqlite.c index 77cc2a519..be9d26ab5 100644 --- a/lib/hdb/hdb-sqlite.c +++ b/lib/hdb/hdb-sqlite.c @@ -34,6 +34,8 @@ #include "hdb_locl.h" #include "sqlite3.h" +#define MAX_RETRIES 10 + typedef struct hdb_sqlite_db { double version; sqlite3 *db; @@ -126,10 +128,11 @@ hdb_sqlite_prepare_stmt(krb5_context context, sqlite3_stmt **statement, const char *str) { - int ret; + int ret, tries = 0; ret = sqlite3_prepare_v2(db, str, -1, statement, NULL); - while(((ret == SQLITE_BUSY) || + while((tries++ < MAX_RETRIES) && + ((ret == SQLITE_BUSY) || (ret == SQLITE_IOERR_BLOCKED) || (ret == SQLITE_LOCKED))) { krb5_warnx(context, "hdb-sqlite: prepare busy");