diff options
author | dequis <dx@dxzone.com.ar> | 2017-01-22 22:09:51 -0300 |
---|---|---|
committer | dequis <dx@dxzone.com.ar> | 2017-01-22 22:09:51 -0300 |
commit | 3203ee24512edad1003ea0fb4ddb34134af2429e (patch) | |
tree | 87b7f922863373e278a050e11e920ff7f49962f4 | |
parent | 82e6bcf0e6f22eeca7eda7ea95aaf8378df6ddef (diff) | |
download | bitlbee-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")
-rw-r--r-- | facebook/facebook-api.c | 10 |
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; } } |