diff --git a/goatherd.go b/goatherd.go index dc3ee6d6d8dc81e8b9a81e2da35d5be6303e9388..e702293ef0db179b964117ed238934a052bc2f04 100644 --- a/goatherd.go +++ b/goatherd.go @@ -164,8 +164,10 @@ func get_otp(tx *sql.Tx, name string) (*hotp.HOTP, error) { } func transaction_failed(err error) bool { - // XXX: check type first? - return err == sqlite3.ErrBusy + if err, ok := err.(sqlite3.Error); ok { + return err.Code == sqlite3.ErrLocked || err.Code == sqlite3.ErrBusy + } + return false } // Retrieve secret and count for given username and try to find a match within