summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/SkypeWeb/src/skype_chatrooms.cpp4
-rw-r--r--protocols/SkypeWeb/src/skype_contacts.cpp3
-rw-r--r--protocols/SkypeWeb/src/skype_db.cpp55
-rw-r--r--protocols/SkypeWeb/src/skype_db.h36
-rw-r--r--protocols/SkypeWeb/src/skype_events.cpp1
-rw-r--r--protocols/SkypeWeb/src/skype_history_sync.cpp2
-rw-r--r--protocols/SkypeWeb/src/skype_login.cpp21
-rw-r--r--protocols/SkypeWeb/src/skype_messages.cpp3
-rw-r--r--protocols/SkypeWeb/src/skype_network.cpp12
-rw-r--r--protocols/SkypeWeb/src/skype_options.cpp14
-rw-r--r--protocols/SkypeWeb/src/skype_polling.cpp7
-rw-r--r--protocols/SkypeWeb/src/skype_proto.cpp26
-rw-r--r--protocols/SkypeWeb/src/skype_proto.h4
-rw-r--r--protocols/SkypeWeb/src/skype_trouter.cpp6
-rw-r--r--protocols/SkypeWeb/src/skype_utils.cpp4
-rw-r--r--protocols/SkypeWeb/src/stdafx.h2
16 files changed, 113 insertions, 87 deletions
diff --git a/protocols/SkypeWeb/src/skype_chatrooms.cpp b/protocols/SkypeWeb/src/skype_chatrooms.cpp
index 3fbb360eac..9e6506e015 100644
--- a/protocols/SkypeWeb/src/skype_chatrooms.cpp
+++ b/protocols/SkypeWeb/src/skype_chatrooms.cpp
@@ -148,7 +148,7 @@ int CSkypeProto::OnGroupChatEventHook(WPARAM, LPARAM lParam)
return 0;
}
- ptrA chat_id(mir_t2a(gch->pDest->ptszID));
+ _T2A chat_id(gch->pDest->ptszID);
switch (gch->pDest->iType)
{
@@ -200,7 +200,7 @@ int CSkypeProto::OnGroupChatEventHook(WPARAM, LPARAM lParam)
case 30:
CMString newTopic = ChangeTopicForm();
if (!newTopic.IsEmpty())
- SendRequest(new SetChatPropertiesRequest(chat_id, "topic", ptrA(mir_utf8encodeT(newTopic.GetBuffer())), li));
+ SendRequest(new SetChatPropertiesRequest(chat_id, "topic", T2Utf(newTopic.GetBuffer()), li));
break;
}
break;
diff --git a/protocols/SkypeWeb/src/skype_contacts.cpp b/protocols/SkypeWeb/src/skype_contacts.cpp
index afa53243fa..d88603cb6c 100644
--- a/protocols/SkypeWeb/src/skype_contacts.cpp
+++ b/protocols/SkypeWeb/src/skype_contacts.cpp
@@ -77,8 +77,7 @@ MCONTACT CSkypeProto::FindContact(const char *skypename)
MCONTACT hContact = NULL;
for (hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName))
{
- ptrA cSkypename(getStringA(hContact, SKYPE_SETTINGS_ID));
- if (!mir_strcmpi(skypename, cSkypename))
+ if (!mir_strcmpi(skypename, CID(this, hContact)))
break;
}
return hContact;
diff --git a/protocols/SkypeWeb/src/skype_db.cpp b/protocols/SkypeWeb/src/skype_db.cpp
index e297458ed0..91a40a5d79 100644
--- a/protocols/SkypeWeb/src/skype_db.cpp
+++ b/protocols/SkypeWeb/src/skype_db.cpp
@@ -17,6 +17,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h"
+struct SkypeDBType { int type; char *name; DWORD flags; } g_SkypeDBTypes[] =
+{
+ { SKYPE_DB_EVENT_TYPE_INCOMING_CALL, LPGEN("Incoming call"), DETF_NONOTIFY },
+ { SKYPE_DB_EVENT_TYPE_EDITED_MESSAGE, LPGEN("Edited message"), 0 },
+ { SKYPE_DB_EVENT_TYPE_ACTION, LPGEN("Action"), 0 },
+ { SKYPE_DB_EVENT_TYPE_CALL_INFO, LPGEN("Call information"), 0 },
+ { SKYPE_DB_EVENT_TYPE_FILETRANSFER_INFO, LPGEN("File transfer information"), 0 },
+ { SKYPE_DB_EVENT_TYPE_URIOBJ, LPGEN("URI object"), 0 },
+ { SKYPE_DB_EVENT_TYPE_MOJI, LPGEN("Moji"), 0 },
+ { SKYPE_DB_EVENT_TYPE_FILE, LPGEN("File"), 0 },
+ { SKYPE_DB_EVENT_TYPE_UNKNOWN, LPGEN("Unknown event"), 0 },
+};
+
MEVENT CSkypeProto::GetMessageFromDb(MCONTACT hContact, const char *messageId, LONGLONG timestamp)
{
if (messageId == NULL)
@@ -143,40 +156,16 @@ void CSkypeProto::InitDBEvents()
dbEventType.iconService = MODULE "/GetEventIcon";
dbEventType.textService = MODULE "/GetEventText";
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_EDITED_MESSAGE;
- dbEventType.descr = Translate("Edited message");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
-
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_ACTION;
- dbEventType.descr = Translate("Action");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
-
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_CALL_INFO;
- dbEventType.descr = Translate("Call information");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
-
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_FILETRANSFER_INFO;
- dbEventType.descr = Translate("File transfer information");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
-
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_URIOBJ;
- dbEventType.descr = Translate("URI object");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
-
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_MOJI;
- dbEventType.descr = Translate("Moji");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
+ for (size_t i = 0; i < _countof(g_SkypeDBTypes); i++)
+ {
+ SkypeDBType &cur = g_SkypeDBTypes[i];
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_FILE;
- dbEventType.descr = Translate("File");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
+ dbEventType.eventType = cur.type;
+ dbEventType.descr = cur.name;
+ dbEventType.flags |= cur.flags;
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_UNKNOWN;
- dbEventType.descr = Translate("Unknown event");
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
+ CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
- dbEventType.eventType = SKYPE_DB_EVENT_TYPE_INCOMING_CALL;
- dbEventType.descr = Translate("Incoming call");
- dbEventType.flags |= DETF_NONOTIFY;
- CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&dbEventType);
+ dbEventType.flags &= (~cur.flags);
+ }
} \ No newline at end of file
diff --git a/protocols/SkypeWeb/src/skype_db.h b/protocols/SkypeWeb/src/skype_db.h
index ed1edaa653..cd101386a3 100644
--- a/protocols/SkypeWeb/src/skype_db.h
+++ b/protocols/SkypeWeb/src/skype_db.h
@@ -35,5 +35,41 @@ enum SKYPE_DB_EVENT_TYPE
#define SKYPE_SETTINGS_PASSWORD "Password"
#define SKYPE_SETTINGS_GROUP "DefaultGroup"
+struct CSkypeOptions
+{
+ CMOption<BYTE> bAutoHistorySync;
+ CMOption<BYTE> bMarkAllAsUnread;
+
+ CMOption<BYTE> bUseHostnameAsPlace;
+ CMOption<TCHAR*> wstrPlace;
+
+ CMOption<BYTE> bUseBBCodes;
+
+ CMOption<TCHAR*> wstrCListGroup;
+
+ CSkypeOptions(PROTO_INTERFACE *proto) :
+
+ bAutoHistorySync(proto, "AutoSync", true),
+ bMarkAllAsUnread(proto, "MarkMesUnread", true),
+
+ wstrPlace(proto, "Place", _T("")),
+ bUseHostnameAsPlace(proto, "UseHostName", true),
+
+ bUseBBCodes(proto, "UseBBCodes", true),
+
+ wstrCListGroup(proto, SKYPE_SETTINGS_GROUP, _T("Skype"))
+ {
+ }
+
+};
+
+class CID
+{
+ ptrA m_value;
+public:
+ inline CID(PROTO_INTERFACE *ppro, const MCONTACT hContact) : m_value(ppro->getStringA(hContact, SKYPE_SETTINGS_ID)) {}
+ inline operator char *() { return m_value; }
+};
+
#endif //_SKYPE_DB_H_ \ No newline at end of file
diff --git a/protocols/SkypeWeb/src/skype_events.cpp b/protocols/SkypeWeb/src/skype_events.cpp
index b0e4466ad6..27a14309ee 100644
--- a/protocols/SkypeWeb/src/skype_events.cpp
+++ b/protocols/SkypeWeb/src/skype_events.cpp
@@ -23,6 +23,7 @@ INT_PTR CSkypeProto::GetEventText(WPARAM, LPARAM lParam)
DBEVENTGETTEXT *pEvent = (DBEVENTGETTEXT *)lParam;
CMStringA szText;
+
BOOL bUseBB = db_get_b(NULL, pEvent->dbei->szModule, "UseBBCodes", 1);
switch (pEvent->dbei->eventType)
{
diff --git a/protocols/SkypeWeb/src/skype_history_sync.cpp b/protocols/SkypeWeb/src/skype_history_sync.cpp
index 73483cfdcd..db2a34ec14 100644
--- a/protocols/SkypeWeb/src/skype_history_sync.cpp
+++ b/protocols/SkypeWeb/src/skype_history_sync.cpp
@@ -153,7 +153,7 @@ void CSkypeProto::OnSyncHistory(const NETLIBHTTPREQUEST *response)
MCONTACT hContact = FindContact(szSkypename);
if (hContact != NULL)
{
- if (db_get_dw(hContact, m_szModuleName, "LastMsgTime", 0) < composeTime)
+ if (getDword(hContact, "LastMsgTime", 0) < composeTime)
{
PushRequest(new GetHistoryRequest(szSkypename, 100, false, 0, li), &CSkypeProto::OnGetServerHistory);
}
diff --git a/protocols/SkypeWeb/src/skype_login.cpp b/protocols/SkypeWeb/src/skype_login.cpp
index 3bf80c0e37..5ffe9c610c 100644
--- a/protocols/SkypeWeb/src/skype_login.cpp
+++ b/protocols/SkypeWeb/src/skype_login.cpp
@@ -113,11 +113,9 @@ void CSkypeProto::OnLoginOAuth(const NETLIBHTTPREQUEST *response)
SetStatus(ID_STATUS_OFFLINE);
return;
}
- std::string token = json["skypetoken"].as_string();
- setString("TokenSecret", token.c_str());
- int expiresIn = json["expiresIn"].as_int();
- setDword("TokenExpiresIn", time(NULL) + expiresIn);
+ setString("TokenSecret", json["skypetoken"].as_string().c_str());
+ setDword("TokenExpiresIn", time(NULL) + json["expiresIn"].as_int());
OnLoginSuccess();
}
@@ -164,6 +162,12 @@ void CSkypeProto::OnEndpointCreated(const NETLIBHTTPREQUEST *response)
szCookieName = szToken.Tokenize("=", iStart2);
szCookieVal = szToken.Mid(iStart2);
setString(szCookieName, szCookieVal);
+
+ if (szCookieName == "registrationToken")
+ li.endpoint.szToken = szCookieVal.Detach();
+ else if (szCookieName == "endpointId")
+ li.endpoint.szId = szCookieVal.Detach();
+
}
}
else if (!mir_strcmpi(response->headers[i].szName, "Location"))
@@ -205,8 +209,6 @@ void CSkypeProto::OnEndpointCreated(const NETLIBHTTPREQUEST *response)
}
}
- li.endpoint.szToken = getStringA("registrationToken");
- li.endpoint.szId = getStringA("endpointId");
SendRequest(new CreateSubscriptionsRequest(li), &CSkypeProto::OnSubscriptionsCreated);
}
@@ -230,9 +232,8 @@ void CSkypeProto::SendPresence(bool isLogin)
{
ptrA epname;
- ptrT place(getTStringA("Place"));
- if (!getBool("UseHostName", false) && place && *place)
- epname = mir_utf8encodeT(place);
+ if (!m_opts.bUseHostnameAsPlace && m_opts.wstrPlace && *m_opts.wstrPlace)
+ epname = mir_utf8encodeT(m_opts.wstrPlace);
else
{
TCHAR compName[MAX_COMPUTERNAME_LENGTH + 1];
@@ -277,7 +278,7 @@ void CSkypeProto::OnCapabilitiesSended(const NETLIBHTTPREQUEST *response)
PushRequest(new GetContactListRequest(li, NULL), &CSkypeProto::LoadContactList);
PushRequest(new GetAvatarRequest(ptrA(getStringA("AvatarUrl"))), &CSkypeProto::OnReceiveAvatar, NULL);
- if (getBool("AutoSync", true))
+ if (m_opts.bAutoHistorySync)
PushRequest(new SyncHistoryFirstRequest(100, li), &CSkypeProto::OnSyncHistory);
JSONNode root = JSONNode::parse(response->pData);
diff --git a/protocols/SkypeWeb/src/skype_messages.cpp b/protocols/SkypeWeb/src/skype_messages.cpp
index e3e9e6df10..2fd99c5d67 100644
--- a/protocols/SkypeWeb/src/skype_messages.cpp
+++ b/protocols/SkypeWeb/src/skype_messages.cpp
@@ -264,14 +264,13 @@ int CSkypeProto::OnDbEventRead(WPARAM hContact, LPARAM hDbEvent)
void CSkypeProto::MarkMessagesRead(MCONTACT hContact, MEVENT hDbEvent)
{
debugLogA(__FUNCTION__);
- ptrA username(db_get_sa(hContact, m_szModuleName, SKYPE_SETTINGS_ID));
DBEVENTINFO dbei = { sizeof(dbei) };
db_event_get(hDbEvent, &dbei);
time_t timestamp = dbei.timestamp;
if(db_get_dw(hContact, m_szModuleName, "LastMsgTime", 0) > (timestamp - 300))
- PushRequest(new MarkMessageReadRequest(username, timestamp, timestamp, false, li));
+ PushRequest(new MarkMessageReadRequest(CID(this, hContact), timestamp, timestamp, false, li));
}
diff --git a/protocols/SkypeWeb/src/skype_network.cpp b/protocols/SkypeWeb/src/skype_network.cpp
index d9179900f1..1442140613 100644
--- a/protocols/SkypeWeb/src/skype_network.cpp
+++ b/protocols/SkypeWeb/src/skype_network.cpp
@@ -19,12 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
void CSkypeProto::InitNetwork()
{
- TCHAR name[128];
- mir_sntprintf(name, TranslateT("%s connection"), m_tszUserName);
+ CMString name(FORMAT, TranslateT("%s connection"), m_tszUserName);
+
NETLIBUSER nlu = { 0 };
nlu.cbSize = sizeof(nlu);
nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS | NUF_UNICODE;
- nlu.ptszDescriptiveName = name;
+ nlu.ptszDescriptiveName = name.GetBuffer();
nlu.szSettingsModule = m_szModuleName;
m_hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu);
}
@@ -37,7 +37,9 @@ void CSkypeProto::UnInitNetwork()
void CSkypeProto::ShutdownConnections()
{
- Netlib_Shutdown(m_pollingConnection);
- Netlib_Shutdown(m_TrouterConnection);
+ Netlib_CloseHandle(m_pollingConnection);
+ Netlib_CloseHandle(m_TrouterConnection);
+
+ m_pollingConnection = m_TrouterConnection = 0;
//Netlib_Shutdown(m_hNetlibUser);
} \ No newline at end of file
diff --git a/protocols/SkypeWeb/src/skype_options.cpp b/protocols/SkypeWeb/src/skype_options.cpp
index b9967150da..fe161f1d5d 100644
--- a/protocols/SkypeWeb/src/skype_options.cpp
+++ b/protocols/SkypeWeb/src/skype_options.cpp
@@ -29,12 +29,12 @@ CSkypeOptionsMain::CSkypeOptionsMain(CSkypeProto *proto, int idDialog)
m_usebb(this, IDC_BBCODES),
m_link(this, IDC_CHANGEPASS, "https://login.skype.com/recovery/password-change") // TODO : ...?username=%username%
{
- CreateLink(m_group, SKYPE_SETTINGS_GROUP, _T("Skype"));
- CreateLink(m_autosync, "AutoSync", DBVT_BYTE, 1);
- CreateLink(m_allasunread, "MarkMesUnread", DBVT_BYTE, 1);
- CreateLink(m_place, "Place", _T(""));
- CreateLink(m_usehostname, "UseHostName", DBVT_BYTE, 0);
- CreateLink(m_usebb, "UseBBCodes", DBVT_BYTE, 1);
+ CreateLink(m_group, proto->m_opts.wstrCListGroup);
+ CreateLink(m_autosync, proto->m_opts.bAutoHistorySync);
+ CreateLink(m_allasunread, proto->m_opts.bMarkAllAsUnread);
+ CreateLink(m_place, proto->m_opts.wstrPlace);
+ CreateLink(m_usehostname, proto->m_opts.bUseHostnameAsPlace);
+ CreateLink(m_usebb, proto->m_opts.bUseBBCodes);
m_usehostname.OnChange = Callback(this, &CSkypeOptionsMain::OnUsehostnameCheck);
}
@@ -44,7 +44,7 @@ void CSkypeOptionsMain::OnInitDialog()
m_skypename.SetTextA(ptrA(m_proto->getStringA(SKYPE_SETTINGS_ID)));
m_password.SetTextA(pass_ptrA(m_proto->getStringA("Password")));
- m_place.Enable(!m_proto->getBool("UseHostName", false));
+ m_place.Enable(!m_proto->m_opts.bUseHostnameAsPlace);
m_skypename.SendMsg(EM_LIMITTEXT, 32, 0);
m_password.SendMsg(EM_LIMITTEXT, 128, 0);
m_group.SendMsg(EM_LIMITTEXT, 64, 0);
diff --git a/protocols/SkypeWeb/src/skype_polling.cpp b/protocols/SkypeWeb/src/skype_polling.cpp
index 6fe8f198b3..31de0c75c1 100644
--- a/protocols/SkypeWeb/src/skype_polling.cpp
+++ b/protocols/SkypeWeb/src/skype_polling.cpp
@@ -27,12 +27,12 @@ void CSkypeProto::PollingThread(void*)
m_hPollingEvent.Wait();
nErrors = 0;
+ PollRequest *request = new PollRequest(li);
+
while ((nErrors < POLLING_ERRORS_LIMIT) && m_iStatus != ID_STATUS_OFFLINE)
{
- PollRequest *request = new PollRequest(li);
request->nlc = m_pollingConnection;
NLHR_PTR response(request->Send(m_hNetlibUser));
- delete request;
if (response == NULL)
{
@@ -77,6 +77,7 @@ void CSkypeProto::PollingThread(void*)
}
m_pollingConnection = response->nlc;
}
+ delete request;
if (m_iStatus != ID_STATUS_OFFLINE)
{
@@ -172,7 +173,7 @@ void CSkypeProto::ProcessEndpointPresence(const JSONNode &node)
break;
case 13:
MirVer.AppendFormat("Skype (OSX) %s", ParseUrl(skypeNameVersion.c_str(), "/"));
- break;
+ break;
case 11:
MirVer.AppendFormat("Skype (Windows) %s", ParseUrl(skypeNameVersion.c_str(), "/"));
break;
diff --git a/protocols/SkypeWeb/src/skype_proto.cpp b/protocols/SkypeWeb/src/skype_proto.cpp
index d354234840..2032ab0c6b 100644
--- a/protocols/SkypeWeb/src/skype_proto.cpp
+++ b/protocols/SkypeWeb/src/skype_proto.cpp
@@ -25,7 +25,8 @@ CSkypeProto::CSkypeProto(const char* protoName, const TCHAR* userName) :
m_OutMessages(3, PtrKeySortT),
m_bThreadsTerminated(0),
m_TrouterConnection(0),
- m_pollingConnection(0)
+ m_pollingConnection(0),
+ m_opts(this)
{
InitNetwork();
@@ -105,7 +106,7 @@ DWORD_PTR CSkypeProto::GetCaps(int type, MCONTACT)
case PFLAGNUM_4:
return PF4_FORCEADDED | PF4_NOAUTHDENYREASON | PF4_SUPPORTTYPING | PF4_AVATARS | PF4_IMSENDOFFLINE | PF4_OFFLINEFILES;
case PFLAG_UNIQUEIDTEXT:
- return (DWORD_PTR)"Skypename";
+ return (DWORD_PTR)Translate("Skypename");
case PFLAG_UNIQUEIDSETTING:
return (DWORD_PTR)SKYPE_SETTINGS_ID;
}
@@ -121,7 +122,7 @@ MCONTACT CSkypeProto::AddToList(int, PROTOSEARCHRESULT *psr)
MCONTACT hContact;
if (psr->flags & PSR_UNICODE)
- hContact = AddContact(mir_utf8encodeT(psr->id.t));
+ hContact = AddContact(T2Utf(psr->id.t));
else
hContact = AddContact(psr->id.a);
@@ -155,9 +156,7 @@ int CSkypeProto::Authorize(MEVENT hDbEvent)
if (hContact == INVALID_CONTACT_ID)
return 1;
- ptrA token(getStringA("TokenSecret"));
- ptrA skypename(getStringA(hContact, SKYPE_SETTINGS_ID));
- PushRequest(new AuthAcceptRequest(li, skypename));
+ PushRequest(new AuthAcceptRequest(li, CID(this, hContact)));
return 0;
}
@@ -167,9 +166,7 @@ int CSkypeProto::AuthDeny(MEVENT hDbEvent, const TCHAR*)
if (hContact == INVALID_CONTACT_ID)
return 1;
- ptrA token(getStringA("TokenSecret"));
- ptrA skypename(getStringA(hContact, SKYPE_SETTINGS_ID));
- PushRequest(new AuthDeclineRequest(li, skypename));
+ PushRequest(new AuthDeclineRequest(li, CID(this, hContact)));
return 0;
}
@@ -183,9 +180,7 @@ int CSkypeProto::AuthRequest(MCONTACT hContact, const TCHAR *szMessage)
if (hContact == INVALID_CONTACT_ID)
return 1;
- ptrA token(getStringA("TokenSecret"));
- ptrA skypename(getStringA(hContact, SKYPE_SETTINGS_ID));
- PushRequest(new AddContactRequest(li, skypename, T2Utf(szMessage)));
+ PushRequest(new AddContactRequest(li, CID(this, hContact), T2Utf(szMessage)));
return 0;
}
@@ -193,7 +188,7 @@ int CSkypeProto::GetInfo(MCONTACT hContact, int)
{
if (!isChatRoom(hContact))
PushRequest(
- new GetProfileRequest(li, ptrA(db_get_sa(hContact, m_szModuleName, SKYPE_SETTINGS_ID))),
+ new GetProfileRequest(li, CID(this, hContact)),
&CSkypeProto::LoadProfile);
return 0;
}
@@ -237,9 +232,6 @@ int CSkypeProto::SetStatus(int iNewStatus)
if (m_iStatus > ID_STATUS_CONNECTING + 1)
{
SendRequest(new DeleteEndpointRequest(li));
- delSetting("registrationRoken");
- delSetting("endpointId");
- delSetting("expires");
}
m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE;
// logout
@@ -273,7 +265,7 @@ int CSkypeProto::SetStatus(int iNewStatus)
int CSkypeProto::UserIsTyping(MCONTACT hContact, int type)
{
- SendRequest(new SendTypingRequest(ptrA(getStringA(hContact, SKYPE_SETTINGS_ID)), type, li));
+ SendRequest(new SendTypingRequest(CID(this, hContact), type, li));
return 0;
}
diff --git a/protocols/SkypeWeb/src/skype_proto.h b/protocols/SkypeWeb/src/skype_proto.h
index 4681836833..b5ce6cf33a 100644
--- a/protocols/SkypeWeb/src/skype_proto.h
+++ b/protocols/SkypeWeb/src/skype_proto.h
@@ -83,10 +83,14 @@ public:
static INT_PTR EventGetIcon(WPARAM wParam, LPARAM lParam);
static INT_PTR GetEventText(WPARAM, LPARAM lParam);
+ CSkypeOptions m_opts;
+
private:
LoginInfo li;
+
+
static UINT_PTR m_timer;
//---Accounts
diff --git a/protocols/SkypeWeb/src/skype_trouter.cpp b/protocols/SkypeWeb/src/skype_trouter.cpp
index a1b6768ce9..0f9506ad6c 100644
--- a/protocols/SkypeWeb/src/skype_trouter.cpp
+++ b/protocols/SkypeWeb/src/skype_trouter.cpp
@@ -139,12 +139,13 @@ void CSkypeProto::TRouterThread(void*)
m_hTrouterEvent.Wait();
errors = 0;
+ TrouterPollRequest *request = new TrouterPollRequest(TRouter.socketIo, TRouter.connId, TRouter.st, TRouter.se, TRouter.sig, TRouter.instance, TRouter.ccid, TRouter.sessId);
+
while (errors < POLLING_ERRORS_LIMIT && m_iStatus > ID_STATUS_OFFLINE)
{
- TrouterPollRequest *request = new TrouterPollRequest(TRouter.socketIo, TRouter.connId, TRouter.st, TRouter.se, TRouter.sig, TRouter.instance, TRouter.ccid, TRouter.sessId);
request->nlc = m_TrouterConnection;
NLHR_PTR response(request->Send(m_hNetlibUser));
- delete request;
+
if (response == NULL)
{
m_TrouterConnection = nullptr;
@@ -174,6 +175,7 @@ void CSkypeProto::TRouterThread(void*)
}
m_TrouterConnection = response->nlc;
}
+ delete request;
}
m_hTrouterThread = NULL;
m_TrouterConnection = NULL;
diff --git a/protocols/SkypeWeb/src/skype_utils.cpp b/protocols/SkypeWeb/src/skype_utils.cpp
index c1bee2de45..fa3abdeb3b 100644
--- a/protocols/SkypeWeb/src/skype_utils.cpp
+++ b/protocols/SkypeWeb/src/skype_utils.cpp
@@ -552,8 +552,8 @@ INT_PTR CSkypeProto::ParseSkypeUriService(WPARAM, LPARAM lParam)
}
if (!mir_tstrcmpi(szCommand, _T("sendfile")))
{
- //CONTACT hContact = AddContact(_T2A(szJid), true);
- //CallService(MS_FILE_SENDFILE, hContact, NULL);
+ MCONTACT hContact = AddContact(_T2A(szJid), true);
+ CallService(MS_FILE_SENDFILE, hContact, NULL);
return 1;
}
if (!mir_tstrcmpi(szCommand, _T("voicemail")))
diff --git a/protocols/SkypeWeb/src/stdafx.h b/protocols/SkypeWeb/src/stdafx.h
index 4a18fd8ea4..1422b847a5 100644
--- a/protocols/SkypeWeb/src/stdafx.h
+++ b/protocols/SkypeWeb/src/stdafx.h
@@ -107,8 +107,8 @@ struct MessageId
#include "skype_dialogs.h"
#include "skype_options.h"
#include "skype_trouter.h"
-#include "skype_db.h"
#include "skype_utils.h"
+#include "skype_db.h"
#include "http_request.h"
#include "requests\login.h"
#include "requests\profile.h"