Move disco info struct to connection

This commit is contained in:
James Booth
2016-05-07 23:28:16 +01:00
parent 9596591610
commit 6ce8edc194
8 changed files with 71 additions and 61 deletions

View File

@@ -66,8 +66,6 @@
#include "xmpp/stanza.h"
#include "xmpp/xmpp.h"
static GSList *disco_items;
// for auto reconnect
static struct {
char *name;
@@ -91,8 +89,6 @@ static void _session_free_saved_account(void);
static void _session_free_saved_details(void);
static void _session_free_session_data(void);
static void _session_info_destroy(DiscoInfo *info);
void
session_init(void)
{
@@ -100,7 +96,6 @@ session_init(void)
connection_init();
presence_sub_requests_init();
caps_init();
disco_items = NULL;
xmpp_initialize();
}
@@ -273,33 +268,6 @@ session_process_events(int millis)
}
}
GSList*
session_get_disco_items(void)
{
return (disco_items);
}
gboolean
session_service_supports(const char *const feature)
{
DiscoInfo *disco_info;
while (disco_items) {
disco_info = disco_items->data;
if (g_hash_table_lookup_extended(disco_info->features, feature, NULL, NULL)) {
return TRUE;
}
disco_items = g_slist_next(disco_items);
}
return FALSE;
}
void
session_set_disco_items(GSList *_disco_items)
{
disco_items = _disco_items;
}
char*
session_get_account_name(void)
{
@@ -342,11 +310,8 @@ session_login_success(gboolean secured)
blocking_request();
// items discovery
DiscoInfo *info = malloc(sizeof(struct disco_info_t));
info->item = strdup(connection_get_domain());
info->features = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
disco_items = g_slist_append(disco_items, info);
iq_disco_info_request_onconnect(info->item);
connection_disco_on_login();
iq_disco_info_request_onconnect(connection_get_domain());
iq_disco_items_request_onconnect(connection_get_domain());
if (prefs_get_boolean(PREF_CARBONS)){
@@ -392,18 +357,6 @@ session_lost_connection(void)
_session_free_session_data();
}
static void
_session_info_destroy(DiscoInfo *info)
{
if (info) {
free(info->item);
if (info->features) {
g_hash_table_destroy(info->features);
}
free(info);
}
}
static void
_session_reconnect(void)
{
@@ -441,8 +394,6 @@ _session_free_saved_details(void)
static void
_session_free_session_data(void)
{
g_slist_free_full(disco_items, (GDestroyNotify)_session_info_destroy);
disco_items = NULL;
connection_remove_all_available_resources();
chat_sessions_clear();
presence_clear_sub_requests();