summaryrefslogtreecommitdiff
path: root/main/parking.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/parking.c')
-rw-r--r--main/parking.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/main/parking.c b/main/parking.c
index a7cd0ba54..fa1c4d88a 100644
--- a/main/parking.c
+++ b/main/parking.c
@@ -33,6 +33,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/bridging.h"
#include "asterisk/parking.h"
#include "asterisk/channel.h"
+#include "asterisk/_private.h"
/*! \brief Message type for parked calls */
STASIS_MESSAGE_TYPE_DEFN(ast_parked_call_type);
@@ -46,19 +47,27 @@ static ast_park_blind_xfer_fn ast_park_blind_xfer_func = NULL;
/*! \brief Function Callback for handling a bridge channel trying to park itself */
static ast_bridge_channel_park_fn ast_bridge_channel_park_func = NULL;
-void ast_parking_stasis_init(void)
-{
- STASIS_MESSAGE_TYPE_INIT(ast_parked_call_type);
- parking_topic = stasis_topic_create("ast_parking");
-}
-
-void ast_parking_stasis_disable(void)
+static void parking_stasis_cleanup(void)
{
STASIS_MESSAGE_TYPE_CLEANUP(ast_parked_call_type);
ao2_cleanup(parking_topic);
parking_topic = NULL;
}
+int ast_parking_stasis_init(void)
+{
+ if (STASIS_MESSAGE_TYPE_INIT(ast_parked_call_type)) {
+ return -1;
+ }
+
+ parking_topic = stasis_topic_create("ast_parking");
+ if (!parking_topic) {
+ return -1;
+ }
+ ast_register_cleanup(parking_stasis_cleanup);
+ return 0;
+}
+
struct stasis_topic *ast_parking_topic(void)
{
return parking_topic;