summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Maudsley <richard.maudsley@isode.com>2014-06-24 16:09:00 (GMT)
committerRichard Maudsley <richard.maudsley@isode.com>2014-06-24 16:09:04 (GMT)
commit59c3d7532b7768c6ab0c8cf6f4c587206c080c14 (patch)
tree490a46d3ff8852b781644475c4762d1c3f697b41 /Swift/Controllers
parentc779e07f6d1d23cc157ab3823a00edd95f70ab3b (diff)
downloadswift-59c3d7532b7768c6ab0c8cf6f4c587206c080c14.zip
swift-59c3d7532b7768c6ab0c8cf6f4c587206c080c14.tar.bz2
Fix VCard update not being broadcast when clearing avatar.
Test-Information: Connect two clients, set and clear the avatar from one of the clients, check that the second client receives a presence update with the correct hash and that the contacts avatar is updated in the roster and any open chat windows. Change-Id: I96ad8a9cfaa618aa07acf1cb4452855435ba1179
Diffstat (limited to 'Swift/Controllers')
-rw-r--r--Swift/Controllers/MainController.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index 45a0df7..df137f4 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -468,9 +468,7 @@ void MainController::sendPresence(boost::shared_ptr<Presence> presence) {
notifier_->setTemporarilyDisabled(presence->getShow() == StatusShow::DND);
// Add information and send
- if (!vCardPhotoHash_.empty()) {
- presence->updatePayload(boost::make_shared<VCardUpdate>(vCardPhotoHash_));
- }
+ presence->updatePayload(boost::make_shared<VCardUpdate>(vCardPhotoHash_));
client_->getPresenceSender()->sendPresence(presence);
if (presence->getType() == Presence::Unavailable) {
logout();
@@ -768,10 +766,13 @@ void MainController::handleServerDiscoInfoResponse(boost::shared_ptr<DiscoInfo>
}
void MainController::handleVCardReceived(const JID& jid, VCard::ref vCard) {
- if (!jid.equals(jid_, JID::WithoutResource) || !vCard || vCard->getPhoto().empty()) {
+ if (!jid.equals(jid_, JID::WithoutResource) || !vCard) {
return;
}
- std::string hash = Hexify::hexify(networkFactories_->getCryptoProvider()->getSHA1Hash(vCard->getPhoto()));
+ std::string hash;
+ if (!vCard->getPhoto().empty()) {
+ hash = Hexify::hexify(networkFactories_->getCryptoProvider()->getSHA1Hash(vCard->getPhoto()));
+ }
if (hash != vCardPhotoHash_) {
vCardPhotoHash_ = hash;
if (client_ && client_->isAvailable()) {