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