[asterisk-commits] mmichelson: branch mmichelson/rls-config r416663 - /team/mmichelson/rls-confi...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Jun 19 09:46:38 CDT 2014
Author: mmichelson
Date: Thu Jun 19 09:46:26 2014
New Revision: 416663
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=416663
Log:
Fix some bugs and improve a couple of things:
* Add SORCERY_OBJECT() to resource_list struct
* Actually load the resource list objects instead of just declaring they exist
* Copy list_item values instead of pointing to garbage
* Actually print the allocated AMI string for resource list details
* Free that string instead of leaking it
* s/ResourceListList/ResourceListDetail/
Modified:
team/mmichelson/rls-config/res/res_pjsip_pubsub.c
Modified: team/mmichelson/rls-config/res/res_pjsip_pubsub.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/rls-config/res/res_pjsip_pubsub.c?view=diff&rev=416663&r1=416662&r2=416663
==============================================================================
--- team/mmichelson/rls-config/res/res_pjsip_pubsub.c (original)
+++ team/mmichelson/rls-config/res/res_pjsip_pubsub.c Thu Jun 19 09:46:26 2014
@@ -79,9 +79,9 @@
<syntax />
<description>
<para>
- Provides a listing of all resource lists. An event <literal>ResourceListList</literal>
+ Provides a listing of all resource lists. An event <literal>ResourceListDetail</literal>
is issued for each resource list object. Once all detail events are completed a
- <literal>ResourceListListComplete</literal> event is issued.
+ <literal>ResourceListDetailComplete</literal> event is issued.
</para>
</description>
</manager>
@@ -274,6 +274,7 @@
* \brief Resource list configuration item
*/
struct resource_list {
+ SORCERY_OBJECT(details);
/*! SIP event package the list uses. */
char event[32];
/*! Strings representing resources in the list. */
@@ -1901,7 +1902,7 @@
struct ast_sip_ami *ami = arg;
struct ast_str *buf;
- buf = ast_sip_create_ami_event("ResourceListList", ami);
+ buf = ast_sip_create_ami_event("ResourceListDetail", ami);
if (!buf) {
return CMP_STOP;
}
@@ -1909,7 +1910,9 @@
if (ast_sip_sorcery_object_to_ami(list, &buf)) {
return CMP_STOP;
}
-
+ astman_append(ami->s, "%s\r\n", ast_str_buffer(buf));
+
+ ast_free(buf);
return 0;
}
@@ -1928,12 +1931,12 @@
}
astman_send_listack(s, m, "A listing of resource lists follows, "
- "presented as ResourceListList events", "start");
+ "presented as ResourceListDetail events", "start");
ao2_callback(lists, OBJ_NODATA, format_ami_resource_lists, &ami);
astman_append(s,
- "Event: ResourceListListComplete\r\n"
+ "Event: ResourceListDetailComplete\r\n"
"EventList: Complete\r\n"
"ListItems: %d\r\n\r\n", num);
return 0;
@@ -1991,6 +1994,11 @@
static void resource_list_destructor(void *obj)
{
struct resource_list *list = obj;
+ int i;
+
+ for (i = 0; i < AST_VECTOR_SIZE(&list->items); ++i) {
+ ast_free((char *) AST_VECTOR_GET(&list->items, i));
+ }
AST_VECTOR_FREE(&list->items);
}
@@ -2020,7 +2028,7 @@
char *item;
while ((item = strsep(&items, ","))) {
- if (AST_VECTOR_APPEND(&list->items, item)) {
+ if (AST_VECTOR_APPEND(&list->items, ast_strdup(item))) {
return -1;
}
}
@@ -2058,11 +2066,13 @@
ast_sorcery_object_field_register(sorcery, "resource_list", "event", "",
OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct resource_list, event));
ast_sorcery_object_field_register(sorcery, "resource_list", "full_state", "0",
- OPT_UINT_T, 0, FLDSET(struct resource_list, full_state));
+ OPT_BOOL_T, 0, FLDSET(struct resource_list, full_state));
ast_sorcery_object_field_register(sorcery, "resource_list", "notification_batch_interval",
"0", OPT_UINT_T, 0, FLDSET(struct resource_list, notification_batch_interval));
ast_sorcery_object_field_register_custom(sorcery, "resource_list", "list_item",
"", list_item_handler, list_item_to_str, NULL, 0, 0);
+
+ ast_sorcery_reload_object(sorcery, "resource_list");
return 0;
}
More information about the asterisk-commits
mailing list