jabberd2
2.5.0
|
roster managment & subscriptions More...
#include "sm.h"
Go to the source code of this file.
Data Structures | |
struct | _mod_roster_st |
struct | _roster_walker_st |
Typedefs | |
typedef struct _mod_roster_st * | mod_roster_t |
typedef struct _roster_walker_st * | roster_walker_t |
Functions | |
static void | _roster_freeuser_walker (const char *key, int keylen, void *val, void *arg) |
free a single roster item More... | |
static void | _roster_freeuser (user_t user) |
free the roster More... | |
static void | _roster_save_item (user_t user, item_t item) |
static void | _roster_insert_item (pkt_t pkt, item_t item, int elem) |
insert a roster item into this pkt, starting at elem More... | |
static int | _roster_push (user_t user, pkt_t pkt, int mod_index) |
push this packet to all sessions except the given one More... | |
static mod_ret_t | _roster_in_sess_s10n (mod_instance_t mi, sess_t sess, pkt_t pkt) |
static void | _roster_get_walker (const char *id, int idlen, void *val, void *arg) |
build the iq:roster packet from the hash More... | |
static void | _roster_update_walker (const char *id, int idlen, void *val, void *arg) |
push roster XEP-0237 updates to client More... | |
static void | _roster_set_item (pkt_t pkt, int elem, sess_t sess, mod_instance_t mi) |
static mod_ret_t | _roster_in_sess (mod_instance_t mi, sess_t sess, pkt_t pkt) |
our main handler for packets arriving from a session More... | |
static mod_ret_t | _roster_pkt_user (mod_instance_t mi, user_t user, pkt_t pkt) |
handle incoming s10ns More... | |
static int | _roster_user_load (mod_instance_t mi, user_t user) |
load the roster from the database More... | |
static void | _roster_user_delete (mod_instance_t mi, jid_t jid) |
static void | _roster_free (module_t mod) |
DLLEXPORT int | module_init (mod_instance_t mi, const char *arg) |
roster managment & subscriptions
Definition in file mod_roster.c.
typedef struct _mod_roster_st * mod_roster_t |
typedef struct _roster_walker_st * roster_walker_t |
|
static |
free a single roster item
Definition at line 42 of file mod_roster.c.
References item_st::groups, item_st::jid, jid_free(), item_st::name, and item_st::ngroups.
Referenced by _roster_freeuser(), _roster_set_item(), and _roster_user_load().
|
static |
free the roster
Definition at line 60 of file mod_roster.c.
References _roster_freeuser_walker(), user_st::jid, jid_user(), log_debug, user_st::roster, xhash_free(), xhash_walk(), and ZONE.
Referenced by _roster_user_load().
Definition at line 73 of file mod_roster.c.
References item_st::ask, item_st::from, item_st::groups, item_st::jid, user_st::jid, jid_full(), jid_user(), log_debug, item_st::name, item_st::ngroups, user_st::sm, sm_st::st, item_st::to, and ZONE.
Referenced by _roster_in_sess_s10n(), _roster_pkt_user(), and _roster_set_item().
insert a roster item into this pkt, starting at elem
Definition at line 119 of file mod_roster.c.
References item_st::ask, item_st::from, item_st::groups, item_st::jid, jid_full(), pkt_st::nad, nad_add_namespace(), NAD_ENS, nad_insert_elem(), nad_set_attr(), item_st::name, item_st::ngroups, item_st::to, and uri_CLIENT.
Referenced by _roster_get_walker(), _roster_in_sess_s10n(), _roster_pkt_user(), _roster_set_item(), and _roster_update_walker().
push this packet to all sessions except the given one
Definition at line 152 of file mod_roster.c.
References sess_st::jid, jid_full(), sess_st::module_data, sess_st::next, pkt_dup(), pkt_sess(), and user_st::sessions.
Referenced by _roster_in_sess_s10n(), _roster_pkt_user(), and _roster_set_item().
|
static |
Definition at line 174 of file mod_roster.c.
References _roster_insert_item(), _roster_push(), _roster_save_item(), pkt_st::from, user_st::jid, sess_st::jid, jid_dup(), jid_free(), jid_full(), jid_new(), jid_user(), log_debug, _mod_roster_st::maxitems, mod_instance_st::mod, mod_PASS, pkt_st::nad, nad_add_namespace(), nad_append_elem(), nad_set_attr(), pkt_create(), pkt_free(), pkt_id_new(), pkt_S10N, pkt_S10N_ED, pkt_S10N_UN, pkt_S10N_UNED, pres_roster(), module_st::private, user_st::roster, user_st::sm, sm_storage_rate_limit(), sm_st::st, stanza_err_BAD_REQUEST, stanza_err_NOT_ACCEPTABLE, stanza_err_RESOURCE_CONSTRAINT, pkt_st::to, pkt_st::type, uri_ROSTER, sess_st::user, xhash_get(), xhash_put(), and ZONE.
Referenced by _roster_in_sess().
|
static |
build the iq:roster packet from the hash
Definition at line 271 of file mod_roster.c.
References _roster_insert_item(), _roster_walker_st::pkt, _roster_walker_st::ver, and item_st::ver.
Referenced by _roster_in_sess().
|
static |
push roster XEP-0237 updates to client
Definition at line 283 of file mod_roster.c.
References _roster_insert_item(), pkt_st::nad, nad_add_namespace(), nad_append_elem(), nad_set_attr(), pkt_create(), pkt_id_new(), pkt_sess(), _roster_walker_st::req_ver, _roster_walker_st::sess, user_st::sm, uri_ROSTER, sess_st::user, and item_st::ver.
Referenced by _roster_in_sess().
|
static |
Definition at line 310 of file mod_roster.c.
References _roster_freeuser_walker(), _roster_insert_item(), _roster_push(), _roster_save_item(), user_st::jid, sess_st::jid, jid_free(), jid_full(), jid_new(), jid_user(), log_debug, _mod_roster_st::maxitems, mod_instance_st::mod, pkt_st::nad, nad_add_namespace(), nad_append_elem(), NAD_AVAL, NAD_AVAL_L, NAD_CDATA, NAD_CDATA_L, NAD_ENS, nad_find_attr(), nad_find_elem(), nad_set_attr(), pkt_create(), pkt_free(), pkt_id_new(), pkt_router(), pres_roster(), module_st::private, user_st::roster, user_st::sm, sm_storage_rate_limit(), sm_st::st, uri_ROSTER, sess_st::user, xhash_get(), xhash_put(), xhash_zap(), and ZONE.
Referenced by _roster_in_sess().
|
static |
our main handler for packets arriving from a session
Definition at line 484 of file mod_roster.c.
References _roster_get_walker(), _roster_in_sess_s10n(), _roster_set_item(), _roster_update_walker(), module_st::index, j_atoi(), log_debug, mod_instance_st::mod, mod_HANDLED, mod_PASS, sess_st::module_data, pkt_st::nad, NAD_AVAL, NAD_AVAL_L, nad_drop_elem(), NAD_ENS, nad_find_attr(), nad_find_elem(), nad_set_attr(), pkt_st::ns, ns_ROSTER, _roster_walker_st::pkt, pkt_create(), pkt_free(), pkt_id(), pkt_IQ, pkt_IQ_RESULT, pkt_IQ_SET, pkt_S10N, pkt_sess(), pkt_tofrom(), _roster_walker_st::req_ver, user_st::roster, _roster_walker_st::sess, user_st::sm, stanza_err_BAD_REQUEST, pkt_st::type, sess_st::user, _roster_walker_st::ver, xhash_walk(), and ZONE.
Referenced by module_init().
|
static |
handle incoming s10ns
Definition at line 599 of file mod_roster.c.
References _roster_insert_item(), _roster_push(), _roster_save_item(), item_st::ask, pkt_st::from, item_st::from, module_st::index, user_st::jid, jid_full(), jid_user(), mod_instance_st::mod, mod_HANDLED, mod_PASS, pkt_st::nad, nad_add_namespace(), nad_append_elem(), nad_set_attr(), pkt_create(), pkt_free(), pkt_id_new(), pkt_router(), pkt_S10N, pkt_S10N_ED, pkt_S10N_UN, pkt_S10N_UNED, pkt_tofrom(), pres_roster(), user_st::roster, route_ERROR, pkt_st::rtype, user_st::sessions, user_st::sm, sm_storage_rate_limit(), stanza_err_RESOURCE_CONSTRAINT, item_st::to, user_st::top, pkt_st::type, uri_ROSTER, and xhash_get().
Referenced by module_init().
|
static |
load the roster from the database
Definition at line 738 of file mod_roster.c.
References _roster_freeuser(), _roster_freeuser_walker(), item_st::ask, item_st::from, item_st::groups, item_st::jid, user_st::jid, jid_full(), jid_new(), jid_user(), log_debug, item_st::name, item_st::ngroups, user_st::p, pool_cleanup(), user_st::roster, user_st::sm, sm_st::st, item_st::to, item_st::ver, xhash_get(), xhash_new(), xhash_put(), xhash_zap(), and ZONE.
Referenced by module_init().
|
static |
Definition at line 818 of file mod_roster.c.
References jid_user(), log_debug, mod_instance_st::sm, sm_st::st, and ZONE.
Referenced by module_init().
|
static |
Definition at line 825 of file mod_roster.c.
References module_st::private.
Referenced by module_init().
DLLEXPORT int module_init | ( | mod_instance_t | mi, |
const char * | arg | ||
) |
Definition at line 831 of file mod_roster.c.
References _roster_free(), _roster_in_sess(), _roster_pkt_user(), _roster_user_delete(), _roster_user_load(), sm_st::config, config_get_one(), feature_register(), module_st::free, module_st::in_sess, module_st::init, j_atoi(), _mod_roster_st::maxitems, module_st::mm, mod_instance_st::mod, module_st::pkt_user, module_st::private, mm_st::sm, uri_ROSTER, module_st::user_delete, and module_st::user_load.