]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Clean up SSQLite3::~SSQLite3 13955/head
authorJosh Soref <2119212+jsoref@users.noreply.github.com>
Tue, 19 Mar 2024 18:21:04 +0000 (14:21 -0400)
committerGitHub <noreply@github.com>
Tue, 19 Mar 2024 18:21:04 +0000 (14:21 -0400)
* The loop will run once or twice
* There used to be some cleanup that was done in the failure case but it has been gone for a while
* Clarify logic
* Report error message from sqlite3

pdns/ssqlite3.cc

index 2fecbba5bfa53169b92c4938647ea909d939c589..ec28058ea85e5bf171b77e9ed8166a9514ef4040 100644 (file)
@@ -319,17 +319,17 @@ void SSQLite3::setLog(bool state)
 // Destructor.
 SSQLite3::~SSQLite3()
 {
-  for (int tries = 0;; ++tries) {
+  for (int tried = 0;; ++tried) {
     int ret = sqlite3_close(m_pDB);
-    if (ret != SQLITE_OK) {
-      if (tries != 0 || ret != SQLITE_BUSY) { // if we have SQLITE_BUSY, and a working m_Pstmt, try finalize
-        cerr << "Unable to close down sqlite connection: " << ret << endl;
-        abort();
-      }
-    }
-    else {
+    if (ret == SQLITE_OK) {
       break;
     }
+    cerr << "SQLite3 error state while tearing down database: " << SSQLite3ErrorString(m_pDB) << endl;
+    if (tried == 0 && ret == SQLITE_BUSY) {
+      continue;
+    }
+    cerr << "Unable to close down sqlite connection: " << ret << endl;
+    abort();
   }
 }