summaryrefslogtreecommitdiff
path: root/protocols/ICQ-WIM/src/proto.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2023-12-01 18:31:36 +0300
committerGeorge Hazan <george.hazan@gmail.com>2023-12-01 18:31:40 +0300
commit22fb10cc778884cd1b80ba6231c2ade7cb9ec03c (patch)
tree28a4ba288ca78b0f554b4f3f6820870ef8a77719 /protocols/ICQ-WIM/src/proto.cpp
parent1d03e3af5e2b5f1ab80e250b11323a2c27fc1bcf (diff)
fixes #4005 (ICQ + Newstory: Старые ссылки на файлы нельзя сконвертировать в оффлайн файлы)
Diffstat (limited to 'protocols/ICQ-WIM/src/proto.cpp')
-rw-r--r--protocols/ICQ-WIM/src/proto.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp
index cf5c5763e0..915dbd0832 100644
--- a/protocols/ICQ-WIM/src/proto.cpp
+++ b/protocols/ICQ-WIM/src/proto.cpp
@@ -237,21 +237,25 @@ void __cdecl CIcqProto::OfflineFileThread(void *pParam)
DB::EventInfo dbei(ofd->hDbEvent);
if (m_bOnline && dbei && !strcmp(dbei.szModule, m_szModuleName) && dbei.eventType == EVENTTYPE_FILE) {
DB::FILE_BLOB blob(dbei);
- MCONTACT hContact = db_event_getContact(ofd->hDbEvent);
- if (auto *pFileInfo = RetrieveFileInfo(hContact, fileText2url(blob.getUrl()))) {
- if (!ofd->bCopy) {
- auto *pReq = new AsyncHttpRequest(CONN_NONE, REQUEST_GET, pFileInfo->szUrl, &CIcqProto::OnFileRecv);
- pReq->pUserInfo = ofd;
- pReq->AddHeader("Sec-Fetch-User", "?1");
- pReq->AddHeader("Sec-Fetch-Site", "cross-site");
- pReq->AddHeader("Sec-Fetch-Mode", "navigate");
- Push(pReq);
- return; // ofd is used inside CIcqProto::OnFileRecv, don't remove it
- }
- ofd->wszPath.Empty();
- ofd->wszPath.Append(_A2T(pFileInfo->szUrl));
- ofd->pCallback->Invoke(*ofd);
+ CMStringW wszUrl;
+ if (fileText2url(blob.getUrl(), &wszUrl)) {
+ MCONTACT hContact = db_event_getContact(ofd->hDbEvent);
+ if (auto *pFileInfo = RetrieveFileInfo(hContact, wszUrl)) {
+ if (!ofd->bCopy) {
+ auto *pReq = new AsyncHttpRequest(CONN_NONE, REQUEST_GET, pFileInfo->szUrl, &CIcqProto::OnFileRecv);
+ pReq->pUserInfo = ofd;
+ pReq->AddHeader("Sec-Fetch-User", "?1");
+ pReq->AddHeader("Sec-Fetch-Site", "cross-site");
+ pReq->AddHeader("Sec-Fetch-Mode", "navigate");
+ Push(pReq);
+ return; // ofd is used inside CIcqProto::OnFileRecv, don't remove it
+ }
+
+ ofd->wszPath.Empty();
+ ofd->wszPath.Append(_A2T(pFileInfo->szUrl));
+ ofd->pCallback->Invoke(*ofd);
+ }
}
}