[asterisk-commits] mogorman: branch 1.4 r44312 - in /branches/1.4:
channels/ res/
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue Oct 3 15:35:44 MST 2006
Author: mogorman
Date: Tue Oct 3 17:35:43 2006
New Revision: 44312
URL: http://svn.digium.com/view/asterisk?rev=44312&view=rev
Log:
fix issue with dialing client without resource.
Modified:
branches/1.4/channels/chan_gtalk.c
branches/1.4/res/res_jabber.c
Modified: branches/1.4/channels/chan_gtalk.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_gtalk.c?rev=44312&r1=44311&r2=44312&view=diff
==============================================================================
--- branches/1.4/channels/chan_gtalk.c (original)
+++ branches/1.4/channels/chan_gtalk.c Tue Oct 3 17:35:43 2006
@@ -878,8 +878,9 @@
data = ast_strdupa((char *) tmp->us);
exten = strsep(&data, "/");
free(data);
- }
- ast_copy_string(tmp->exten, exten, sizeof(tmp->exten));
+ } else
+ exten = tmp->us;
+ ast_copy_string(tmp->exten, exten, sizeof(tmp->exten));
ast_mutex_init(&tmp->lock);
ast_mutex_lock(>alklock);
tmp->next = client->p;
@@ -1512,6 +1513,7 @@
ast_verbose("IT DOES WORK!\n");
return RESULT_SUCCESS;
}
+
static int gtalk_parser(void *data, ikspak *pak)
{
struct gtalk *client = ASTOBJ_REF((struct gtalk *) data);
@@ -1537,6 +1539,7 @@
ASTOBJ_UNREF(client, gtalk_member_destroy);
return IKS_FILTER_EAT;
}
+
/* Not using this anymore probably take out soon
static struct gtalk_candidate *gtalk_create_candidate(char *args)
{
@@ -1627,6 +1630,7 @@
IKS_PAK_IQ, IKS_RULE_FROM_PARTIAL, member->user,
IKS_RULE_NS, "http://www.google.com/session",
IKS_RULE_DONE);
+
} else {
ast_log(LOG_ERROR, "connection referenced not found!\n");
return 0;
Modified: branches/1.4/res/res_jabber.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/res/res_jabber.c?rev=44312&r1=44311&r2=44312&view=diff
==============================================================================
--- branches/1.4/res/res_jabber.c (original)
+++ branches/1.4/res/res_jabber.c Tue Oct 3 17:35:43 2006
@@ -871,7 +871,6 @@
struct aji_buddy *buddy = ASTOBJ_CONTAINER_FIND(&client->buddies, pak->from->partial);
resource = aji_find_resource(buddy, pak->from->resource);
-
if (pak->subtype == IKS_TYPE_RESULT) {
if (!resource) {
ast_log(LOG_NOTICE,"JABBER: Received client info from %s when not requested.\n", pak->from->full);
@@ -927,13 +926,26 @@
static int aji_dinfo_handler(void *data, ikspak *pak)
{
struct aji_client *client = ASTOBJ_REF((struct aji_client *) data);
- char *node = NULL, *type = NULL;
- type = iks_find_attrib(pak->x,"type");
- if (!strcasecmp(type,"error")) {
+ char *node = NULL;
+ struct aji_resource *resource = NULL;
+ struct aji_buddy *buddy = ASTOBJ_CONTAINER_FIND(&client->buddies, pak->from->partial);
+
+ resource = aji_find_resource(buddy, pak->from->resource);
+ if (pak->subtype == IKS_TYPE_ERROR) {
ast_log(LOG_WARNING, "Recieved error from a client, turn on jabber debug!\n");
return IKS_FILTER_EAT;
}
- if (!strcasecmp(type,"get") && !(node = iks_find_attrib(pak->query, "node"))) {
+ if (pak->subtype == IKS_TYPE_RESULT) {
+ if (!resource) {
+ ast_log(LOG_NOTICE,"JABBER: Received client info from %s when not requested.\n", pak->from->full);
+ ASTOBJ_UNREF(client, aji_client_destroy);
+ return IKS_FILTER_EAT;
+ }
+ if (iks_find_with_attrib(pak->query, "feature", "var", "http://www.google.com/xmpp/protocol/voice/v1")) {
+ resource->cap->jingle = 1;
+ } else
+ resource->cap->jingle = 0;
+ } else if (pak->subtype == IKS_TYPE_GET && !(node = iks_find_attrib(pak->query, "node"))) {
iks *iq, *query, *identity, *disco, *reg, *commands, *gateway, *version, *vcard, *search;
iq = iks_new("iq");
@@ -999,7 +1011,7 @@
if (search)
iks_delete(search);
- } else if (!strcasecmp(type,"get") && !strcasecmp(node, "http://jabber.org/protocol/commands")) {
+ } else if (pak->subtype == IKS_TYPE_GET && !strcasecmp(node, "http://jabber.org/protocol/commands")) {
iks *iq, *query, *confirm;
iq = iks_new("iq");
query = iks_new("query");
@@ -1028,7 +1040,7 @@
if (confirm)
iks_delete(confirm);
- } else if (!strcasecmp(type,"get") && !strcasecmp(node, "confirmaccount")) {
+ } else if (pak->subtype == IKS_TYPE_GET && !strcasecmp(node, "confirmaccount")) {
iks *iq, *query, *feature;
iq = iks_new("iq");
More information about the asterisk-commits
mailing list