summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2021-12-05 19:52:50 +0300
committerGeorge Hazan <ghazan@miranda.im>2021-12-05 19:52:50 +0300
commit7de7ba2e0a756265f7d77be2a2ab264c6a6b776f (patch)
treeafa6bf24fe64469bf7cd7c15222b6321c71cb993 /protocols
parent67784c8b5f579ece561eeab65f2e4b6299e9511c (diff)
fixes #2981 (ICQ: contacts search does not work if logged in by phone number)
Diffstat (limited to 'protocols')
-rw-r--r--protocols/ICQ-WIM/src/http.cpp2
-rw-r--r--protocols/ICQ-WIM/src/proto.cpp11
-rw-r--r--protocols/ICQ-WIM/src/version.h2
3 files changed, 11 insertions, 4 deletions
diff --git a/protocols/ICQ-WIM/src/http.cpp b/protocols/ICQ-WIM/src/http.cpp
index e3fc4cd62c..b41823860e 100644
--- a/protocols/ICQ-WIM/src/http.cpp
+++ b/protocols/ICQ-WIM/src/http.cpp
@@ -156,7 +156,7 @@ bool CIcqProto::ExecuteRequest(AsyncHttpRequest *pReq)
}
// replace credentials inside JSON body for pure RAPI requests
- if (pReq->m_conn == CONN_RAPI && !mir_strcmp(pReq->szUrl, ICQ_ROBUST_SERVER)) {
+ if (pReq->m_conn == CONN_RAPI && !mir_strcmp(pReq->szUrl, ICQ_ROBUST_SERVER) && !getByte(DB_KEY_PHONEREG)) {
CMStringA szAgent(FORMAT, "%S Mail.ru Windows ICQ (version 10.0.1999)", (wchar_t*)m_szOwnId);
pReq->AddHeader("User-Agent", szAgent);
pReq->AddHeader("Content-Type", "application/json");
diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp
index a228835cf3..6dff6b3b5d 100644
--- a/protocols/ICQ-WIM/src/proto.cpp
+++ b/protocols/ICQ-WIM/src/proto.cpp
@@ -524,11 +524,18 @@ HANDLE CIcqProto::SearchBasic(const wchar_t *pszSearch)
if (!m_bOnline)
return nullptr;
- auto *pReq = new AsyncHttpRequest(CONN_RAPI, REQUEST_POST, ICQ_ROBUST_SERVER, &CIcqProto::OnSearchResults);
+ bool bPhoneReg = getByte(DB_KEY_PHONEREG) != 0;
+ auto *pReq = new AsyncHttpRequest(CONN_RAPI, REQUEST_POST, bPhoneReg ? "https://u.icq.net/api/v65/rapi/search" : ICQ_ROBUST_SERVER, &CIcqProto::OnSearchResults);
JSONNode request, params; params.set_name("params");
params << WCHAR_PARAM(*pszSearch == '+' ? "phonenum" : "keyword", pszSearch);
- request << CHAR_PARAM("method", "search") << CHAR_PARAM("reqId", pReq->m_reqId) << params;
+ if (bPhoneReg) {
+ pReq->AddHeader("Content-Type", "application/json");
+ request << CHAR_PARAM("aimsid", m_aimsid);
+ }
+ else request << CHAR_PARAM("method", "search");
+
+ request << CHAR_PARAM("reqId", pReq->m_reqId) << params;
pReq->m_szParam = ptrW(json_write(&request));
Push(pReq);
return pReq;
diff --git a/protocols/ICQ-WIM/src/version.h b/protocols/ICQ-WIM/src/version.h
index 5b29ecef53..b8d73bc709 100644
--- a/protocols/ICQ-WIM/src/version.h
+++ b/protocols/ICQ-WIM/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 96
#define __RELEASE_NUM 1
-#define __BUILD_NUM 5
+#define __BUILD_NUM 6
#include <stdver.h>