diff options
author | Sergey Bolhovskoy <elzorfox@ya.ru> | 2015-02-05 11:10:32 +0000 |
---|---|---|
committer | Sergey Bolhovskoy <elzorfox@ya.ru> | 2015-02-05 11:10:32 +0000 |
commit | 6c5b2ecc6f9e1a7968e4eab4d2e1eeed4f82d1f0 (patch) | |
tree | f63019e4dd418ba6357d55d1b690f05820745dcc | |
parent | dfe76cf65e6f20d5f9c92982a241ffecf6bb3405 (diff) |
VKontakte:
fix(???) for empty contact name on friend request (attempt 3)
fix memory leaks
git-svn-id: http://svn.miranda-ng.org/main/trunk@12006 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r-- | protocols/VKontakte/src/misc.cpp | 23 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_chats.cpp | 2 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_proto.cpp | 4 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_proto.h | 1 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_thread.cpp | 23 |
5 files changed, 34 insertions, 19 deletions
diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index ebe357b40b..414d9fc65a 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -512,13 +512,28 @@ void CVkProto::ApplyCookies(AsyncHttpRequest *pReq) /////////////////////////////////////////////////////////////////////////////////////////
+void __cdecl CVkProto::DBAddAuthRequestThread(void *p)
+{
+ MCONTACT hContact = (MCONTACT)p;
+ if (hContact == NULL || hContact == INVALID_CONTACT_ID || !IsOnline())
+ return;
+
+ for (int i = 0; i < MAX_RETRIES && CMString(ptrT(db_get_tsa(hContact, m_szModuleName, "Nick"))).IsEmpty(); i++) {
+ Sleep(1500);
+
+ if (!IsOnline())
+ return;
+ }
+ DBAddAuthRequest(hContact);
+}
+
void CVkProto::DBAddAuthRequest(const MCONTACT hContact)
{
debugLogA("CVkProto::DBAddAuthRequest");
- CMString tszNick = db_get_sa(hContact, m_szModuleName, "Nick");
- CMString tszFirstName = db_get_sa(hContact, m_szModuleName, "FirstName");
- CMString tszLastName = db_get_sa(hContact, m_szModuleName, "LastName");
+ CMString tszNick = ptrT(db_get_tsa(hContact, m_szModuleName, "Nick"));
+ CMString tszFirstName = ptrT(db_get_tsa(hContact, m_szModuleName, "FirstName"));
+ CMString tszLastName = ptrT(db_get_tsa(hContact, m_szModuleName, "LastName"));
ptrA szNick(mir_utf8encodeT(tszNick.GetBuffer()));
ptrA szFirstName(mir_utf8encodeT(tszFirstName.GetBuffer()));
@@ -591,7 +606,7 @@ void CVkProto::SetMirVer(MCONTACT hContact, int platform) }
CMString MirVer, OldMirVer;
- OldMirVer = db_get_sa(hContact, m_szModuleName, "MirVer");
+ OldMirVer = ptrT(db_get_tsa(hContact, m_szModuleName, "MirVer"));
bool bSetFlag = true;
switch (platform) {
diff --git a/protocols/VKontakte/src/vk_chats.cpp b/protocols/VKontakte/src/vk_chats.cpp index aec5954217..1ec4075495 100644 --- a/protocols/VKontakte/src/vk_chats.cpp +++ b/protocols/VKontakte/src/vk_chats.cpp @@ -575,7 +575,7 @@ void CVkProto::KickFromChat(int chat_id, int user_id, JSONNODE* pMsg) if (msg.IsEmpty()) {
msg = TranslateT("You've been kicked by ");
if (hContact != NULL)
- msg += db_get_tsa(hContact, m_szModuleName, "Nick");
+ msg += ptrT(db_get_tsa(hContact, m_szModuleName, "Nick"));
else
msg += TranslateT("(Unknown contact)");
}
diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp index 1ab60f23fa..d8215f969e 100644 --- a/protocols/VKontakte/src/vk_proto.cpp +++ b/protocols/VKontakte/src/vk_proto.cpp @@ -317,7 +317,7 @@ int CVkProto::OnPreBuildContactMenu(WPARAM hContact, LPARAM) {
LONG userID = getDword(hContact, "ID", -1);
bool bisFriend = (getByte(hContact, "Auth", -1) == 0);
- bool bisBroadcast = !(CMString(db_get_tsa(hContact, m_szModuleName, "AudioUrl")).IsEmpty());
+ bool bisBroadcast = !(CMString(ptrT(db_get_tsa(hContact, m_szModuleName, "AudioUrl"))).IsEmpty());
Menu_ShowItem(g_hContactMenuItems[CMI_VISITPROFILE], !isChatRoom(hContact));
Menu_ShowItem(g_hContactMenuItems[CMI_ADDASFRIEND], !bisFriend && !isChatRoom(hContact) && userID != VK_FEED_USER);
Menu_ShowItem(g_hContactMenuItems[CMI_DELETEFRIEND], bisFriend && userID != VK_FEED_USER);
@@ -658,7 +658,7 @@ void CVkProto::OnReceiveAuthRequest(NETLIBHTTPREQUEST *reply, AsyncHttpRequest * if (iRet == 2) {
CMString msg,
msgformat = TranslateT("User %s added as friend"),
- tszNick = db_get_tsa(param->hContact, m_szModuleName, "Nick");
+ tszNick = ptrT(db_get_tsa(param->hContact, m_szModuleName, "Nick"));
if (tszNick.IsEmpty())
tszNick = TranslateT("(Unknown contact)");
msg.AppendFormat(msgformat, tszNick.GetBuffer());
diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index 0d1e7f4ce3..7f705edd56 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -403,6 +403,7 @@ struct CVkProto : public PROTO<CVkProto> void GrabCookies(NETLIBHTTPREQUEST *nhr);
void ApplyCookies(AsyncHttpRequest*);
+ void __cdecl DBAddAuthRequestThread(void *p);
void DBAddAuthRequest(const MCONTACT hContact);
MCONTACT MContactFromDbEvent(MEVENT hDbEvent);
diff --git a/protocols/VKontakte/src/vk_thread.cpp b/protocols/VKontakte/src/vk_thread.cpp index 1dcc570619..d088d03b19 100644 --- a/protocols/VKontakte/src/vk_thread.cpp +++ b/protocols/VKontakte/src/vk_thread.cpp @@ -109,8 +109,8 @@ void CVkProto::SetServerStatus(int iNewStatus) return;
int iOldStatus = m_iStatus;
- CMString oldStatusMsg = db_get_tsa(NULL, m_szModuleName, "OldStatusMsg");
- CMString ListeningToMsg = db_get_tsa(NULL, m_szModuleName, "ListeningTo");
+ CMString oldStatusMsg = ptrT(db_get_tsa(NULL, m_szModuleName, "OldStatusMsg"));
+ CMString ListeningToMsg = ptrT(db_get_tsa(NULL, m_szModuleName, "ListeningTo"));
if (iNewStatus == ID_STATUS_OFFLINE) {
m_iStatus = ID_STATUS_OFFLINE;
@@ -346,7 +346,7 @@ MCONTACT CVkProto::SetContactInfo(JSONNODE* pItem, bool flag, bool self) setTString(hContact, "Phone", tszValue.GetBuffer());
tszValue = json_as_CMString(json_get(pItem, "status"));
- CMString tszOldStatus(db_get_tsa(hContact, hContact ? "CList" : m_szModuleName, "StatusMsg"));
+ CMString tszOldStatus(ptrT(db_get_tsa(hContact, hContact ? "CList" : m_szModuleName, "StatusMsg")));
if (tszValue != tszOldStatus) {
db_set_ts(hContact, hContact ? "CList" : m_szModuleName, "StatusMsg", tszValue.GetBuffer());
db_unset(hContact, m_szModuleName, "AudioUrl");
@@ -483,9 +483,8 @@ void CVkProto::OnReceiveUserInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe hContact = FindUser(userid, true);
if (!getBool(hContact, "ReqAuth", false)) {
RetrieveUserInfo(userid);
- setByte(hContact, "ReqAuth", 1);
- Sleep(3000);
- DBAddAuthRequest(hContact);
+ setByte(hContact, "ReqAuth", 1);
+ ForkThread(&CVkProto::DBAddAuthRequestThread, (void *)hContact);
}
}
}
@@ -1013,7 +1012,7 @@ void CVkProto::RetrieveStatusMusic(const CMString &StatusMsg) return;
CMString code;
- CMString oldStatusMsg = db_get_tsa(0, m_szModuleName, "OldStatusMsg");
+ CMString oldStatusMsg = ptrT(db_get_tsa(0, m_szModuleName, "OldStatusMsg"));
if (StatusMsg.IsEmpty()) {
if (m_iMusicSendMetod == sendBroadcastOnly)
code = "API.audio.setBroadcast();return null;";
@@ -1101,7 +1100,7 @@ INT_PTR __cdecl CVkProto::SvcDeleteFriend(WPARAM hContact, LPARAM flag) return 1;
CMString formatstr = TranslateT("Are you sure to delete %s from your friend list?"),
- tszNick = db_get_tsa(hContact, m_szModuleName, "Nick"),
+ tszNick = ptrT(db_get_tsa(hContact, m_szModuleName, "Nick")),
ptszMsg;
if (flag == 0) {
ptszMsg.AppendFormat(formatstr, tszNick.IsEmpty() ? TranslateT("(Unknown contact)") : tszNick);
@@ -1123,7 +1122,7 @@ void CVkProto::OnReceiveDeleteFriend(NETLIBHTTPREQUEST* reply, AsyncHttpRequest* JSONROOT pRoot;
JSONNODE *pResponse = CheckJsonResponse(pReq, reply, pRoot);
if (pResponse != NULL) {
- CMString tszNick = db_get_tsa(param->hContact, m_szModuleName, "Nick");
+ CMString tszNick = ptrT(db_get_tsa(param->hContact, m_szModuleName, "Nick"));
if (tszNick.IsEmpty())
tszNick = TranslateT("(Unknown contact)");
CMString msgformat, msg;
@@ -1193,7 +1192,7 @@ INT_PTR __cdecl CVkProto::SvcBanUser(WPARAM hContact, LPARAM) code += "return 1;";
CMString formatstr = TranslateT("Are you sure to ban %s? %s%sContinue?"),
- tszNick = db_get_tsa(hContact, m_szModuleName, "Nick"),
+ tszNick = ptrT(db_get_tsa(hContact, m_szModuleName, "Nick")),
ptszMsg;
ptszMsg.AppendFormat(formatstr,
@@ -1222,7 +1221,7 @@ INT_PTR __cdecl CVkProto::SvcReportAbuse(WPARAM hContact, LPARAM) return 1;
CMString formatstr = TranslateT("Are you sure to report abuse on %s?"),
- tszNick = db_get_tsa(hContact, m_szModuleName, "Nick"),
+ tszNick = ptrT(db_get_tsa(hContact, m_szModuleName, "Nick")),
ptszMsg;
ptszMsg.AppendFormat(formatstr, tszNick.IsEmpty() ? TranslateT("(Unknown contact)") : tszNick);
if (IDNO == MessageBox(NULL, ptszMsg.GetBuffer(), TranslateT("Attention!"), MB_ICONWARNING | MB_YESNO))
@@ -1239,7 +1238,7 @@ INT_PTR __cdecl CVkProto::SvcReportAbuse(WPARAM hContact, LPARAM) INT_PTR __cdecl CVkProto::SvcOpenBroadcast(WPARAM hContact, LPARAM)
{
debugLogA("CVkProto::SvcOpenBroadcast");
- CMString tszAudio(db_get_tsa(hContact, m_szModuleName, "AudioUrl"));
+ CMString tszAudio(ptrT(db_get_tsa(hContact, m_szModuleName, "AudioUrl")));
if (!tszAudio.IsEmpty())
CallService(MS_UTILS_OPENURL, (WPARAM)OUF_TCHAR, (LPARAM)tszAudio.GetBuffer());
|