From 001c95b5955ff4253f1b9b5261b2d00cf4c06be5 Mon Sep 17 00:00:00 2001 From: Philippe Sultan Date: Mon, 2 Jun 2008 14:35:24 +0000 Subject: Do not link the guest account with any configured XMPP client (in jabber.conf). The actual connection is made when a call comes in Asterisk. Apply this fix to Jingle too. Fix the ast_aji_get_client function that was not able to retrieve an XMPP client from its JID. (closes issue #12085) Reported by: junky Tested by: phsultan git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@119741 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_jabber.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'res/res_jabber.c') diff --git a/res/res_jabber.c b/res/res_jabber.c index 653537df4..20189c78d 100644 --- a/res/res_jabber.c +++ b/res/res_jabber.c @@ -2884,17 +2884,30 @@ static int aji_load_config(int reload) } /*! - * \brief grab a aji_client structure by label name. - * \param name label name + * \brief grab a aji_client structure by label name or JID + * (without the resource string) + * \param name label or JID * \return aji_client. */ struct aji_client *ast_aji_get_client(const char *name) { struct aji_client *client = NULL; + char *aux = NULL; client = ASTOBJ_CONTAINER_FIND(&clients, name); - if (!client && !strchr(name, '@')) - client = ASTOBJ_CONTAINER_FIND_FULL(&clients, name, user,,, strcasecmp); + if (!client && strchr(name, '@')) { + ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, { + aux = ast_strdupa(iterator->user); + if (strchr(aux, '/')) { + /* strip resource for comparison */ + aux = strsep(&aux, "/"); + } + if (!strcasecmp(aux, name)) { + client = iterator; + } + }); + } + return client; } -- cgit v1.2.3