Fixes #546. Save a record of the last imported DEP token and prefer use that one first when we read out tokens back. (#633)

This commit is contained in:
Jesse Peterson
2020-01-06 13:22:18 -08:00
committed by GitHub
parent ea393e9804
commit 9da84c1e79

View File

@@ -22,6 +22,10 @@ func (db *DB) AddToken(consumerKey string, json []byte) error {
if err != nil {
return err
}
err = b.Put([]byte("last_added"), []byte(consumerKey))
if err != nil {
return err
}
return b.Put([]byte(consumerKey), json)
})
if err != nil {
@@ -33,11 +37,13 @@ func (db *DB) AddToken(consumerKey string, json []byte) error {
func (db *DB) DEPTokens() ([]config.DEPToken, error) {
var result []config.DEPToken
var lastAdded string
err := db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(depTokenBucket))
if b == nil {
return nil
}
lastAdded = string(b.Get([]byte("last_added")))
c := b.Cursor()
prefix := []byte("CK_")
@@ -48,7 +54,14 @@ func (db *DB) DEPTokens() ([]config.DEPToken, error) {
// TODO: log problematic DEP token, or remove altogether?
continue
}
result = append(result, depToken)
if lastAdded == depToken.ConsumerKey {
// the server merely takes the first DEP token. let's
// make sure the most recent one is the one that's
// returned first
result = append([]config.DEPToken{depToken}, result...)
} else {
result = append(result, depToken)
}
}
return nil
})