aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--facebook/facebook-api.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c
index e552e3a..a073c5d 100644
--- a/facebook/facebook-api.c
+++ b/facebook/facebook-api.c
@@ -47,6 +47,7 @@ struct _FbApiPrivate
FbHttp *http;
FbMqtt *mqtt;
GHashTable *data;
+ gboolean retrying;
FbId uid;
gint64 sid;
@@ -789,7 +790,15 @@ static void
fb_api_cb_mqtt_error(FbMqtt *mqtt, GError *error, gpointer data)
{
FbApi *api = data;
- g_signal_emit_by_name(api, "error", error);
+ FbApiPrivate *priv = api->priv;
+
+ if (!priv->retrying) {
+ priv->retrying = TRUE;
+ fb_util_debug_info("Attempting to reconnect the MQTT stream...");
+ fb_api_connect(api, priv->invisible);
+ } else {
+ g_signal_emit_by_name(api, "error", error);
+ }
}
static void
@@ -941,6 +950,11 @@ fb_api_connect_queue(FbApi *api)
msg = g_queue_peek_head(priv->msgs);
fb_api_message_send(api, msg);
}
+
+ if (priv->retrying) {
+ priv->retrying = FALSE;
+ fb_util_debug_info("Reconnected the MQTT stream");
+ }
}
static void