From 419e301b09de1935ab61f9a28363bb375fc7e208 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Sun, 2 Aug 2015 20:42:43 +0000 Subject: Steam: - fixed bug with default group creation - added HttpResponse - version bump git-svn-id: http://svn.miranda-ng.org/main/trunk@14824 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Steam/src/http_request.h | 55 ++++++++++++++++++++++++++++++++-- protocols/Steam/src/request_queue.cpp | 3 +- protocols/Steam/src/request_queue.h | 2 +- protocols/Steam/src/steam_contacts.cpp | 3 +- protocols/Steam/src/steam_login.cpp | 4 +-- protocols/Steam/src/steam_options.cpp | 2 +- protocols/Steam/src/steam_pooling.cpp | 6 ++-- protocols/Steam/src/steam_proto.cpp | 4 +-- protocols/Steam/src/steam_request.cpp | 2 +- protocols/Steam/src/version.h | 6 ++-- 10 files changed, 68 insertions(+), 19 deletions(-) (limited to 'protocols/Steam/src') diff --git a/protocols/Steam/src/http_request.h b/protocols/Steam/src/http_request.h index 73fce0eb1b..35a6352d42 100644 --- a/protocols/Steam/src/http_request.h +++ b/protocols/Steam/src/http_request.h @@ -1,6 +1,51 @@ #ifndef _HTTP_REQUEST_H_ #define _HTTP_REQUEST_H_ +class HttpResponse : public NETLIBHTTPREQUEST, public MZeroedObject +{ +public: + const NETLIBHTTPREQUEST* request; + + HttpResponse(const NETLIBHTTPREQUEST* response, const NETLIBHTTPREQUEST* request = NULL) + { + request = request; + if (response) + { + cbSize = response->cbSize; + requestType = response->requestType; + flags = response->flags; + szUrl = mir_strdup(response->szUrl); + headers = (NETLIBHTTPHEADER*)mir_alloc(sizeof(NETLIBHTTPHEADER) * response->headersCount); + headersCount = response->headersCount; + for (int i = 0; i < headersCount; i++) + { + headers[i].szName = mir_strdup(response->headers[i].szName); + headers[i].szValue = mir_strdup(response->headers[i].szValue); + } + pData = (char*)mir_alloc(response->dataLength); + dataLength = response->dataLength; + memcpy(pData, response->pData, dataLength); + resultCode = response->resultCode; + szResultDescr = mir_strdup(response->szResultDescr); + nlc = response->nlc; + timeout = response->timeout; + } + } + + ~HttpResponse() + { + for (int i = 0; i < headersCount; i++) + { + mir_free(headers[i].szName); + mir_free(headers[i].szValue); + } + mir_free(szUrl); + mir_free(headers); + mir_free(pData); + mir_free(szResultDescr); + } +}; + class HttpRequest : public NETLIBHTTPREQUEST, public MZeroedObject { private: @@ -81,7 +126,7 @@ public: mir_free(pData); } - NETLIBHTTPREQUEST* Send(HANDLE hConnection) + HttpResponse* Send(HANDLE hConnection) { szUrl = m_url.GetBuffer(); @@ -89,8 +134,14 @@ public: mir_snprintf(message, _countof(message), "Send request to %s", szUrl); CallService(MS_NETLIB_LOG, (WPARAM)hConnection, (LPARAM)&message); - return (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hConnection, (LPARAM)this); + NETLIBHTTPREQUEST* response = (NETLIBHTTPREQUEST*)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hConnection, (LPARAM)this); + HttpResponse* result = new HttpResponse(response, this); + CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); + + return result; } }; + + #endif //_HTTP_REQUEST_H_ \ No newline at end of file diff --git a/protocols/Steam/src/request_queue.cpp b/protocols/Steam/src/request_queue.cpp index c419ffbd26..12f9beb61c 100644 --- a/protocols/Steam/src/request_queue.cpp +++ b/protocols/Steam/src/request_queue.cpp @@ -72,10 +72,9 @@ void RequestQueue::Send(HttpRequest *request, HttpResponseCallback response, voi void RequestQueue::Execute(RequestQueueItem *item) { - NETLIBHTTPREQUEST *response = item->request->Send(hConnection); + HttpResponse *response = item->request->Send(hConnection); if (item->responseCallback != NULL) item->responseCallback(response, item->arg); - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); if (item->finallyCallback != NULL) item->finallyCallback(item->arg); delete item; diff --git a/protocols/Steam/src/request_queue.h b/protocols/Steam/src/request_queue.h index 3a213be0bf..0cd8811536 100644 --- a/protocols/Steam/src/request_queue.h +++ b/protocols/Steam/src/request_queue.h @@ -1,7 +1,7 @@ #ifndef _REQUEST_QUEUE_H_ #define _REQUEST_QUEUE_H_ -typedef void(*HttpResponseCallback)(const NETLIBHTTPREQUEST *response, void *arg); +typedef void(*HttpResponseCallback)(const HttpResponse *response, void *arg); typedef void(*HttpFinallyCallback)(void *arg); struct RequestQueueItem diff --git a/protocols/Steam/src/steam_contacts.cpp b/protocols/Steam/src/steam_contacts.cpp index 117ae8bbe4..c8e17b7aec 100644 --- a/protocols/Steam/src/steam_contacts.cpp +++ b/protocols/Steam/src/steam_contacts.cpp @@ -314,7 +314,8 @@ MCONTACT CSteamProto::AddContact(const char *steamId, bool isTemporary) DBVARIANT dbv; if (!getWString("DefaultGroup", &dbv)) { - db_set_ts(hContact, "CList", "Group", dbv.ptszVal); + if(Clist_GroupExists(dbv.ptszVal)) + db_set_ts(hContact, "CList", "Group", dbv.ptszVal); db_free(&dbv); } } diff --git a/protocols/Steam/src/steam_login.cpp b/protocols/Steam/src/steam_login.cpp index e52455a4d5..52345fef00 100644 --- a/protocols/Steam/src/steam_login.cpp +++ b/protocols/Steam/src/steam_login.cpp @@ -160,11 +160,11 @@ void CSteamProto::OnAuthorizationError(const JSONNode &node) std::string captchaId = node["captcha_gid"].as_string(); GetCaptchaRequest *request = new GetCaptchaRequest(captchaId.c_str()); - NETLIBHTTPREQUEST *response = request->Send(m_hNetlibUser); + HttpResponse *response = request->Send(m_hNetlibUser); delete request; CSteamCaptchaDialog captchaDialog(this, (BYTE*)response->pData, response->dataLength); - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); + delete response; if (!captchaDialog.DoModal()) { delSetting("CaptchaId"); diff --git a/protocols/Steam/src/steam_options.cpp b/protocols/Steam/src/steam_options.cpp index 4f5a2a8dcd..391f534b24 100644 --- a/protocols/Steam/src/steam_options.cpp +++ b/protocols/Steam/src/steam_options.cpp @@ -25,7 +25,7 @@ void CSteamOptionsMain::OnInitDialog() void CSteamOptionsMain::OnApply() { TCHAR *group = m_group.GetText(); - if (mir_tstrlen(group) > 0 && Clist_GroupExists(group)) + if (mir_tstrlen(group) > 0 && !Clist_GroupExists(group)) Clist_CreateGroup(0, group); if (m_proto->IsOnline()) diff --git a/protocols/Steam/src/steam_pooling.cpp b/protocols/Steam/src/steam_pooling.cpp index 1233c9a7a0..0c1f50e9fd 100644 --- a/protocols/Steam/src/steam_pooling.cpp +++ b/protocols/Steam/src/steam_pooling.cpp @@ -177,13 +177,13 @@ void CSteamProto::PollingThread(void*) { PollRequest *request = new PollRequest(token, umqId, messageId, IdleSeconds()); //request->nlc = m_pollingConnection; - NETLIBHTTPREQUEST *response = request->Send(m_hNetlibUser); + HttpResponse *response = request->Send(m_hNetlibUser); delete request; if (response == NULL || response->resultCode != HTTP_CODE_OK) { if (response != NULL) - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); + delete response; errors++; continue; @@ -245,7 +245,7 @@ void CSteamProto::PollingThread(void*) breaked = true; } - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); + delete response; } setDword("MessageID", messageId); diff --git a/protocols/Steam/src/steam_proto.cpp b/protocols/Steam/src/steam_proto.cpp index 807d2a091d..69f498561b 100644 --- a/protocols/Steam/src/steam_proto.cpp +++ b/protocols/Steam/src/steam_proto.cpp @@ -209,13 +209,11 @@ DWORD_PTR CSteamProto:: GetCaps(int type, MCONTACT) case PFLAGNUM_4: return PF4_AVATARS | PF4_NOCUSTOMAUTH | PF4_NOAUTHDENYREASON | PF4_FORCEAUTH | PF4_FORCEADDED | PF4_SUPPORTIDLE | PF4_SUPPORTTYPING;// | PF4_IMSENDOFFLINE; case PFLAGNUM_5: - return PF2_HEAVYDND | PF2_OUTTOLUNCH | PF2_FREECHAT; + return PF2_SHORTAWAY | PF2_LONGAWAY | PF2_HEAVYDND | PF2_OUTTOLUNCH | PF2_FREECHAT; case PFLAG_UNIQUEIDTEXT: return (DWORD_PTR)Translate("SteamID"); case PFLAG_UNIQUEIDSETTING: return (DWORD_PTR)"SteamID"; - case PFLAG_MAXLENOFMESSAGE: - return 200000; // this is guessed limit, in reality it is probably bigger default: return 0; } diff --git a/protocols/Steam/src/steam_request.cpp b/protocols/Steam/src/steam_request.cpp index c480628151..968c09da37 100644 --- a/protocols/Steam/src/steam_request.cpp +++ b/protocols/Steam/src/steam_request.cpp @@ -31,7 +31,7 @@ public: } }; -static void SteamHttpResponse(const NETLIBHTTPREQUEST *response, void *arg) +static void SteamHttpResponse(const HttpResponse *response, void *arg) { SteamResponseDelegate *delegate = (SteamResponseDelegate*)arg; delegate->Invoke(response); diff --git a/protocols/Steam/src/version.h b/protocols/Steam/src/version.h index f89c59fa87..c901a0c34f 100644 --- a/protocols/Steam/src/version.h +++ b/protocols/Steam/src/version.h @@ -1,14 +1,14 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 11 #define __RELEASE_NUM 4 -#define __BUILD_NUM 1 +#define __BUILD_NUM 2 #include #define __PLUGIN_NAME "Steam protocol" #define __FILENAME "Steam.dll" #define __DESCRIPTION "Steam protocol support for Miranda NG." -#define __AUTHOR "unsane, Robert P\xf6" "sel" +#define __AUTHOR "Miranda NG Team, Robert P\xf6" "sel" #define __AUTHOREMAIL "" #define __AUTHORWEB "http://miranda-ng.org/p/Steam/" -#define __COPYRIGHT "� 2014-15 Miranda NG team" +#define __COPYRIGHT "© 2014-15 Miranda NG team" -- cgit v1.2.3