aboutsummaryrefslogtreecommitdiffstats
path: root/facebook
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2017-01-22 22:09:51 -0300
committerdequis <dx@dxzone.com.ar>2017-01-22 22:09:51 -0300
commit3203ee24512edad1003ea0fb4ddb34134af2429e (patch)
tree87b7f922863373e278a050e11e920ff7f49962f4 /facebook
parent82e6bcf0e6f22eeca7eda7ea95aaf8378df6ddef (diff)
downloadbitlbee-facebook-3203ee24512edad1003ea0fb4ddb34134af2429e.tar.gz
bitlbee-facebook-3203ee24512edad1003ea0fb4ddb34134af2429e.tar.bz2
bitlbee-facebook-3203ee24512edad1003ea0fb4ddb34134af2429e.tar.xz
Fix infinite loop in previous commit when being added by a non-friend
Because apparently that's a thing that happens (incoming delta with added item saying "friendship_status": "CAN_REQUEST" instead of "ARE_FRIENDS")
Diffstat (limited to 'facebook')
-rw-r--r--facebook/facebook-api.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c
index 1237861..d0e91b2 100644
--- a/facebook/facebook-api.c
+++ b/facebook/facebook-api.c
@@ -2034,6 +2034,7 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users)
FbApiUser *user;
FbId uid;
FbJsonValues *values;
+ gboolean is_array;
GError *err = NULL;
values = fb_json_values_new(root);
@@ -2046,7 +2047,9 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users)
fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE,
"$.hugePictureUrl.uri");
- if (JSON_NODE_TYPE(root) == JSON_NODE_ARRAY) {
+ is_array = (JSON_NODE_TYPE(root) == JSON_NODE_ARRAY);
+
+ if (is_array) {
fb_json_values_set_array(values, FALSE, "$");
}
@@ -2058,6 +2061,9 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users)
if (((g_strcmp0(str, "ARE_FRIENDS") != 0) &&
(uid != priv->uid)) || (uid == 0))
{
+ if (!is_array) {
+ break;
+ }
continue;
}
@@ -2070,7 +2076,7 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users)
users = g_slist_prepend(users, user);
- if (JSON_NODE_TYPE(root) != JSON_NODE_ARRAY) {
+ if (!is_array) {
break;
}
}