static struct stasis_topic *rtp_topic;
-/*! \internal \brief Destructor for \c ast_rtp_payload_type */
+/*!
+ * \internal
+ * \brief Destructor for \c ast_rtp_payload_type
+ */
static void rtp_payload_type_dtor(void *obj)
{
struct ast_rtp_payload_type *payload = obj;
{
struct ast_rtp_payload_type *payload;
- payload = ao2_alloc(sizeof(*payload), rtp_payload_type_dtor);
+ payload = ao2_alloc_options(sizeof(*payload), rtp_payload_type_dtor,
+ AO2_ALLOC_OPT_LOCK_NOLOCK);
return payload;
}
{
struct ast_rtp_payload_type *new_type;
- new_type = ast_rtp_engine_alloc_payload_type();
- if (!new_type) {
+ if (payload < 0 || payload >= AST_RTP_MAX_PT) {
return;
}
- ast_rwlock_rdlock(&static_RTP_PT_lock);
- if (payload < 0 || payload >= AST_RTP_MAX_PT) {
- ast_rwlock_unlock(&static_RTP_PT_lock);
+ new_type = ast_rtp_engine_alloc_payload_type();
+ if (!new_type) {
return;
}
+ ast_rwlock_rdlock(&static_RTP_PT_lock);
ast_rwlock_wrlock(&codecs->codecs_lock);
if (payload < AST_VECTOR_SIZE(&codecs->payloads)) {
ao2_t_cleanup(AST_VECTOR_GET(&codecs->payloads, payload), "cleaning up replaced payload type");
unsigned int i;
int found = 0;
- ast_rwlock_rdlock(&mime_types_lock);
if (pt < 0 || pt >= AST_RTP_MAX_PT) {
- ast_rwlock_unlock(&mime_types_lock);
return -1; /* bogus payload type */
}
+ ast_rwlock_rdlock(&mime_types_lock);
ast_rwlock_wrlock(&codecs->codecs_lock);
for (i = 0; i < mime_types_len; ++i) {
const struct ast_rtp_mime_type *t = &ast_rtp_mime_types[i];
ast_rwlock_unlock(&mime_types_lock);
}
-int ast_rtp_engine_init()
+int ast_rtp_engine_init(void)
{
ast_rwlock_init(&mime_types_lock);
ast_rwlock_init(&static_RTP_PT_lock);