648c01c693
Follow-up fixes for the combined Matrix crypto salvage (#71073, #71543, #71547): 1. Construct _pickle_key from client.device_id (resolved from whoami) instead of self._device_id (the configured value). Without this, when #71543 makes the token's real device win over a stale MATRIX_DEVICE_ID, the pickle key is built from the stale value and the Olm account is stored under a key that can never be looked up again — perpetuating the same decryption failure the PRs aim to fix. 2. Skip _migrate_legacy_crypto_pickle when the store was just deleted by _reset_crypto_store_if_device_changed — there is no account to migrate. Also check the migration return value and log a warning on failure instead of proceeding to olm.load() which fails with a cryptic BAD_ACCOUNT_KEY. 3. Add a local dict cache (_enc_info_cache) to _CryptoStateStore so the homeserver fallback in get_encryption_info() does not make a network round-trip on every is_encrypted() call. MemoryStateStore does not implement set_encryption_info, so the existing cache-back is a no-op. 4. Log homeserver encryption-info query failures at DEBUG level instead of silently returning None (which would cause OlmMachine to treat an encrypted room as unencrypted). 5. Update _CryptoStateStore docstring to mention the homeserver fallback.