summaryrefslogtreecommitdiff
path: root/res/parking/parking_controller.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/parking/parking_controller.c')
-rw-r--r--res/parking/parking_controller.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/res/parking/parking_controller.c b/res/parking/parking_controller.c
index aa2baf5cc..ec34cd483 100644
--- a/res/parking/parking_controller.c
+++ b/res/parking/parking_controller.c
@@ -54,17 +54,28 @@ struct ast_bridge *parking_lot_get_bridge(struct parking_lot *lot)
return lot_bridge;
}
-void parking_channel_set_roles(struct ast_channel *chan, struct parking_lot *lot, int force_ringing)
+int parking_channel_set_roles(struct ast_channel *chan, struct parking_lot *lot, int force_ringing)
{
- ast_channel_add_bridge_role(chan, "holding_participant");
+ if (ast_channel_add_bridge_role(chan, "holding_participant")) {
+ return -1;
+ }
+
if (force_ringing) {
- ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "ringing");
+ if (ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "ringing")) {
+ return -1;
+ }
} else {
- ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "musiconhold");
+ if (ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "musiconhold")) {
+ return -1;
+ }
if (!ast_strlen_zero(lot->cfg->mohclass)) {
- ast_channel_set_bridge_role_option(chan, "holding_participant", "moh_class", lot->cfg->mohclass);
+ if (ast_channel_set_bridge_role_option(chan, "holding_participant", "moh_class", lot->cfg->mohclass)) {
+ return -1;
+ }
}
}
+
+ return 0;
}
struct parking_limits_pvt {