summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorRobert Pösel <robyer@seznam.cz>2016-01-02 06:52:58 +0000
committerRobert Pösel <robyer@seznam.cz>2016-01-02 06:52:58 +0000
commitd6cbb026dfce2f834ed61c3e3b578cc594a22b05 (patch)
treef15bbd2e20c3a28da1b2924e3ea02b1a551d721a /protocols
parentbc23edb7878995498fa89e37438cdbc77e2b93bf (diff)
Facebook: Try to use "m." version if "mbasic." fails
This should fix searching and loading friendship requests at login for users which internally gets "mbasic" (not "touch") version when requesting "m" version git-svn-id: http://svn.miranda-ng.org/main/trunk@15982 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols')
-rw-r--r--protocols/FacebookRM/src/client.h4
-rw-r--r--protocols/FacebookRM/src/communication.cpp2
-rw-r--r--protocols/FacebookRM/src/connection.cpp3
-rw-r--r--protocols/FacebookRM/src/process.cpp7
4 files changed, 15 insertions, 1 deletions
diff --git a/protocols/FacebookRM/src/client.h b/protocols/FacebookRM/src/client.h
index 6110943167..240910b49a 100644
--- a/protocols/FacebookRM/src/client.h
+++ b/protocols/FacebookRM/src/client.h
@@ -45,6 +45,8 @@ public:
fcb_conn_lock_ = NULL;
handle_ = NULL;
parent = NULL;
+
+ mbasicWorks = true;
}
HANDLE hMsgCon;
@@ -85,6 +87,8 @@ public:
int chat_msgs_recv_;
volatile unsigned int chat_req_;
+ bool mbasicWorks;
+
////////////////////////////////////////////////////////////
// Client vs protocol communication
diff --git a/protocols/FacebookRM/src/communication.cpp b/protocols/FacebookRM/src/communication.cpp
index bc8f8a11e5..395bd70bad 100644
--- a/protocols/FacebookRM/src/communication.cpp
+++ b/protocols/FacebookRM/src/communication.cpp
@@ -246,7 +246,7 @@ std::string facebook_client::choose_server(RequestType request_type)
case REQUEST_LOAD_FRIENDSHIPS:
case REQUEST_SEARCH:
case REQUEST_USER_INFO_MOBILE:
- return FACEBOOK_SERVER_MBASIC;
+ return this->mbasicWorks ? FACEBOOK_SERVER_MBASIC : FACEBOOK_SERVER_MOBILE;
// case REQUEST_LOGOUT:
// case REQUEST_BUDDY_LIST:
diff --git a/protocols/FacebookRM/src/connection.cpp b/protocols/FacebookRM/src/connection.cpp
index 1406a497f9..608c4522ae 100644
--- a/protocols/FacebookRM/src/connection.cpp
+++ b/protocols/FacebookRM/src/connection.cpp
@@ -105,6 +105,9 @@ void FacebookProto::ChangeStatus(void*)
ResetEvent(update_loop_lock_);
+ // Workaround for not working "mbasic." for some users - reset this flag at every login
+ facy.mbasicWorks = true;
+
if (NegotiateConnection() && facy.home() && facy.reconnect())
{
// Load all friends
diff --git a/protocols/FacebookRM/src/process.cpp b/protocols/FacebookRM/src/process.cpp
index 6ec0683538..9f115394ab 100644
--- a/protocols/FacebookRM/src/process.cpp
+++ b/protocols/FacebookRM/src/process.cpp
@@ -1139,6 +1139,13 @@ void FacebookProto::ProcessFriendRequests(void*)
// Get notifications
http::response resp = facy.flap(REQUEST_LOAD_FRIENDSHIPS);
+ // Workaround not working "mbasic." website for some people
+ if (!resp.isValid()) {
+ // Remember it didn't worked and try it again (internally it will try "m." this time)
+ facy.mbasicWorks = false;
+ resp = facy.flap(REQUEST_LOAD_FRIENDSHIPS);
+ }
+
if (resp.code != HTTP_CODE_OK) {
facy.handle_error("friendRequests");
return;