From 39d46fb62ef01c3394ec0b453229f8d703f75153 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
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 <Swiften/Avatars/AvatarStorage.h>
 #include <Swiften/MUC/MUCRegistry.h>
 #include <Swiften/VCards/VCardManager.h>
+#include <Swiften/Base/Log.h>
 
 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