summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Lantsev <aunsane@gmail.com>2015-08-02 20:42:43 +0000
committerAlexander Lantsev <aunsane@gmail.com>2015-08-02 20:42:43 +0000
commit419e301b09de1935ab61f9a28363bb375fc7e208 (patch)
tree1f94bd57ff7482b4b11c5a206bbad6bbd52531f0
parent32a70bf6533a4207324e0443463a3c12ece03672 (diff)
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
-rw-r--r--protocols/Steam/src/http_request.h55
-rw-r--r--protocols/Steam/src/request_queue.cpp3
-rw-r--r--protocols/Steam/src/request_queue.h2
-rw-r--r--protocols/Steam/src/steam_contacts.cpp3
-rw-r--r--protocols/Steam/src/steam_login.cpp4
-rw-r--r--protocols/Steam/src/steam_options.cpp2
-rw-r--r--protocols/Steam/src/steam_pooling.cpp6
-rw-r--r--protocols/Steam/src/steam_proto.cpp4
-rw-r--r--protocols/Steam/src/steam_request.cpp2
-rw-r--r--protocols/Steam/src/version.h6
10 files changed, 68 insertions, 19 deletions
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 <stdver.h>
#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"