mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-04 02:08:49 -04:00
445 lines
21 KiB
C
445 lines
21 KiB
C
$NetBSD: patch-res_res__xmpp.c,v 1.3 2015/08/09 04:07:13 jnemeth Exp $
|
|
|
|
--- res/res_xmpp.c.orig 2015-06-04 00:44:42.000000000 +0000
|
|
+++ res/res_xmpp.c
|
|
@@ -511,11 +511,14 @@ static void *xmpp_config_find(struct ao2
|
|
return ao2_find(tmp_container, category, OBJ_KEY);
|
|
}
|
|
|
|
+RAII_DECL(struct xmpp_config *, cfg, ao2_cleanup);
|
|
+RAII_DECL(struct ast_xmpp_client_config *, clientcfg, ao2_cleanup);
|
|
+
|
|
/*! \brief Look up existing client or create a new one */
|
|
static void *xmpp_client_find_or_create(const char *category)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
|
|
if (!cfg || !cfg->clients || !(clientcfg = xmpp_config_find(cfg->clients, category))) {
|
|
return xmpp_client_alloc(category);
|
|
@@ -601,11 +604,13 @@ error:
|
|
return NULL;
|
|
}
|
|
|
|
+RAII_DECL(struct ast_xmpp_client_config *, oldclientcfg, ao2_cleanup);
|
|
+
|
|
static int xmpp_config_prelink(void *newitem)
|
|
{
|
|
struct ast_xmpp_client_config *clientcfg = newitem;
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, oldclientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, oldclientcfg, NULL);
|
|
|
|
if (ast_strlen_zero(clientcfg->user)) {
|
|
ast_log(LOG_ERROR, "No user specified on client '%s'\n", clientcfg->name);
|
|
@@ -641,7 +646,7 @@ static int xmpp_config_prelink(void *new
|
|
|
|
static void xmpp_config_post_apply(void)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
|
|
ao2_callback(cfg->clients, OBJ_NODATA | OBJ_MULTIPLE, xmpp_client_config_post_apply, NULL);
|
|
}
|
|
@@ -727,8 +732,8 @@ static int xmpp_is_secure(struct ast_xmp
|
|
|
|
struct ast_xmpp_client *ast_xmpp_client_find(const char *name)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
|
|
if (!cfg || !cfg->clients || !(clientcfg = xmpp_config_find(cfg->clients, name))) {
|
|
return NULL;
|
|
@@ -756,8 +761,8 @@ void ast_xmpp_client_unlock(struct ast_x
|
|
/*! \brief Internal function used to send a message to a user or chatroom */
|
|
static int xmpp_client_send_message(struct ast_xmpp_client *client, int group, const char *nick, const char *address, const char *message)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
int res = 0;
|
|
char from[XMPP_MAX_JIDLEN];
|
|
iks *message_packet;
|
|
@@ -820,8 +825,8 @@ done:
|
|
|
|
static int xmpp_client_set_group_presence(struct ast_xmpp_client *client, const char *room, int level, const char *nick)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
int res = 0;
|
|
iks *presence = NULL, *x = NULL;
|
|
char from[XMPP_MAX_JIDLEN], roomid[XMPP_MAX_JIDLEN];
|
|
@@ -891,8 +896,8 @@ void ast_xmpp_increment_mid(char *mid)
|
|
*/
|
|
static iks* xmpp_pubsub_iq_create(struct ast_xmpp_client *client, const char *type)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
iks *request;
|
|
|
|
if (!cfg || !cfg->clients || !(clientcfg = xmpp_config_find(cfg->clients, client->name)) ||
|
|
@@ -924,7 +929,7 @@ static iks* xmpp_pubsub_iq_create(struct
|
|
static iks* xmpp_pubsub_build_publish_skeleton(struct ast_xmpp_client *client, const char *node,
|
|
const char *event_type, unsigned int cachable)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
iks *request, *pubsub, *publish, *item;
|
|
|
|
if (!cfg || !cfg->global || !(request = xmpp_pubsub_iq_create(client, "set"))) {
|
|
@@ -1150,7 +1155,7 @@ static void xmpp_pubsub_publish_mwi(stru
|
|
static void xmpp_pubsub_publish_device_state(struct ast_xmpp_client *client, const char *device,
|
|
const char *device_state, unsigned int cachable)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
iks *request, *state;
|
|
char eid_str[20], cachable_str[2];
|
|
|
|
@@ -1262,7 +1267,7 @@ static void xmpp_pubsub_unsubscribe(stru
|
|
*/
|
|
static void xmpp_pubsub_subscribe(struct ast_xmpp_client *client, const char *node)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
iks *request = xmpp_pubsub_iq_create(client, "set");
|
|
iks *pubsub, *subscribe;
|
|
|
|
@@ -1369,7 +1374,7 @@ static int xmpp_pubsub_handle_event(void
|
|
|
|
static int xmpp_pubsub_handle_error(void *data, ikspak *pak)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
char *node_name, *error;
|
|
int error_num;
|
|
iks *orig_request, *orig_pubsub = iks_find(pak->x, "pubsub");
|
|
@@ -1442,8 +1447,8 @@ static int xmpp_pubsub_handle_error(void
|
|
*/
|
|
static void xmpp_init_event_distribution(struct ast_xmpp_client *client)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
|
|
if (!cfg || !cfg->clients || !(clientcfg = xmpp_config_find(cfg->clients, client->name))) {
|
|
return;
|
|
@@ -1497,8 +1502,8 @@ static int xmpp_resource_immediate(void
|
|
*/
|
|
static int xmpp_status_exec(struct ast_channel *chan, const char *data)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_buddy *buddy;
|
|
struct ast_xmpp_resource *resource;
|
|
char *s = NULL, status[2];
|
|
@@ -1576,8 +1581,8 @@ static int xmpp_status_exec(struct ast_c
|
|
*/
|
|
static int acf_jabberstatus_read(struct ast_channel *chan, const char *name, char *data, char *buf, size_t buflen)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_buddy *buddy;
|
|
struct ast_xmpp_resource *resource;
|
|
int stat = 7;
|
|
@@ -1649,8 +1654,8 @@ static struct ast_custom_function jabber
|
|
*/
|
|
static int xmpp_join_exec(struct ast_channel *chan, const char *data)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
char *s, nick[XMPP_MAX_RESJIDLEN];
|
|
AST_DECLARE_APP_ARGS(args,
|
|
AST_APP_ARG(sender);
|
|
@@ -1708,8 +1713,8 @@ static int xmpp_join_exec(struct ast_cha
|
|
*/
|
|
static int xmpp_leave_exec(struct ast_channel *chan, const char *data)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
char *s, nick[XMPP_MAX_RESJIDLEN];
|
|
AST_DECLARE_APP_ARGS(args,
|
|
AST_APP_ARG(sender);
|
|
@@ -1769,8 +1774,8 @@ static int xmpp_leave_exec(struct ast_ch
|
|
*/
|
|
static int xmpp_send_exec(struct ast_channel *chan, const char *data)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
char *s;
|
|
AST_DECLARE_APP_ARGS(args,
|
|
AST_APP_ARG(sender);
|
|
@@ -1810,8 +1815,8 @@ static int xmpp_send_exec(struct ast_cha
|
|
*/
|
|
static int xmpp_sendgroup_exec(struct ast_channel *chan, const char *data)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
char *s, nick[XMPP_MAX_RESJIDLEN];
|
|
AST_DECLARE_APP_ARGS(args,
|
|
AST_APP_ARG(sender);
|
|
@@ -1863,8 +1868,8 @@ static int xmpp_sendgroup_exec(struct as
|
|
*/
|
|
static int acf_jabberreceive_read(struct ast_channel *chan, const char *name, char *data, char *buf, size_t buflen)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
char *parse = NULL;
|
|
int timeout, jidlen, resourcelen, found = 0;
|
|
struct timeval start;
|
|
@@ -2022,8 +2027,8 @@ static struct ast_custom_function jabber
|
|
*/
|
|
static int delete_old_messages(struct ast_xmpp_client *client, char *from)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
int deleted = 0, isold = 0;
|
|
struct ast_xmpp_message *message = NULL;
|
|
|
|
@@ -2056,8 +2061,8 @@ static int delete_old_messages(struct as
|
|
|
|
static int xmpp_send_cb(const struct ast_msg *msg, const char *to, const char *from)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
char *sender, *dest;
|
|
int res;
|
|
|
|
@@ -2181,8 +2186,8 @@ static int xmpp_client_subscribe_user(vo
|
|
/*! \brief Hook function called when roster is received from server */
|
|
static int xmpp_roster_hook(void *data, ikspak *pak)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_client *client = data;
|
|
iks *item;
|
|
|
|
@@ -2239,8 +2244,8 @@ static int xmpp_roster_hook(void *data,
|
|
/*! \brief Internal function which changes the presence status of an XMPP client */
|
|
static void xmpp_client_set_presence(struct ast_xmpp_client *client, const char *to, const char *from, int level, const char *desc)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
iks *presence = NULL, *cnode = NULL, *priority = NULL;
|
|
char priorityS[10];
|
|
|
|
@@ -2367,8 +2372,8 @@ static int xmpp_client_service_discovery
|
|
/*! \brief Hook function called when client finishes authenticating with the server */
|
|
static int xmpp_connect_hook(void *data, ikspak *pak)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_client *client = data;
|
|
iks *roster;
|
|
|
|
@@ -2405,8 +2410,8 @@ static int xmpp_connect_hook(void *data,
|
|
/*! \brief Logging hook function */
|
|
static void xmpp_log_hook(void *data, const char *xmpp, size_t size, int incoming)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_client *client = data;
|
|
|
|
if (!ast_strlen_zero(xmpp)) {
|
|
@@ -2748,8 +2753,8 @@ static int xmpp_component_authenticate(s
|
|
/*! \brief Hook function called when component receives a service discovery get message */
|
|
static int xmpp_component_service_discovery_get_hook(void *data, ikspak *pak)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_client *client = data;
|
|
iks *iq = NULL, *query = NULL, *identity = NULL, *disco = NULL, *reg = NULL, *commands = NULL, *gateway = NULL;
|
|
iks *version = NULL, *vcard = NULL, *search = NULL, *item = NULL;
|
|
@@ -2835,8 +2840,8 @@ done:
|
|
/*! \brief Hook function called when the component is queried about registration */
|
|
static int xmpp_component_register_get_hook(void *data, ikspak *pak)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_client *client = data;
|
|
iks *iq = NULL, *query = NULL, *error = NULL, *notacceptable = NULL, *instructions = NULL;
|
|
struct ast_xmpp_buddy *buddy;
|
|
@@ -2943,8 +2948,8 @@ done:
|
|
/*! \brief Hook function called when we receive a service discovery items request */
|
|
static int xmpp_component_service_discovery_items_hook(void *data, ikspak *pak)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_client *client = data;
|
|
iks *iq = NULL, *query = NULL, *item = NULL, *feature = NULL;
|
|
char *node;
|
|
@@ -3327,8 +3332,8 @@ static int xmpp_pak_s10n(struct ast_xmpp
|
|
/*! \brief Action hook for when things occur */
|
|
static int xmpp_action_hook(void *data, int type, iks *node)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
struct ast_xmpp_client *client = data;
|
|
ikspak *pak;
|
|
int i;
|
|
@@ -3438,8 +3443,8 @@ int ast_xmpp_client_disconnect(struct as
|
|
static int xmpp_client_reconnect(struct ast_xmpp_client *client)
|
|
{
|
|
struct timeval tv = { .tv_sec = 5, .tv_usec = 0 };
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
int res = IKS_NET_NOCONN;
|
|
|
|
if (!cfg || !cfg->clients || !(clientcfg = xmpp_config_find(cfg->clients, client->name))) {
|
|
@@ -3614,8 +3619,8 @@ static void *xmpp_client_thread(void *da
|
|
} else if (res == IKS_NET_TLSFAIL) {
|
|
ast_log(LOG_ERROR, "JABBER: Failure in TLS.\n");
|
|
} else if (!client->timeout && client->state == XMPP_STATE_CONNECTED) {
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
|
|
if (cfg && cfg->clients) {
|
|
clientcfg = xmpp_config_find(cfg->clients, client->name);
|
|
@@ -3669,10 +3674,12 @@ static int xmpp_client_config_merge_budd
|
|
return 1;
|
|
}
|
|
|
|
+RAII_DECL(struct xmpp_config *, gcfg, ao2_cleanup);
|
|
+
|
|
static int xmpp_client_config_post_apply(void *obj, void *arg, int flags)
|
|
{
|
|
struct ast_xmpp_client_config *cfg = obj;
|
|
- RAII_VAR(struct xmpp_config *, gcfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, gcfg, ao2_global_obj_ref(globals));
|
|
|
|
/* Merge global options that have not been modified */
|
|
ast_copy_flags(&cfg->flags, &gcfg->global->general, ~(cfg->mod_flags.flags) & (XMPP_AUTOPRUNE | XMPP_AUTOREGISTER | XMPP_AUTOACCEPT));
|
|
@@ -3732,8 +3739,8 @@ static int xmpp_client_config_post_apply
|
|
*/
|
|
static int manager_jabber_send(struct mansession *s, const struct message *m)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
const char *id = astman_get_header(m, "ActionID");
|
|
const char *jabber = astman_get_header(m, "Jabber");
|
|
const char *screenname = astman_get_header(m, "ScreenName");
|
|
@@ -3859,8 +3866,8 @@ static void xmpp_pubsub_request_nodes(st
|
|
static char *xmpp_cli_list_pubsub_nodes(struct ast_cli_entry *e, int cmd, struct
|
|
ast_cli_args *a)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
const char *name = NULL, *collection = NULL;
|
|
|
|
switch (cmd) {
|
|
@@ -3945,8 +3952,8 @@ static void xmpp_pubsub_purge_nodes(stru
|
|
static char *xmpp_cli_purge_pubsub_nodes(struct ast_cli_entry *e, int cmd, struct
|
|
ast_cli_args *a)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
const char *name;
|
|
|
|
switch (cmd) {
|
|
@@ -3990,8 +3997,8 @@ static char *xmpp_cli_purge_pubsub_nodes
|
|
static char *xmpp_cli_delete_pubsub_node(struct ast_cli_entry *e, int cmd, struct
|
|
ast_cli_args *a)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
const char *name;
|
|
|
|
switch (cmd) {
|
|
@@ -4027,8 +4034,8 @@ static char *xmpp_cli_delete_pubsub_node
|
|
*/
|
|
static char *xmpp_cli_create_collection(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
const char *name, *collection_name;
|
|
|
|
switch (cmd) {
|
|
@@ -4067,8 +4074,8 @@ static char *xmpp_cli_create_collection(
|
|
*/
|
|
static char *xmpp_cli_create_leafnode(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
|
|
const char *name, *collection_name, *leaf_name;
|
|
|
|
switch (cmd) {
|
|
@@ -4143,7 +4150,7 @@ static char *xmpp_do_set_debug(struct as
|
|
*/
|
|
static char *xmpp_show_clients(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
struct ao2_iterator i;
|
|
struct ast_xmpp_client_config *clientcfg;
|
|
|
|
@@ -4219,7 +4226,7 @@ static char *xmpp_show_clients(struct as
|
|
*/
|
|
static char *xmpp_show_buddies(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
|
{
|
|
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
|
|
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
|
|
struct ao2_iterator i;
|
|
struct ast_xmpp_client_config *clientcfg;
|
|
|