aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--facebook/facebook-api.c6
-rw-r--r--facebook/facebook-api.h4
-rw-r--r--facebook/facebook.c5
3 files changed, 13 insertions, 2 deletions
diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c
index b451fba..213937e 100644
--- a/facebook/facebook-api.c
+++ b/facebook/facebook-api.c
@@ -589,6 +589,12 @@ fb_api_json_chk(FbApi *api, gconstpointer data, gssize size, JsonNode **node)
priv->token = NULL;
}
+ /* 509 is used for "invalid attachment id" */
+ if (code == 509) {
+ errc = FB_API_ERROR_NONFATAL;
+ success = FALSE;
+ }
+
str = fb_json_values_next_str(values, NULL);
if ((g_strcmp0(str, "ERROR_QUEUE_NOT_FOUND") == 0) ||
diff --git a/facebook/facebook-api.h b/facebook/facebook-api.h
index 2da2977..5e17e98 100644
--- a/facebook/facebook-api.h
+++ b/facebook/facebook-api.h
@@ -341,6 +341,7 @@ typedef struct _FbApiUser FbApiUser;
* @FB_API_ERROR_GENERAL: General failure.
* @FB_API_ERROR_AUTH: Authentication failure.
* @FB_API_ERROR_QUEUE: Queue failure.
+ * @FB_API_ERROR_NONFATAL: Other non-fatal errors.
*
* The error codes for the #FB_API_ERROR domain.
*/
@@ -348,7 +349,8 @@ typedef enum
{
FB_API_ERROR_GENERAL,
FB_API_ERROR_AUTH,
- FB_API_ERROR_QUEUE
+ FB_API_ERROR_QUEUE,
+ FB_API_ERROR_NONFATAL
} FbApiError;
/**
diff --git a/facebook/facebook.c b/facebook/facebook.c
index 8c16eb0..da06d89 100644
--- a/facebook/facebook.c
+++ b/facebook/facebook.c
@@ -294,7 +294,10 @@ fb_cb_api_error(FbApi *api, GError *error, gpointer data)
ic = fb_data_get_connection(fata);
fb_util_debug_error("%s", error->message);
imcb_error(ic, "%s", error->message);
- imc_logout(ic, recon);
+
+ if (!g_error_matches(error, FB_API_ERROR, FB_API_ERROR_NONFATAL)) {
+ imc_logout(ic, recon);
+ }
}
static void