facebook: fixed all errors being marked as fatal facebook

Sat, 11 Jul 2015 14:45:46 -0400

author
James Geboski <jgeboski@gmail.com>
date
Sat, 11 Jul 2015 14:45:46 -0400
branch
facebook
changeset 37293
dc35ba3e7fac
parent 37292
ac1d2fdaab42
child 37294
bf3c5b94071f

facebook: fixed all errors being marked as fatal

libpurple/protocols/facebook/facebook.c file | annotate | diff | comparison | revisions
--- a/libpurple/protocols/facebook/facebook.c	Fri Jul 10 13:04:53 2015 -0400
+++ b/libpurple/protocols/facebook/facebook.c	Sat Jul 11 14:45:46 2015 -0400
@@ -39,9 +39,6 @@
 static PurpleProtocol *fb_protocol = NULL;
 
 static void
-fb_cb_api_error(FbApi *api, GError *error, gpointer data);
-
-static void
 fb_cb_api_auth(FbApi *api, gpointer data)
 {
 	FbData *fata = data;
@@ -168,11 +165,24 @@
 fb_cb_api_error(FbApi *api, GError *error, gpointer data)
 {
 	FbData *fata = data;
+	gboolean nfatal;
 	PurpleConnection *gc;
+	PurpleConnectionError reason;
+
+	/* Non-fatal errors */
+	nfatal = (error->domain == FB_API_ERROR) ||
+	         (error->domain == FB_MQTT_ERROR);
+
+	/* Non-fatal HTTP errors */
+	nfatal |= (error->domain == FB_HTTP_ERROR) &&
+	          (error->code < 400) &&
+	          (error->code > 500);
+
+	reason = (nfatal) ? PURPLE_CONNECTION_ERROR_NETWORK_ERROR
+	                  : PURPLE_CONNECTION_ERROR_OTHER_ERROR;
 
 	gc = fb_data_get_connection(fata);
-	purple_connection_error(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
-	                        error->message);
+	purple_connection_error(gc, reason, error->message);
 }
 
 static void

mercurial