From 2e870dc1d64bdf100c46b2bedc0a8453342f1b34 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 27 Jun 2019 13:44:31 +0300 Subject: fixes #1996 (ICQ-WIM doesn't retrieve avatars, if they were occasionally removed from disk) --- protocols/ICQ-WIM/src/server.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'protocols') diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index f21860049e..ef794cab5a 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -26,14 +26,19 @@ void CIcqProto::CheckAvatarChange(MCONTACT hContact, const JSONNode &ev) { CMStringW wszIconId(ev["iconId"].as_mstring()); CMStringW oldIconID(getMStringW(hContact, "IconId")); - if (wszIconId != oldIconID) { - setWString(hContact, "IconId", wszIconId); - - CMStringA szUrl(ev["buddyIcon"].as_mstring()); - auto *pReq = new AsyncHttpRequest(CONN_MAIN, REQUEST_GET, szUrl, &CIcqProto::OnReceiveAvatar); - pReq->hContact = hContact; - Push(pReq); + if (wszIconId == oldIconID) { + wchar_t wszFullName[MAX_PATH]; + GetAvatarFileName(hContact, wszFullName, _countof(wszFullName)); + if (_waccess(wszFullName, 0) == 0) + return; } + + setWString(hContact, "IconId", wszIconId); + + CMStringA szUrl(ev["buddyIcon"].as_mstring()); + auto *pReq = new AsyncHttpRequest(CONN_MAIN, REQUEST_GET, szUrl, &CIcqProto::OnReceiveAvatar); + pReq->hContact = hContact; + Push(pReq); } void CIcqProto::CheckLastId(MCONTACT hContact, const JSONNode &ev) -- cgit v1.2.3