# HG changeset patch # User Roeland Jago Douma # Date 1381855899 -7200 # Node ID 72876dcf9094be6773a654e968e86054fababfed # Parent 1cc84780eb5f66766b5211ae5d986bec8383fc92 Bit more checks for enabling carbons -Make sure we do not enable carbons if they are already enabled -Return status of carbons diff -r 1cc84780eb5f -r 72876dcf9094 mcabber/mcabber/carbons.c --- a/mcabber/mcabber/carbons.c Sun Mar 03 14:32:16 2013 +0100 +++ b/mcabber/mcabber/carbons.c Tue Oct 15 18:51:39 2013 +0200 @@ -6,6 +6,7 @@ #include "xmpp.h" static int _carbons_available = 0; +static int _carbons_enabled = 0; static LmHandlerResult cb_carbons_enable(LmMessageHandler *h, LmConnection *c, LmMessage *m, gpointer user_data); @@ -30,6 +31,10 @@ void carbons_enable() { + if (_carbons_available == 0) { + return; + } + LmMessage *iq; LmMessageNode *enable; LmMessageHandler *handler; @@ -44,23 +49,44 @@ handler = lm_message_handler_new(cb_carbons_enable, NULL, NULL); - lm_connection_send_with_reply(lconnection, iq, handler, &error); + if (!lm_connection_send_with_reply(lconnection, iq, handler, &error)) { + scr_LogPrint(LPRINT_DEBUG, "Error sending IQ request: %s.", error->message); + g_error_free(error); + } + lm_message_handler_unref(handler); lm_message_unref(iq); - - if (error) { - scr_LogPrint(LPRINT_LOGNORM, "Error sending IQ request: %s.", error->message); - g_error_free(error); - } } void carbons_disable() { + if (_carbons_available == 0) { + return; + } +} +void carbons_info() +{ + if (_carbons_enabled) { + scr_LogPrint(LPRINT_NORMAL, "Carbons enabled."); + } else { + if (_carbons_available) { + scr_LogPrint(LPRINT_NORMAL, "Carbons available, but not enabled."); + } else { + scr_LogPrint(LPRINT_NORMAL, "Carbons not available."); + } + } } static LmHandlerResult cb_carbons_enable(LmMessageHandler *h, LmConnection *c, LmMessage *m, gpointer user_data) { + if (lm_message_get_sub_type(m) == LM_MESSAGE_SUB_TYPE_RESULT) { + _carbons_enabled = _carbons_enabled == 0 ? 1 : 0; + } else { + //Handle error cases + } + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } + diff -r 1cc84780eb5f -r 72876dcf9094 mcabber/mcabber/carbons.h --- a/mcabber/mcabber/carbons.h Sun Mar 03 14:32:16 2013 +0100 +++ b/mcabber/mcabber/carbons.h Tue Oct 15 18:51:39 2013 +0200 @@ -5,5 +5,6 @@ void carbons_available(); void carbons_enable(); void carbons_disable(); +void carbons_info(); #endif //__MCABBER_CARBONS_H__