]> skyeroc.xyz Git - dgamelaunch/commitdiff
When the sqlite db is locked, retry up to ten times, sleeping one second between...
authorPasi Kallinen <paxed@alt.org>
Thu, 27 Dec 2007 23:44:09 +0000 (23:44 +0000)
committerPasi Kallinen <paxed@alt.org>
Thu, 27 Dec 2007 23:44:09 +0000 (23:44 +0000)
git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@375 db0b04b0-f4d1-0310-9a6d-de3e77497b0e

dgamelaunch.c

index 72609538ade0ce02332f5989b32e19a20d93ab7b..d99bdfe0816dae3cc4000134096995e778801ff8 100644 (file)
@@ -1320,7 +1320,7 @@ userexist (char *cname, int isnew)
 {
     sqlite3 *db;
     char *errmsg = NULL;
-    int ret;
+    int ret, retry = 10;
 
     char *qbuf;
 
@@ -1344,7 +1344,10 @@ userexist (char *cname, int isnew)
        userexist_tmp_me = NULL;
     }
 
-    ret = sqlite3_exec(db, qbuf, userexist_callback, 0, &errmsg);
+    do {
+       ret = sqlite3_exec(db, qbuf, userexist_callback, 0, &errmsg);
+       if (ret == SQLITE_BUSY) sleep(1);
+    } while ((ret == SQLITE_BUSY) && (retry-- > 0));
 
     if (ret != SQLITE_OK) {
        sqlite3_close(db);
@@ -1540,7 +1543,7 @@ writefile (int requirenew)
 {
     sqlite3 *db;
     char *errmsg = NULL;
-    int ret;
+    int ret, retry = 10;
 
     char *qbuf;
     char tmpbuf[32];
@@ -1560,7 +1563,10 @@ writefile (int requirenew)
        graceful_exit(107);
     }
 
-    ret = sqlite3_exec(db, qbuf, NULL, NULL, &errmsg);
+    do {
+       ret = sqlite3_exec(db, qbuf, NULL, NULL, &errmsg);
+       if (ret == SQLITE_BUSY) sleep(1);
+    } while ((ret == SQLITE_BUSY) && (retry-- > 0));
 
     sqlite3_free(qbuf);