diff options
Diffstat (limited to 'facebook/facebook-api.c')
-rw-r--r-- | facebook/facebook-api.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c index 512bd3f..57a22b0 100644 --- a/facebook/facebook-api.c +++ b/facebook/facebook-api.c @@ -799,6 +799,7 @@ fb_api_cb_mqtt_open(FbMqtt *mqtt, gpointer data) FbApiPrivate *priv = api->priv; FbThrift *thft; GByteArray *cytes; + GError *err = NULL; static guint8 flags = FB_MQTT_CONNECT_FLAG_USER | FB_MQTT_CONNECT_FLAG_PASS | @@ -873,7 +874,12 @@ fb_api_cb_mqtt_open(FbMqtt *mqtt, gpointer data) fb_thrift_write_stop(thft); bytes = fb_thrift_get_bytes(thft); - cytes = fb_util_zcompress(bytes); + cytes = fb_util_zcompress(bytes, &err); + + FB_API_ERROR_EMIT(api, err, + g_object_unref(thft); + return; + ); fb_util_debug_hexdump(FB_UTIL_DEBUG_LEVEL_INFO, bytes, "Writing connect"); fb_mqtt_connect(mqtt, flags, cytes); @@ -1547,6 +1553,7 @@ fb_api_cb_mqtt_publish(FbMqtt *mqtt, const gchar *topic, GByteArray *pload, FbApi *api = data; gboolean comp; GByteArray *bytes; + GError *err = NULL; guint i; static const struct { @@ -1563,12 +1570,8 @@ fb_api_cb_mqtt_publish(FbMqtt *mqtt, const gchar *topic, GByteArray *pload, comp = fb_util_zcompressed(pload); if (G_LIKELY(comp)) { - bytes = fb_util_zuncompress(pload); - - if (G_UNLIKELY(bytes == NULL)) { - fb_api_error(api, FB_API_ERROR, "Failed to decompress"); - return; - } + bytes = fb_util_zuncompress(pload, &err); + FB_API_ERROR_EMIT(api, err, return); } else { bytes = (GByteArray*) pload; } @@ -2054,6 +2057,7 @@ fb_api_publish(FbApi *api, const gchar *topic, const gchar *format, ...) GByteArray *bytes; GByteArray *cytes; gchar *msg; + GError *err = NULL; va_list ap; g_return_if_fail(FB_IS_API(api)); @@ -2066,7 +2070,12 @@ fb_api_publish(FbApi *api, const gchar *topic, const gchar *format, ...) va_end(ap); bytes = g_byte_array_new_take((guint8*) msg, strlen(msg)); - cytes = fb_util_zcompress(bytes); + cytes = fb_util_zcompress(bytes, &err); + + FB_API_ERROR_EMIT(api, err, + g_byte_array_free(bytes, TRUE); + return; + ); fb_util_debug_hexdump(FB_UTIL_DEBUG_LEVEL_INFO, bytes, "Writing message (topic: %s)", |