diff options
-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) |