fixes some issues with description loggin on presence
authorMatt O'Gorman <mogorman@digium.com>
Tue, 6 Jun 2006 19:51:26 +0000 (19:51 +0000)
committerMatt O'Gorman <mogorman@digium.com>
Tue, 6 Jun 2006 19:51:26 +0000 (19:51 +0000)
as well as some typos.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@32675 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/jabber.h
res/res_jabber.c

index ad76f54..8b05362 100644 (file)
@@ -23,7 +23,7 @@
 #include "asterisk/astobj.h"
 
 enum aji_state {
-       AJI_DISCONNECTED=0,
+       AJI_DISCONNECTED = 0,
        AJI_CONNECTING,
        AJI_CONNECTED
 };
@@ -60,7 +60,7 @@ struct aji_capabilities {
 struct aji_resource {
        int status;
        char resource[80];
-       char description[1000];
+       char *description;
        struct aji_version *cap;
        int priority;
        struct aji_resource *next;
index 8a16ade..a7f3fd8 100644 (file)
@@ -104,7 +104,7 @@ static char reload_usage[] =
 
 static char test_usage[] = 
 "Usage: JABBER test [client]\n" 
-"       Sends test massage for debugging purposes.  A specific client\n"
+"       Sends test message for debugging purposes.  A specific client\n"
 "       as configured in jabber.conf can be optionally specified.\n";
 
 static struct ast_cli_entry aji_cli[] = {
@@ -169,6 +169,7 @@ static void aji_buddy_destroy(struct aji_buddy *obj)
 
        while ((tmp = obj->resources)) {
                obj->resources = obj->resources->next;
+               free(tmp->description);
                free(tmp);
        }
 
@@ -1015,7 +1016,7 @@ static void aji_handle_presence(struct aji_client *client, ikspak *pak)
        int status, priority;
        struct aji_buddy *buddy = NULL;
        struct aji_resource *tmp = NULL, *last = NULL, *found = NULL;
-       char *ver, *node;
+       char *ver, *node, *descrip;
        
        if(client->state != AJI_CONNECTED) {
                buddy = (struct aji_buddy *) malloc(sizeof(struct aji_buddy));
@@ -1048,10 +1049,13 @@ static void aji_handle_presence(struct aji_client *client, ikspak *pak)
        status = (pak->show) ? pak->show : 6;
        priority = atoi((iks_find_cdata(pak->x, "priority")) ? iks_find_cdata(pak->x, "priority") : "0");
        tmp = buddy->resources;
+       descrip = ast_strdup(iks_find_cdata(pak->x,"status"));
 
        while (tmp) {
                if (!strcasecmp(tmp->resource, pak->from->resource)) {
                        tmp->status = status;
+                       if (tmp->description) free(tmp->description);
+                       tmp->description = descrip;
                        found = tmp;
                        if (status == 6) {      /* Sign off Destroy resource */
                                if (last && found->next) {
@@ -1114,6 +1118,7 @@ static void aji_handle_presence(struct aji_client *client, ikspak *pak)
                }
                ast_copy_string(found->resource, pak->from->resource, sizeof(found->resource));
                found->status = status;
+               found->description = descrip;
                found->priority = priority;
                found->next = NULL;
                last = NULL;