diff options
| -rw-r--r-- | protocols/VKontakte/src/misc.cpp | 50 | ||||
| -rw-r--r-- | protocols/VKontakte/src/version.h | 2 | ||||
| -rw-r--r-- | protocols/VKontakte/src/vk_proto.cpp | 2 | ||||
| -rw-r--r-- | protocols/VKontakte/src/vk_proto.h | 2 |
4 files changed, 54 insertions, 2 deletions
diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index b312bdd9ae..690acebff8 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -655,6 +655,8 @@ void CVkProto::GrabCookies(MHttpResponse *nhr, CMStringA szDefDomain) m_cookies.insert(new CVkCookie(szCookieName, szCookieVal, szDomain));
}
}
+
+ SaveCookies();
}
void CVkProto::ApplyCookies(AsyncHttpRequest *pReq)
@@ -673,10 +675,56 @@ void CVkProto::ApplyCookies(AsyncHttpRequest *pReq) szCookie.Append(it->m_value);
}
- if (!szCookie.IsEmpty())
+ if (!szCookie.IsEmpty()) {
pReq->AddHeader("Cookie", szCookie);
+ }
}
+void CVkProto::SaveCookies()
+{
+ debugLogA("CVkProto::SaveCookies");
+ CMStringA szCookie;
+
+ for (auto& it : m_cookies) {
+ if (!szCookie.IsEmpty())
+ szCookie.Append("; ");
+ szCookie.Append(it->m_name);
+ szCookie.AppendChar('=');
+ szCookie.Append(it->m_value);
+ szCookie.AppendChar('=');
+ szCookie.Append(it->m_domain);
+ }
+
+ if (!szCookie.IsEmpty())
+ setString("Cookie", szCookie);
+}
+
+void CVkProto::LoadCookies()
+{
+ debugLogA("CVkProto::LoadCookies");
+ CMStringA szCookies = getStringA("Cookie");
+ if (szCookies.IsEmpty())
+ return;
+
+ CMStringA szCookieName, szCookieDomain, szCookieValue;
+ szCookies.AppendChar(';');
+
+ int iStart = 0;
+ while (true) {
+ CMStringA szToken = szCookies.Tokenize(";", iStart).Trim();
+ if (iStart == -1)
+ break;
+
+ int iStart2 = 0;
+
+ szCookieName = szToken.Tokenize("=", iStart2);
+ szCookieValue = szToken.Tokenize("=", iStart2);
+ szCookieDomain = szToken.Tokenize("=", iStart2);
+
+ m_cookies.insert(new CVkCookie(szCookieName, szCookieValue, szCookieDomain));
+ }
+
+}
/////////////////////////////////////////////////////////////////////////////////////////
bool CVkProto::IsAuthContactLater(MCONTACT hContact)
diff --git a/protocols/VKontakte/src/version.h b/protocols/VKontakte/src/version.h index 93f8f02f7b..4c64e10578 100644 --- a/protocols/VKontakte/src/version.h +++ b/protocols/VKontakte/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0
#define __MINOR_VERSION 1
#define __RELEASE_NUM 18
-#define __BUILD_NUM 2
+#define __BUILD_NUM 3
#include <stdver.h>
diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp index dbd86e8aaf..0a6dd5525a 100644 --- a/protocols/VKontakte/src/vk_proto.cpp +++ b/protocols/VKontakte/src/vk_proto.cpp @@ -88,6 +88,8 @@ CVkProto::CVkProto(const char *szModuleName, const wchar_t *pwszUserName) : CreateProtoService(PS_JOINCHAT, &CVkProto::OnJoinChat);
HookProtoEvent(ME_GC_EVENT, &CVkProto::OnChatEvent);
HookProtoEvent(ME_GC_BUILDMENU, &CVkProto::OnGcMenuHook);
+
+ LoadCookies();
}
CVkProto::~CVkProto()
diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index 3f14df6525..6feaa2685a 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -381,6 +381,8 @@ private: CMStringW RunRenameNick(LPCWSTR pwszOldName);
void GrabCookies(MHttpResponse *nhr, CMStringA szDefDomain = "");
void ApplyCookies(AsyncHttpRequest*);
+ void SaveCookies();
+ void LoadCookies();
bool IsAuthContactLater(MCONTACT hContact);
bool AddAuthContactLater(MCONTACT hContact);
void __cdecl DBAddAuthRequestThread(void *p);
|
