From: Aki Tuomi Date: Tue, 30 Sep 2025 11:34:55 +0000 (+0300) Subject: lib-sql: driver-sqlite - Automatically reconnect read-only X-Git-Tag: 2.4.2~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b66e8d1aa660779a229c394b36798474fefe27d;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: driver-sqlite - Automatically reconnect read-only Simplifies cases where we just want to read the database --- diff --git a/src/lib-sql/driver-sqlite.c b/src/lib-sql/driver-sqlite.c index 6d1f825728..e0561b6b9e 100644 --- a/src/lib-sql/driver-sqlite.c +++ b/src/lib-sql/driver-sqlite.c @@ -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 =