new feature: warning if autoping is disabled #80

Manually merged
jabber.developer merged 8 commits from feat/autoping-warning into master 2026-06-23 11:11:48 +00:00
10 changed files with 220 additions and 9 deletions
Showing only changes of commit 14fb6e3b41 - Show all commits

View File

@@ -99,11 +99,11 @@ static void _disco_items_result_handler(xmpp_stanza_t* const stanza);
static void _last_activity_get_handler(xmpp_stanza_t* const stanza); static void _last_activity_get_handler(xmpp_stanza_t* const stanza);
static void _version_get_handler(xmpp_stanza_t* const stanza); static void _version_get_handler(xmpp_stanza_t* const stanza);
static void _ping_get_handler(xmpp_stanza_t* const stanza); static void _ping_get_handler(xmpp_stanza_t* const stanza);
static void _disco_autoping_warning_message(GHashTable* features);
static int _version_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata); static int _version_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
static int _disco_info_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata); static int _disco_info_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
static int _disco_info_response_id_handler_onconnect(xmpp_stanza_t* const stanza, void* const userdata); static int _disco_info_response_id_handler_onconnect(xmpp_stanza_t* const stanza, void* const userdata);
static int _disco_autoping_warning_message(GHashTable* features);
static int _http_upload_response_id_handler(xmpp_stanza_t* const stanza, void* const upload_ctx); static int _http_upload_response_id_handler(xmpp_stanza_t* const stanza, void* const upload_ctx);
static int _last_activity_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata); static int _last_activity_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
static int _room_info_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata); static int _room_info_response_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
@@ -2432,7 +2432,7 @@ _disco_info_response_id_handler_onconnect(xmpp_stanza_t* const stanza, void* con
} }
// Prevent repetitions by avoiding checks of disco items (from connection_set_disco_items) // Prevent repetitions by avoiding checks of disco items (from connection_set_disco_items)
if (from && g_strcmp0(from, connection_get_domain()) == 0) { if (from && g_ascii_strcasecmp(from, connection_get_domain()) == 0) {
_disco_autoping_warning_message(features); _disco_autoping_warning_message(features);
} }
} }
@@ -2442,20 +2442,19 @@ _disco_info_response_id_handler_onconnect(xmpp_stanza_t* const stanza, void* con
return 0; return 0;
} }
static int static void
_disco_autoping_warning_message(GHashTable* features) _disco_autoping_warning_message(GHashTable* features)
{ {
gboolean server_supports_ping = g_hash_table_contains(features, "urn:xmpp:ping"); gboolean server_supports_ping = g_hash_table_contains(features, "urn:xmpp:ping");
gboolean users_prefers_warning = prefs_get_boolean(PREF_AUTOPING_WARNING); gboolean user_prefers_warning = prefs_get_boolean(PREF_AUTOPING_WARNING);
gboolean is_autoping_enabled = prefs_get_autoping() != 0; gboolean is_autoping_enabled = prefs_get_autoping() != 0;
if (!is_autoping_enabled && server_supports_ping && users_prefers_warning) { if (!is_autoping_enabled && server_supports_ping && user_prefers_warning) {
cons_show("This server supports XEP-0199: XMPP Ping (better keepalive detection),\n" cons_show("This server supports XEP-0199: XMPP Ping (better keepalive detection),\n"
"but autoping feature is currently disabled in settings.\n" "but autoping feature is currently disabled in settings.\n"
"Consider enabling it (e.g., `/autoping set 30`) for improved connection stability.\n" "Consider enabling it (e.g., `/autoping set 30`) for improved connection stability.\n"
"Use `/autoping warning off` to disable this message."); "Use `/autoping warning off` to disable this message.");
} }
return 0;
} }
static int static int