diff --git a/keyserver/storage/postgres/cross_signing_keys_table.go b/keyserver/storage/postgres/cross_signing_keys_table.go index 4862d137..766e94b3 100644 --- a/keyserver/storage/postgres/cross_signing_keys_table.go +++ b/keyserver/storage/postgres/cross_signing_keys_table.go @@ -68,7 +68,6 @@ func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUser( return nil, err } defer internal.CloseAndLogIfError(ctx, rows, "selectCrossSigningKeysForUserStmt: rows.close() failed") - r = api.CrossSigningKeyMap{} for rows.Next() { var keyType gomatrixserverlib.CrossSigningKeyPurpose var keyID gomatrixserverlib.KeyID @@ -76,6 +75,9 @@ func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUser( if err := rows.Scan(&keyType, &keyID, &keyData); err != nil { return nil, err } + if _, ok := r[keyType]; !ok { + r[keyType] = map[gomatrixserverlib.KeyID]gomatrixserverlib.Base64Bytes{} + } r[keyType][keyID] = keyData } return diff --git a/keyserver/storage/sqlite3/cross_signing_keys_table.go b/keyserver/storage/sqlite3/cross_signing_keys_table.go index 76092b02..d647906d 100644 --- a/keyserver/storage/sqlite3/cross_signing_keys_table.go +++ b/keyserver/storage/sqlite3/cross_signing_keys_table.go @@ -68,7 +68,6 @@ func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUser( return nil, err } defer internal.CloseAndLogIfError(ctx, rows, "selectCrossSigningKeysForUserStmt: rows.close() failed") - r = api.CrossSigningKeyMap{} for rows.Next() { var keyType gomatrixserverlib.CrossSigningKeyPurpose var keyID gomatrixserverlib.KeyID @@ -76,6 +75,9 @@ func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUser( if err := rows.Scan(&keyType, &keyID, &keyData); err != nil { return nil, err } + if _, ok := r[keyType]; !ok { + r[keyType] = map[gomatrixserverlib.KeyID]gomatrixserverlib.Base64Bytes{} + } r[keyType][keyID] = keyData } return