fix: store config without db-path leads SIGSEGV (#1218)

This commit is contained in:
Hanno Cornelius 2022-10-04 14:34:05 +01:00 committed by GitHub
parent 787464487b
commit ad628b5b52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 2 deletions

View File

@ -19,6 +19,10 @@ logScope:
proc init(db: SqliteDatabase): MessageStoreResult[void] =
## Misconfiguration can lead to nil DB
if db.isNil():
return err("db not initialized")
# Create table, if doesn't exist
let resCreate = createTable(db)
if resCreate.isErr():

View File

@ -61,6 +61,9 @@ proc encode*(storedInfo: StoredInfo): PeerStorageResult[ProtoBuffer] =
##########################
proc new*(T: type WakuPeerStorage, db: SqliteDatabase): PeerStorageResult[T] =
## Misconfiguration can lead to nil DB
if db.isNil():
return err("db not initialized")
## Create the "Peer" table
## It contains:

View File

@ -886,20 +886,25 @@ when isMainModule:
storeTuple.pStorage = res.value
if conf.persistMessages:
if conf.sqliteStore:
if conf.sqliteStore:
debug "setting up sqlite-only store"
let res = SqliteStore.init(sqliteDatabase)
if res.isErr():
warn "failed to init message store", err = res.error
waku_node_errors.inc(labelValues = ["init_store_failure"])
else:
storeTuple.mStorage = res.value
else:
elif not sqliteDatabase.isNil():
debug "setting up dual message store"
let res = DualMessageStore.init(sqliteDatabase, conf.storeCapacity)
if res.isErr():
warn "failed to init message store", err = res.error
waku_node_errors.inc(labelValues = ["init_store_failure"])
else:
storeTuple.mStorage = res.value
else:
debug "setting up in-memory store"
storeTuple.mStorage = StoreQueueRef.new(conf.storeCapacity)
ok(storeTuple)