[svn-commits] dlee: branch dlee/allow-multiple r395412 - /team/dlee/allow-multiple/res/stas...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Jul 25 11:01:10 CDT 2013


Author: dlee
Date: Thu Jul 25 11:01:08 2013
New Revision: 395412

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=395412
Log:
Bridging fixes

Modified:
    team/dlee/allow-multiple/res/stasis_http/resource_bridges.c

Modified: team/dlee/allow-multiple/res/stasis_http/resource_bridges.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/allow-multiple/res/stasis_http/resource_bridges.c?view=diff&rev=395412&r1=395411&r2=395412
==============================================================================
--- team/dlee/allow-multiple/res/stasis_http/resource_bridges.c (original)
+++ team/dlee/allow-multiple/res/stasis_http/resource_bridges.c Thu Jul 25 11:01:08 2013
@@ -109,7 +109,7 @@
 
 struct control_list {
 	size_t count;
-	struct stasis_app_control **controls;
+	struct stasis_app_control *controls[];
 };
 
 static void control_list_dtor(void *obj) {
@@ -126,22 +126,32 @@
 	RAII_VAR(struct control_list *, list, NULL, ao2_cleanup);
 	size_t i;
 
-	if (count <= 0 || !channels) {
+	if (count == 0 || !channels) {
 		stasis_http_response_error(response, 400, "Bad Request", "Missing parameter channel");
 		return NULL;
 	}
 
-	list = ao2_alloc(sizeof(*list), control_list_dtor);
+	list = ao2_alloc(sizeof(*list) + count * sizeof(list->controls[0]), control_list_dtor);
 	if (!list) {
 		stasis_http_response_alloc_failed(response);
 		return NULL;
 	}
 
 	for (i = 0; i < count; ++i) {
-		list->controls[i] = find_channel_control(response, channels[i]);
-		if (!list->controls[i]) {
+		if (ast_strlen_zero(channels[i])) {
+			continue;
+		}
+		list->controls[list->count] =
+			find_channel_control(response, channels[i]);
+		if (!list->controls[list->count]) {
 			return NULL;
 		}
+		++list->count;
+	}
+
+	if (list->count == 0) {
+		stasis_http_response_error(response, 400, "Bad Request", "Missing parameter channel");
+		return NULL;
 	}
 
 	ao2_ref(list, +1);




More information about the svn-commits mailing list