summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2019-01-28 14:52:14 +0300
committerGeorge Hazan <ghazan@miranda.im>2019-01-28 14:52:14 +0300
commite787987f54733bd58f69ced43a506aa7fc42fb7c (patch)
treef1759f29728074e256e70bbc56aeb7d306df76d9
parente6a42bce6b8fb4ddb69de1e62bf317689db876d0 (diff)
fixes #1797 (ICQ10: only images can be transferred)
-rw-r--r--protocols/ICQ-WIM/src/proto.cpp2
-rwxr-xr-xsrc/mir_core/src/http.cpp6
2 files changed, 3 insertions, 5 deletions
diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp
index 6628c10a80..bebceafef8 100644
--- a/protocols/ICQ-WIM/src/proto.cpp
+++ b/protocols/ICQ-WIM/src/proto.cpp
@@ -377,7 +377,7 @@ HANDLE CIcqProto::SendFile(MCONTACT hContact, const wchar_t*, wchar_t **ppszFile
pwszFileName = ppszFiles[0];
auto *pReq = new AsyncHttpRequest(CONN_NONE, REQUEST_GET, "https://files.icq.com/files/init", &CIcqProto::OnFileInit);
- pReq << CHAR_PARAM("a", m_szAToken) << CHAR_PARAM("client", "icq") << CHAR_PARAM("f", "json") << WCHAR_PARAM("fileName", pwszFileName)
+ pReq << CHAR_PARAM("a", m_szAToken) << CHAR_PARAM("client", "icq") << CHAR_PARAM("f", "json") << CHAR_PARAM("fileName", ptrA(mir_urlEncode(T2Utf(pwszFileName))))
<< CHAR_PARAM("k", ICQ_APP_ID) << INT_PARAM("size", statbuf.st_size) << INT_PARAM("ts", time(0));
CalcHash(pReq);
pReq->pUserInfo = pTransfer;
diff --git a/src/mir_core/src/http.cpp b/src/mir_core/src/http.cpp
index 5539eef58c..d1386e4519 100755
--- a/src/mir_core/src/http.cpp
+++ b/src/mir_core/src/http.cpp
@@ -53,8 +53,7 @@ MIR_CORE_DLL(char*) mir_urlEncode(const char *szUrl)
const BYTE *s;
int outputLen;
for (outputLen = 0, s = (const BYTE*)szUrl; *s; s++) {
- if ((*s & 0x80) ||
- ('0' <= *s && *s <= '9') || //0-9
+ if (('0' <= *s && *s <= '9') || //0-9
('A' <= *s && *s <= 'Z') || //ABC...XYZ
('a' <= *s && *s <= 'z') || //abc...xyz
*s == '-' || *s == '_' || *s == '.' || *s == ' ' || *s == '~')
@@ -69,8 +68,7 @@ MIR_CORE_DLL(char*) mir_urlEncode(const char *szUrl)
char *d = szOutput;
for (s = (const BYTE*)szUrl; *s; s++) {
- if ((*s & 0x80) ||
- ('0' <= *s && *s <= '9') || //0-9
+ if (('0' <= *s && *s <= '9') || //0-9
('A' <= *s && *s <= 'Z') || //ABC...XYZ
('a' <= *s && *s <= 'z') || //abc...xyz
*s == '-' || *s == '_' || *s == '.' || *s == '~')