From 2411007c4bab8b5c851f3e1e9552cd7a69bbcd9b Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Thu, 28 May 2020 12:28:21 +0100 Subject: [PATCH] Parse URIs correctly --- serverkeyapi/storage/sqlite3/keydb.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/serverkeyapi/storage/sqlite3/keydb.go b/serverkeyapi/storage/sqlite3/keydb.go index d1dc61c9..1ad6e7e8 100644 --- a/serverkeyapi/storage/sqlite3/keydb.go +++ b/serverkeyapi/storage/sqlite3/keydb.go @@ -17,6 +17,8 @@ package sqlite3 import ( "context" + "errors" + "net/url" "time" "golang.org/x/crypto/ed25519" @@ -44,7 +46,19 @@ func NewDatabase( serverKey ed25519.PublicKey, serverKeyID gomatrixserverlib.KeyID, ) (*Database, error) { - db, err := sqlutil.Open(internal.SQLiteDriverName(), dataSourceName, nil) + uri, err := url.Parse(dataSourceName) + if err != nil { + return nil, err + } + var cs string + if uri.Opaque != "" { // file:filename.db + cs = uri.Opaque + } else if uri.Path != "" { // file:///path/to/filename.db + cs = uri.Path + } else { + return nil, errors.New("no filename or path in connect string") + } + db, err := sqlutil.Open(internal.SQLiteDriverName(), cs, nil) if err != nil { return nil, err }