summaryrefslogtreecommitdiff
path: root/protocols/SkypeWeb/src/skype_login.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2025-03-14 15:08:50 +0300
committerGeorge Hazan <george.hazan@gmail.com>2025-03-14 15:08:50 +0300
commit60cb291620f95d588c51f12a944e143dd3c86098 (patch)
tree3e3a7fd9bb5845afbd35b30f11cb5e423ab6e75b /protocols/SkypeWeb/src/skype_login.cpp
parentc75899643d59a981bc0d799a7054a0bfbe132270 (diff)
Skype: we don't report successful login until the endpoint is created
Diffstat (limited to 'protocols/SkypeWeb/src/skype_login.cpp')
-rw-r--r--protocols/SkypeWeb/src/skype_login.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/protocols/SkypeWeb/src/skype_login.cpp b/protocols/SkypeWeb/src/skype_login.cpp
index a766f6ac34..804160fc6a 100644
--- a/protocols/SkypeWeb/src/skype_login.cpp
+++ b/protocols/SkypeWeb/src/skype_login.cpp
@@ -70,7 +70,7 @@ void CSkypeProto::Login()
m_bHistorySynced = false;
if ((tokenExpires - 1800) > time(0))
- OnLoginSuccess();
+ TryCreateEndpoint();
else
PushRequest(new OAuthRequest());
}
@@ -135,20 +135,14 @@ void CSkypeProto::OnLoginOAuth(MHttpResponse *response, AsyncHttpRequest*)
setString("TokenSecret", json["skypetoken"].as_string().c_str());
setDword("TokenExpiresIn", time(NULL) + json["expiresIn"].as_int());
- OnLoginSuccess();
+ TryCreateEndpoint();
}
-void CSkypeProto::OnLoginSuccess()
+void CSkypeProto::TryCreateEndpoint()
{
if (!IsStatusConnecting(m_iStatus))
return;
- ProtoBroadcastAck(NULL, ACKTYPE_LOGIN, ACKRESULT_SUCCESS, NULL, 0);
-
- int oldStatus = m_iStatus;
- m_iStatus = m_iDesiredStatus;
- ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, m_iStatus);
-
m_szApiToken = getStringA("TokenSecret");
m_impl.m_heartBeat.StartSafe(600 * 1000);
@@ -199,6 +193,10 @@ void CSkypeProto::OnEndpointCreated(MHttpResponse *response, AsyncHttpRequest*)
}
// Succeeded, decode the answer
+ int oldStatus = m_iStatus;
+ m_iStatus = m_iDesiredStatus;
+ ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, m_iStatus);
+
if (auto *hdr = response->FindHeader("Set-RegistrationToken")) {
CMStringA szValue = hdr;
int iStart = 0;