From: Pasi Kallinen Date: Sat, 23 Aug 2008 09:47:04 +0000 (+0000) Subject: Fix a bug that caused multiple user entries to be inserted into the sqlite db when... X-Git-Tag: v1.6.1-roc-dev~260 X-Git-Url: https://skyeroc.xyz/gitweb/?a=commitdiff_plain;h=dfc4cc51d17ae64916d6ea1b8e10f54059a1a7dc;p=dgamelaunch Fix a bug that caused multiple user entries to be inserted into the sqlite db when the db was locked by some other process. git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@448 db0b04b0-f4d1-0310-9a6d-de3e77497b0e --- diff --git a/dgamelaunch.c b/dgamelaunch.c index 2732fb4..8ea882b 100644 --- a/dgamelaunch.c +++ b/dgamelaunch.c @@ -1347,10 +1347,10 @@ userexist (char *cname, int isnew) userexist_tmp_me = NULL; } - do { - ret = sqlite3_exec(db, qbuf, userexist_callback, 0, &errmsg); - if (ret == SQLITE_BUSY) sleep(1); - } while ((ret == SQLITE_BUSY) && (retry-- > 0)); + sqlite3_busy_timeout(db, 10000); + ret = sqlite3_exec(db, qbuf, userexist_callback, 0, &errmsg); + + sqlite3_free(qbuf); if (ret != SQLITE_OK) { sqlite3_close(db); @@ -1358,8 +1358,6 @@ userexist (char *cname, int isnew) } sqlite3_close(db); - sqlite3_free(qbuf); - return userexist_tmp_me; } #endif @@ -1565,10 +1563,8 @@ writefile (int requirenew) graceful_exit(107); } - do { - ret = sqlite3_exec(db, qbuf, NULL, NULL, &errmsg); - if (ret == SQLITE_BUSY) sleep(1); - } while ((ret == SQLITE_BUSY) && (retry-- > 0)); + sqlite3_busy_timeout(db, 10000); + ret = sqlite3_exec(db, qbuf, NULL, NULL, &errmsg); sqlite3_free(qbuf); @@ -1576,7 +1572,6 @@ writefile (int requirenew) sqlite3_close(db); graceful_exit(106); } - sqlite3_close(db); } #endif