Merge pull request #1331 from slingamn/issue1330_realname

fix #1330
This commit is contained in:
Shivaram Lingamneni 2020-10-16 09:41:57 -07:00 committed by GitHub
commit e993672a0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 1 deletions

View File

@ -1361,6 +1361,7 @@ func (am *AccountManager) Unregister(account string, erase bool) error {
lastSeenKey := fmt.Sprintf(keyAccountLastSeen, casefoldedAccount) lastSeenKey := fmt.Sprintf(keyAccountLastSeen, casefoldedAccount)
unregisteredKey := fmt.Sprintf(keyAccountUnregistered, casefoldedAccount) unregisteredKey := fmt.Sprintf(keyAccountUnregistered, casefoldedAccount)
modesKey := fmt.Sprintf(keyAccountModes, casefoldedAccount) modesKey := fmt.Sprintf(keyAccountModes, casefoldedAccount)
realnameKey := fmt.Sprintf(keyAccountRealname, casefoldedAccount)
var clients []*Client var clients []*Client
defer func() { defer func() {
@ -1419,6 +1420,7 @@ func (am *AccountManager) Unregister(account string, erase bool) error {
tx.Delete(joinedChannelsKey) tx.Delete(joinedChannelsKey)
tx.Delete(lastSeenKey) tx.Delete(lastSeenKey)
tx.Delete(modesKey) tx.Delete(modesKey)
tx.Delete(realnameKey)
_, err := tx.Delete(vhostQueueKey) _, err := tx.Delete(vhostQueueKey)
am.decrementVHostQueueCount(casefoldedAccount, err) am.decrementVHostQueueCount(casefoldedAccount, err)

View File

@ -24,7 +24,7 @@ const (
// 'version' of the database schema // 'version' of the database schema
keySchemaVersion = "db.version" keySchemaVersion = "db.version"
// latest schema of the db // latest schema of the db
latestDbSchema = "15" latestDbSchema = "16"
keyCloakSecret = "crypto.cloak_secret" keyCloakSecret = "crypto.cloak_secret"
) )
@ -812,6 +812,29 @@ func schemaChangeV14ToV15(config *Config, tx *buntdb.Tx) error {
return nil return nil
} }
// #1330: delete any stale realname records
func schemaChangeV15ToV16(config *Config, tx *buntdb.Tx) error {
prefix := "account.realname "
verifiedPrefix := "account.verified "
var keys []string
tx.AscendGreaterOrEqual("", prefix, func(key, value string) bool {
if !strings.HasPrefix(key, prefix) {
return false
}
acct := strings.TrimPrefix(key, prefix)
verifiedKey := verifiedPrefix + acct
_, verifiedErr := tx.Get(verifiedKey)
if verifiedErr != nil {
keys = append(keys, key)
}
return true
})
for _, key := range keys {
tx.Delete(key)
}
return nil
}
func init() { func init() {
allChanges := []SchemaChange{ allChanges := []SchemaChange{
{ {
@ -884,6 +907,11 @@ func init() {
TargetVersion: "15", TargetVersion: "15",
Changer: schemaChangeV14ToV15, Changer: schemaChangeV14ToV15,
}, },
{
InitialVersion: "15",
TargetVersion: "16",
Changer: schemaChangeV15ToV16,
},
} }
// build the index // build the index