diff options
author | phsultan <phsultan@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-24 17:34:53 +0000 |
---|---|---|
committer | phsultan <phsultan@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-24 17:34:53 +0000 |
commit | dfd32b125efd0aae7f5de2ecc4d27e43e5fd868d (patch) | |
tree | a9e08d9996936790bda634d687064fa1d35c0252 /res | |
parent | 487986470cb27fb4d9f8c6199462cc3fe6ed5ad8 (diff) |
Merged revisions 124870 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
........
r124870 | phsultan | 2008-06-24 19:28:39 +0200 (Tue, 24 Jun 2008) | 1 line
Code simplification
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@124871 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r-- | res/res_jabber.c | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/res/res_jabber.c b/res/res_jabber.c index eda3b420a..85a33328d 100644 --- a/res/res_jabber.c +++ b/res/res_jabber.c @@ -2051,37 +2051,39 @@ static void aji_pruneregister(struct aji_client *client) iks *removequery = iks_new("query"); iks *removeitem = iks_new("item"); iks *send = iks_make_iq(IKS_TYPE_GET, "http://jabber.org/protocol/disco#items"); - - if (client && removeiq && removequery && removeitem && send) { - iks_insert_node(removeiq, removequery); - iks_insert_node(removequery, removeitem); - ASTOBJ_CONTAINER_TRAVERSE(&client->buddies, 1, { - ASTOBJ_RDLOCK(iterator); - /* For an aji_buddy, both AUTOPRUNE and AUTOREGISTER will never - * be called at the same time */ - if (ast_test_flag(&iterator->flags, AJI_AUTOPRUNE)) { - res = ast_aji_send(client, iks_make_s10n(IKS_TYPE_UNSUBSCRIBE, iterator->name, - "GoodBye your status is no longer needed by Asterisk the Open Source PBX" - " so I am no longer subscribing to your presence.\n")); - res = ast_aji_send(client, iks_make_s10n(IKS_TYPE_UNSUBSCRIBED, iterator->name, - "GoodBye you are no longer in the asterisk config file so I am removing" - " your access to my presence.\n")); - iks_insert_attrib(removeiq, "from", client->jid->full); - iks_insert_attrib(removeiq, "type", "set"); - iks_insert_attrib(removequery, "xmlns", "jabber:iq:roster"); - iks_insert_attrib(removeitem, "jid", iterator->name); - iks_insert_attrib(removeitem, "subscription", "remove"); - res = ast_aji_send(client, removeiq); - } else if (ast_test_flag(&iterator->flags, AJI_AUTOREGISTER)) { - res = ast_aji_send(client, iks_make_s10n(IKS_TYPE_SUBSCRIBE, iterator->name, - "Greetings I am the Asterisk Open Source PBX and I want to subscribe to your presence\n")); - ast_clear_flag(&iterator->flags, AJI_AUTOREGISTER); - } - ASTOBJ_UNLOCK(iterator); - }); - } else + if (!client || !removeiq || !removequery || !removeitem || !send) { ast_log(LOG_ERROR, "Out of memory.\n"); + goto safeout; + } + + iks_insert_node(removeiq, removequery); + iks_insert_node(removequery, removeitem); + ASTOBJ_CONTAINER_TRAVERSE(&client->buddies, 1, { + ASTOBJ_RDLOCK(iterator); + /* For an aji_buddy, both AUTOPRUNE and AUTOREGISTER will never + * be called at the same time */ + if (ast_test_flag(&iterator->flags, AJI_AUTOPRUNE)) { + res = ast_aji_send(client, iks_make_s10n(IKS_TYPE_UNSUBSCRIBE, iterator->name, + "GoodBye your status is no longer needed by Asterisk the Open Source PBX" + " so I am no longer subscribing to your presence.\n")); + res = ast_aji_send(client, iks_make_s10n(IKS_TYPE_UNSUBSCRIBED, iterator->name, + "GoodBye you are no longer in the asterisk config file so I am removing" + " your access to my presence.\n")); + iks_insert_attrib(removeiq, "from", client->jid->full); + iks_insert_attrib(removeiq, "type", "set"); + iks_insert_attrib(removequery, "xmlns", "jabber:iq:roster"); + iks_insert_attrib(removeitem, "jid", iterator->name); + iks_insert_attrib(removeitem, "subscription", "remove"); + res = ast_aji_send(client, removeiq); + } else if (ast_test_flag(&iterator->flags, AJI_AUTOREGISTER)) { + res = ast_aji_send(client, iks_make_s10n(IKS_TYPE_SUBSCRIBE, iterator->name, + "Greetings I am the Asterisk Open Source PBX and I want to subscribe to your presence\n")); + ast_clear_flag(&iterator->flags, AJI_AUTOREGISTER); + } + ASTOBJ_UNLOCK(iterator); + }); + safeout: iks_delete(removeiq); iks_delete(removequery); iks_delete(removeitem); |