summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/ICQ-WIM/src/server.cpp19
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)