From 9d0d3ea7326db664968a759e14e3b2795349aca2 Mon Sep 17 00:00:00 2001 From: 0xdcarns Date: Tue, 15 Mar 2022 16:40:46 -0400 Subject: [PATCH] added mutex for sqlite --- database/sqlite.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/database/sqlite.go b/database/sqlite.go index 1b8af989..4a55b457 100644 --- a/database/sqlite.go +++ b/database/sqlite.go @@ -5,6 +5,7 @@ import ( "errors" "os" "path/filepath" + "sync" _ "github.com/mattn/go-sqlite3" // need to blank import this package ) @@ -27,6 +28,8 @@ var SQLITE_FUNCTIONS = map[string]interface{}{ CLOSE_DB: sqliteCloseDB, } +var mutex sync.Mutex + func initSqliteDB() error { // == create db file if not present == if _, err := os.Stat("data"); os.IsNotExist(err) { @@ -60,6 +63,8 @@ func sqliteCreateTable(tableName string) error { func sqliteInsert(key string, value string, tableName string) error { if key != "" && value != "" && IsJSONString(value) { + mutex.Lock() + defer mutex.Unlock() insertSQL := "INSERT OR REPLACE INTO " + tableName + " (key, value) VALUES (?, ?)" statement, err := SqliteDB.Prepare(insertSQL) if err != nil { @@ -77,6 +82,8 @@ func sqliteInsert(key string, value string, tableName string) error { func sqliteInsertPeer(key string, value string) error { if key != "" && value != "" && IsJSONString(value) { + mutex.Lock() + defer mutex.Unlock() err := sqliteInsert(key, value, PEERS_TABLE_NAME) if err != nil { return err @@ -87,6 +94,8 @@ func sqliteInsertPeer(key string, value string) error { } func sqliteDeleteRecord(tableName string, key string) error { + mutex.Lock() + defer mutex.Unlock() deleteSQL := "DELETE FROM " + tableName + " WHERE key = \"" + key + "\"" statement, err := SqliteDB.Prepare(deleteSQL) if err != nil { @@ -100,6 +109,8 @@ func sqliteDeleteRecord(tableName string, key string) error { } func sqliteDeleteAllRecords(tableName string) error { + mutex.Lock() + defer mutex.Unlock() deleteSQL := "DELETE FROM " + tableName statement, err := SqliteDB.Prepare(deleteSQL) if err != nil {