From 39d46fb62ef01c3394ec0b453229f8d703f75153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Mon, 23 Apr 2012 13:03:56 +0200 Subject: Fixed assertion with inconsitent vcard cache. Resolves: #1077 diff --git a/Swiften/Avatars/VCardAvatarManager.cpp b/Swiften/Avatars/VCardAvatarManager.cpp index c9571c3..ef1d293 100644 --- a/Swiften/Avatars/VCardAvatarManager.cpp +++ b/Swiften/Avatars/VCardAvatarManager.cpp @@ -14,6 +14,7 @@ #include #include #include +#include namespace Swift { @@ -35,6 +36,13 @@ std::string VCardAvatarManager::getAvatarHash(const JID& jid) const { if (!avatarStorage_->hasAvatar(hash)) { VCard::ref vCard = vcardManager_->getVCard(avatarJID); if (vCard) { + std::string newHash = Hexify::hexify(SHA1::getHash(vCard->getPhoto())); + if (newHash != hash) { + // Shouldn't happen, but sometimes seem to. Might be fixed if we + // move to a safer backend. + SWIFT_LOG(warning) << "Inconsistent vCard photo hash cache"; + hash = newHash; + } avatarStorage_->addAvatar(hash, vCard->getPhoto()); } else { -- cgit v0.10.2-6-g49f6