]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-sql: driver-sqlite - Automatically reconnect read-only
authorAki Tuomi <aki.tuomi@open-xchange.com>
Tue, 30 Sep 2025 11:34:55 +0000 (14:34 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 20 Oct 2025 16:59:30 +0000 (19:59 +0300)
Simplifies cases where we just want to read the database

src/lib-sql/driver-sqlite.c

index 6d1f825728349324a729e2207bd65090ee251146..e0561b6b9e5521f7d00bede097a1018e747508a5 100644 (file)
@@ -149,7 +149,7 @@ static int driver_sqlite_connect(struct sql_db *_db)
 
        if (db->connected)
                return 1;
-       if (db->set->readonly)
+       if (db->set->readonly || db->connect_rc == SQLITE_READONLY)
                flags = SQLITE_OPEN_READONLY;
        else
                flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
@@ -165,6 +165,9 @@ static int driver_sqlite_connect(struct sql_db *_db)
                db->connected = TRUE;
                sqlite3_busy_timeout(db->sqlite, sqlite_busy_timeout);
                return 1;
+       case SQLITE_READONLY:
+               i_assert(!db->set->readonly);
+               return driver_sqlite_connect(_db);
        default:
                i_free(_db->last_connect_error);
                _db->last_connect_error =