diff --git a/funcs/func_volume.c b/funcs/func_volume.c index 79fc13f307..aca13fd479 100644 --- a/funcs/func_volume.c +++ b/funcs/func_volume.c @@ -58,8 +58,8 @@ static void destroy_callback(void *data) /*! \brief Static structure for datastore information */ static const struct ast_datastore_info volume_datastore = { - .type = "volume", - .destroy = destroy_callback + .type = "volume", + .destroy = destroy_callback }; static int volume_callback(struct ast_audiohook *audiohook, struct ast_channel *chan, struct ast_frame *frame, enum ast_audiohook_direction direction) diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index b24b25c795..11fb1df38d 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -195,7 +195,7 @@ struct ast_datastore_info { /*! \brief Structure for a channel data store */ struct ast_datastore { - char *uid; /*!< Unique data store identifier */ + const char *uid; /*!< Unique data store identifier */ void *data; /*!< Contained data */ const struct ast_datastore_info *info; /*!< Data store type information */ unsigned int inheritance; /*!< Number of levels this item will continue to be inherited */ @@ -615,8 +615,14 @@ enum channelreloadreason { CHANNEL_MANAGER_RELOAD, }; -/*! \brief Create a channel datastore structure */ -struct ast_datastore *ast_channel_datastore_alloc(const struct ast_datastore_info *info, char *uid); +/*! + * \brief Create a channel datastore structure + * + * \note None of the datastore API calls lock the ast_channel they are using. + * So, the channel should be locked before calling the functions that + * take a channel argument. + */ +struct ast_datastore *ast_channel_datastore_alloc(const struct ast_datastore_info *info, const char *uid); /*! \brief Free a channel datastore structure */ int ast_channel_datastore_free(struct ast_datastore *datastore); @@ -631,7 +637,7 @@ int ast_channel_datastore_add(struct ast_channel *chan, struct ast_datastore *da int ast_channel_datastore_remove(struct ast_channel *chan, struct ast_datastore *datastore); /*! \brief Find a datastore on a channel */ -struct ast_datastore *ast_channel_datastore_find(struct ast_channel *chan, const struct ast_datastore_info *info, char *uid); +struct ast_datastore *ast_channel_datastore_find(struct ast_channel *chan, const struct ast_datastore_info *info, const char *uid); /*! \brief Change the state of a channel */ int ast_setstate(struct ast_channel *chan, enum ast_channel_state); diff --git a/main/channel.c b/main/channel.c index 9d24606338..1b4971eb15 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1167,7 +1167,7 @@ void ast_channel_free(struct ast_channel *chan) ast_device_state_changed_literal(name); } -struct ast_datastore *ast_channel_datastore_alloc(const struct ast_datastore_info *info, char *uid) +struct ast_datastore *ast_channel_datastore_alloc(const struct ast_datastore_info *info, const char *uid) { struct ast_datastore *datastore = NULL; @@ -1201,7 +1201,7 @@ int ast_channel_datastore_free(struct ast_datastore *datastore) /* Free allocated UID memory */ if (datastore->uid != NULL) { - ast_free(datastore->uid); + ast_free((void *) datastore->uid); datastore->uid = NULL; } @@ -1255,7 +1255,7 @@ int ast_channel_datastore_remove(struct ast_channel *chan, struct ast_datastore return res; } -struct ast_datastore *ast_channel_datastore_find(struct ast_channel *chan, const struct ast_datastore_info *info, char *uid) +struct ast_datastore *ast_channel_datastore_find(struct ast_channel *chan, const struct ast_datastore_info *info, const char *uid) { struct ast_datastore *datastore = NULL;