diff options
author | George Hazan <ghazan@miranda.im> | 2019-06-27 13:44:31 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-06-27 13:44:31 +0300 |
commit | 2e870dc1d64bdf100c46b2bedc0a8453342f1b34 (patch) | |
tree | b231e1165990c46a6fb0808650951e3e597d2b28 /protocols | |
parent | 8a57021372287690973dc13cbcd9dd41946cc6f9 (diff) |
fixes #1996 (ICQ-WIM doesn't retrieve avatars, if they were occasionally removed from disk)
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/ICQ-WIM/src/server.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
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) |