diff --git a/addons/chan_mobile.c b/addons/chan_mobile.c index f5d5b4e1a96422db8549b0cfe7b1dd4775ad1bcc..2cf7c7dbdd49906c7bc4d0cae846cc77f7a705d1 100644 --- a/addons/chan_mobile.c +++ b/addons/chan_mobile.c @@ -4705,7 +4705,7 @@ static int load_module(void) int dev_id, s; - if (!(mbl_tech.capabilities = ast_format_cap_alloc())) { + if (!(mbl_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_set(&prefformat, DEVICE_FRAME_FORMAT, 0); diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index 303b06857a4cfb4dce5bab22e8f1843c08e0f9e7..f374a216bce16673d0bbe0a476592bdb162376d3 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -521,7 +521,7 @@ static struct ooh323_pvt *ooh323_alloc(int callref, char *callToken) ast_log(LOG_ERROR, "Couldn't allocate private ooh323 structure\n"); return NULL; } - if (!(pvt->cap = ast_format_cap_alloc_nolock())) { + if (!(pvt->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ast_free(pvt); ast_log(LOG_ERROR, "Couldn't allocate private ooh323 structure\n"); return NULL; @@ -2304,7 +2304,7 @@ static struct ooh323_user *build_user(const char *name, struct ast_variable *v) user = ast_calloc(1,sizeof(struct ooh323_user)); if (user) { memset(user, 0, sizeof(struct ooh323_user)); - if (!(user->cap = ast_format_cap_alloc())) { + if (!(user->cap = ast_format_cap_alloc(0))) { ast_free(user); return NULL; } @@ -2452,7 +2452,7 @@ static struct ooh323_peer *build_peer(const char *name, struct ast_variable *v, peer = ast_calloc(1, sizeof(*peer)); if (peer) { memset(peer, 0, sizeof(struct ooh323_peer)); - if (!(peer->cap = ast_format_cap_alloc())) { + if (!(peer->cap = ast_format_cap_alloc(0))) { ast_free(peer); return NULL; } @@ -3677,10 +3677,10 @@ static int load_module(void) .onModeChanged = onModeChanged, .onMediaChanged = (cb_OnMediaChanged) setup_rtp_remote, }; - if (!(gCap = ast_format_cap_alloc())) { + if (!(gCap = ast_format_cap_alloc(0))) { return 1; } - if (!(ooh323_tech.capabilities = ast_format_cap_alloc())) { + if (!(ooh323_tech.capabilities = ast_format_cap_alloc(0))) { return 1; } ast_format_cap_add(gCap, ast_format_set(&tmpfmt, AST_FORMAT_ULAW, 0)); diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index d9db7ab5b6c9066fbd49e3be4db7b9579fcc8cbd..47cfa0b8bab0a35510bf4fae8ed42ee5caf2e0bb 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -662,7 +662,7 @@ static int conf_start_record(struct confbridge_conference *conference) return -1; } - cap = ast_format_cap_alloc_nolock(); + cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return -1; } @@ -1327,7 +1327,7 @@ static int alloc_playback_chan(struct confbridge_conference *conference) struct ast_format_cap *cap; struct ast_format format; - cap = ast_format_cap_alloc_nolock(); + cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return -1; } @@ -3094,7 +3094,7 @@ static void unregister_channel_tech(struct ast_channel_tech *tech) */ static int register_channel_tech(struct ast_channel_tech *tech) { - tech->capabilities = ast_format_cap_alloc(); + tech->capabilities = ast_format_cap_alloc(0); if (!tech->capabilities) { return -1; } diff --git a/apps/app_meetme.c b/apps/app_meetme.c index cd6a4f72c66aea44bf59804b48a0004e18d0ace0..ffd55e70dffdb8b9cd94417f9d80923ed56f33ad 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -1611,7 +1611,7 @@ static struct ast_conference *build_conf(const char *confno, const char *pin, struct ast_conference *cnf; struct dahdi_confinfo dahdic = { 0, }; int confno_int = 0; - struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap_slin = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format tmp_fmt; AST_LIST_LOCK(&confs); @@ -3216,7 +3216,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc int setusercount = 0; int confsilence = 0, totalsilence = 0; char *mailbox, *context; - struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap_slin = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format tmpfmt; if (!cap_slin) { diff --git a/apps/app_originate.c b/apps/app_originate.c index 8eb8ba329c73856f51705a83ecf57ff459e8d0fb..f924921d438dcc0f29e2dfd3889c119cf368c570 100644 --- a/apps/app_originate.c +++ b/apps/app_originate.c @@ -113,7 +113,7 @@ static int originate_exec(struct ast_channel *chan, const char *data) unsigned int timeout = 30; static const char default_exten[] = "s"; struct ast_format tmpfmt; - struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap_slin = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); ast_autoservice_start(chan); if (!cap_slin) { diff --git a/bridges/bridge_holding.c b/bridges/bridge_holding.c index 9d0ba721a1a832212faa34bc4ab6fda505c12954..5eeb4708da3322e86ff02e9ef68c0f6f73b48908 100644 --- a/bridges/bridge_holding.c +++ b/bridges/bridge_holding.c @@ -433,7 +433,7 @@ static int unload_module(void) static int load_module(void) { - if (!(holding_bridge.format_capabilities = ast_format_cap_alloc())) { + if (!(holding_bridge.format_capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add_all_by_type(holding_bridge.format_capabilities, AST_FORMAT_TYPE_AUDIO); diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c index c8bf880b6f29ea2727d4be1a57d16b77db70cf66..7775d41ec18316fa32146187ec8b3615b060e375 100644 --- a/bridges/bridge_native_rtp.c +++ b/bridges/bridge_native_rtp.c @@ -124,8 +124,8 @@ static int native_rtp_bridge_start(struct ast_bridge *bridge, struct ast_channel RAII_VAR(struct ast_rtp_instance *, vinstance1, NULL, ao2_cleanup); RAII_VAR(struct ast_rtp_instance *, tinstance0, NULL, ao2_cleanup); RAII_VAR(struct ast_rtp_instance *, tinstance1, NULL, ao2_cleanup); - RAII_VAR(struct ast_format_cap *, cap0, ast_format_cap_alloc_nolock(), ast_format_cap_destroy); - RAII_VAR(struct ast_format_cap *, cap1, ast_format_cap_alloc_nolock(), ast_format_cap_destroy); + RAII_VAR(struct ast_format_cap *, cap0, ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK), ast_format_cap_destroy); + RAII_VAR(struct ast_format_cap *, cap1, ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK), ast_format_cap_destroy); if (c0 == c1) { return 0; @@ -279,8 +279,8 @@ static int native_rtp_bridge_compatible(struct ast_bridge *bridge) RAII_VAR(struct ast_rtp_instance *, instance1, NULL, ao2_cleanup); RAII_VAR(struct ast_rtp_instance *, vinstance0, NULL, ao2_cleanup); RAII_VAR(struct ast_rtp_instance *, vinstance1, NULL, ao2_cleanup); - RAII_VAR(struct ast_format_cap *, cap0, ast_format_cap_alloc_nolock(), ast_format_cap_destroy); - RAII_VAR(struct ast_format_cap *, cap1, ast_format_cap_alloc_nolock(), ast_format_cap_destroy); + RAII_VAR(struct ast_format_cap *, cap0, ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK), ast_format_cap_destroy); + RAII_VAR(struct ast_format_cap *, cap1, ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK), ast_format_cap_destroy); int read_ptime0, read_ptime1, write_ptime0, write_ptime1; /* We require two channels before even considering native bridging */ @@ -448,7 +448,7 @@ static int unload_module(void) static int load_module(void) { - if (!(native_rtp_bridge.format_capabilities = ast_format_cap_alloc())) { + if (!(native_rtp_bridge.format_capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add_all_by_type(native_rtp_bridge.format_capabilities, AST_FORMAT_TYPE_AUDIO); diff --git a/bridges/bridge_simple.c b/bridges/bridge_simple.c index 78ac7a4ae2c5f97a0ccb57254ce34d1fdd9426a6..4a03dbe10a8d798a562d6c9ed8fc4704d7152654 100644 --- a/bridges/bridge_simple.c +++ b/bridges/bridge_simple.c @@ -82,7 +82,7 @@ static int unload_module(void) static int load_module(void) { - if (!(simple_bridge.format_capabilities = ast_format_cap_alloc())) { + if (!(simple_bridge.format_capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add_all_by_type(simple_bridge.format_capabilities, AST_FORMAT_TYPE_AUDIO); diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c index c6cde396d659b216b1a8433759a1d0123c9359b3..b7cce866ceed1ae0aea7e334abef26b2d60ca19a 100644 --- a/bridges/bridge_softmix.c +++ b/bridges/bridge_softmix.c @@ -1137,7 +1137,7 @@ static int unload_module(void) static int load_module(void) { struct ast_format tmp; - if (!(softmix_bridge.format_capabilities = ast_format_cap_alloc())) { + if (!(softmix_bridge.format_capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add(softmix_bridge.format_capabilities, ast_format_set(&tmp, AST_FORMAT_SLINEAR, 0)); diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index f1720ba8cea2563b0af69aa4f10a5d58ce29b450..60bbacbb86e06ad0c01de250a5397fd9e4b65930 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -960,7 +960,7 @@ static int load_module(void) struct ast_flags config_flags = { 0 }; struct ast_format tmpfmt; - if (!(alsa_tech.capabilities = ast_format_cap_alloc())) { + if (!(alsa_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add(alsa_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); diff --git a/channels/chan_bridge_media.c b/channels/chan_bridge_media.c index 663578033eb6cacb5087dd745a78a837e892c2ca..7aaca6671552cecc01e0b92cb60e5f6b918dcb3e 100644 --- a/channels/chan_bridge_media.c +++ b/channels/chan_bridge_media.c @@ -182,12 +182,12 @@ static int unload_module(void) static int load_module(void) { - announce_tech.capabilities = ast_format_cap_alloc(); + announce_tech.capabilities = ast_format_cap_alloc(0); if (!announce_tech.capabilities) { return AST_MODULE_LOAD_DECLINE; } - record_tech.capabilities = ast_format_cap_alloc(); + record_tech.capabilities = ast_format_cap_alloc(0); if (!record_tech.capabilities) { return AST_MODULE_LOAD_DECLINE; } diff --git a/channels/chan_console.c b/channels/chan_console.c index 76571d20989cbafad259f56010f89669e2a0d119..922c53b426125aa1b9355ad60cf2283e928e6508 100644 --- a/channels/chan_console.c +++ b/channels/chan_console.c @@ -1497,7 +1497,7 @@ static int load_module(void) struct ast_format tmpfmt; PaError res; - if (!(console_tech.capabilities = ast_format_cap_alloc())) { + if (!(console_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add(console_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR16, 0)); diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 65a9758f2632e568d8ef5118b2c3d308c0ccf1a1..e52969b5dbb0bcaeee859a4cec687bc5baf657b0 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -18550,7 +18550,7 @@ static int load_module(void) return AST_MODULE_LOAD_FAILURE; } - if (!(dahdi_tech.capabilities = ast_format_cap_alloc())) { + if (!(dahdi_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } ast_format_cap_add(dahdi_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); diff --git a/channels/chan_gtalk.c b/channels/chan_gtalk.c index a44ca57f46f78a313048732f88812278b5f68686..d6a09494197c08036ba4115d71369b7635849296 100644 --- a/channels/chan_gtalk.c +++ b/channels/chan_gtalk.c @@ -436,7 +436,7 @@ static int gtalk_invite(struct gtalk_pvt *p, char *to, char *from, char *sid, in iks_insert_attrib(dcodecs, "xmlns", GOOGLE_AUDIO_NS); iks_insert_attrib(dcodecs, "xml:lang", "en"); - if (!(alreadysent = ast_format_cap_alloc_nolock())) { + if (!(alreadysent = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { return 0; } for (x = 0; x < AST_CODEC_PREF_SIZE; x++) { @@ -1063,9 +1063,9 @@ static struct gtalk_pvt *gtalk_alloc(struct gtalk *client, const char *us, const if (!(tmp = ast_calloc(1, sizeof(*tmp)))) { return NULL; } - tmp->cap = ast_format_cap_alloc_nolock(); - tmp->jointcap = ast_format_cap_alloc_nolock(); - tmp->peercap = ast_format_cap_alloc_nolock(); + tmp->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + tmp->jointcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + tmp->peercap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!tmp->jointcap || !tmp->peercap || !tmp->cap) { tmp->cap = ast_format_cap_destroy(tmp->cap); tmp->jointcap = ast_format_cap_destroy(tmp->jointcap); @@ -2256,7 +2256,7 @@ static int gtalk_load_config(void) member = ast_calloc(1, sizeof(*member)); ASTOBJ_INIT(member); ASTOBJ_WRLOCK(member); - member->cap = ast_format_cap_alloc_nolock(); + member->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!strcasecmp(cat, "guest")) { ast_copy_string(member->name, "guest", sizeof(member->name)); ast_copy_string(member->user, "guest", sizeof(member->user)); @@ -2336,10 +2336,10 @@ static int load_module(void) char *jabber_loaded = ast_module_helper("", "res_jabber.so", 0, 0, 0, 0); struct ast_format tmpfmt; - if (!(gtalk_tech.capabilities = ast_format_cap_alloc())) { + if (!(gtalk_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } - if (!(global_capability = ast_format_cap_alloc())) { + if (!(global_capability = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } diff --git a/channels/chan_h323.c b/channels/chan_h323.c index dd23b7f597150243f7f493613c4ece70ef1de7dc..22dba3c18307b65a5ed78f282271cfc570ab647a 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -1313,7 +1313,7 @@ static struct oh323_alias *realtime_alias(const char *alias) static int h323_parse_allow_disallow(struct ast_codec_pref *pref, h323_format *formats, const char *list, int allowing) { int res; - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return 1; } @@ -2093,7 +2093,7 @@ static void setup_rtp_connection(unsigned call_reference, const char *remoteIp, /* Don't try to lock the channel if nothing changed */ if (nativeformats_changed || pvt->options.progress_audio || (rtp_change != NEED_NONE)) { if (pvt->owner && !ast_channel_trylock(pvt->owner)) { - struct ast_format_cap *pvt_native = ast_format_cap_alloc_nolock(); + struct ast_format_cap *pvt_native = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); ast_format_cap_from_old_bitfield(pvt_native, pvt->nativeformats); /* Re-build translation path only if native format(s) has been changed */ @@ -3336,7 +3336,7 @@ static enum ast_module_load_result load_module(void) { int res; - if (!(oh323_tech.capabilities = ast_format_cap_alloc())) { + if (!(oh323_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } ast_format_cap_add_all_by_type(oh323_tech.capabilities, AST_FORMAT_TYPE_AUDIO); diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 551c2046dc9f7cb5a0e513cd7713e990602debc0..77fd442773092d1389ee631573b9e72f94533b72 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -1717,7 +1717,7 @@ static iax2_format iax2_codec_choose(struct ast_codec_pref *pref, iax2_format fo struct ast_format_cap *cap; struct ast_format tmpfmt; iax2_format format = 0; - if ((cap = ast_format_cap_alloc_nolock())) { + if ((cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ast_format_clear(&tmpfmt); ast_format_cap_from_old_bitfield(cap, formats); ast_codec_choose(pref, cap, find_best, &tmpfmt); @@ -1730,7 +1730,7 @@ static iax2_format iax2_codec_choose(struct ast_codec_pref *pref, iax2_format fo static iax2_format iax2_best_codec(iax2_format formats) { - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format tmpfmt; if (!cap) { return 0; @@ -1755,7 +1755,7 @@ const char *iax2_getformatname(iax2_format format) static char *iax2_getformatname_multiple(char *codec_buf, size_t len, iax2_format format) { - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return "(Nothing)"; @@ -1770,7 +1770,7 @@ static char *iax2_getformatname_multiple(char *codec_buf, size_t len, iax2_forma static int iax2_parse_allow_disallow(struct ast_codec_pref *pref, iax2_format *formats, const char *list, int allowing) { int res; - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return 1; } @@ -1786,7 +1786,7 @@ static int iax2_parse_allow_disallow(struct ast_codec_pref *pref, iax2_format *f static int iax2_data_add_codecs(struct ast_data *root, const char *node_name, iax2_format formats) { int res; - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return -1; } @@ -14624,7 +14624,7 @@ static int load_module(void) int x = 0; struct iax2_registry *reg = NULL; - if (!(iax2_tech.capabilities = ast_format_cap_alloc())) { + if (!(iax2_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } ast_format_cap_add_all(iax2_tech.capabilities); diff --git a/channels/chan_jingle.c b/channels/chan_jingle.c index a8cab623830d9787ec98aad3ee2c32ec14d67a65..56c15b193f6f14cf4d359f4fa9163f6786933098 100644 --- a/channels/chan_jingle.c +++ b/channels/chan_jingle.c @@ -322,7 +322,7 @@ static int jingle_accept_call(struct jingle *client, struct jingle_pvt *p) iks *iq, *jingle, *dcodecs, *payload_red, *payload_audio, *payload_cn; int x; struct ast_format pref_codec; - struct ast_format_cap *alreadysent = ast_format_cap_alloc_nolock(); + struct ast_format_cap *alreadysent = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (p->initiator || !alreadysent) return 1; @@ -798,9 +798,9 @@ static struct jingle_pvt *jingle_alloc(struct jingle *client, const char *from, return NULL; } - tmp->cap = ast_format_cap_alloc_nolock(); - tmp->jointcap = ast_format_cap_alloc_nolock(); - tmp->peercap = ast_format_cap_alloc_nolock(); + tmp->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + tmp->jointcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + tmp->peercap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!tmp->cap || !tmp->jointcap || !tmp->peercap) { tmp->cap = ast_format_cap_destroy(tmp->cap); tmp->jointcap = ast_format_cap_destroy(tmp->jointcap); @@ -1897,7 +1897,7 @@ static int jingle_load_config(void) member = ast_calloc(1, sizeof(*member)); ASTOBJ_INIT(member); ASTOBJ_WRLOCK(member); - member->cap = ast_format_cap_alloc_nolock(); + member->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!strcasecmp(cat, "guest")) { ast_copy_string(member->name, "guest", sizeof(member->name)); ast_copy_string(member->user, "guest", sizeof(member->user)); @@ -1981,12 +1981,12 @@ static int load_module(void) char *jabber_loaded = ast_module_helper("", "res_jabber.so", 0, 0, 0, 0); - if (!(jingle_tech.capabilities = ast_format_cap_alloc())) { + if (!(jingle_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add_all_by_type(jingle_tech.capabilities, AST_FORMAT_TYPE_AUDIO); - if (!(global_capability = ast_format_cap_alloc())) { + if (!(global_capability = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add(global_capability, ast_format_set(&tmpfmt, AST_FORMAT_ULAW, 0)); diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 7c91200882cace4b10f17d1a98b2dcecf20c2d86..a659a2aab445eb4cd9ab6778d615e20bc86cdabc 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -2039,7 +2039,7 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req) } /* Now gather all of the codecs that were asked for: */ - if (!(peercap = ast_format_cap_alloc_nolock())) { + if (!(peercap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { return -1; } ast_rtp_codecs_payload_formats(ast_rtp_instance_get_codecs(sub->rtp), peercap, &peerNonCodecCapability); @@ -4172,7 +4172,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) ast_mutex_init(&e->lock); ast_mutex_init(&e->rqnt_queue_lock); ast_mutex_init(&e->cmd_queue_lock); - e->cap = ast_format_cap_alloc_nolock(); + e->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); ast_copy_string(e->name, v->value, sizeof(e->name)); e->needaudit = 1; } @@ -4288,7 +4288,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) ast_mutex_init(&e->lock); ast_mutex_init(&e->rqnt_queue_lock); ast_mutex_init(&e->cmd_queue_lock); - e->cap = ast_format_cap_alloc_nolock(); + e->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); ast_copy_string(e->name, v->value, sizeof(e->name)); e->needaudit = 1; } @@ -4829,10 +4829,10 @@ static int load_module(void) { struct ast_format tmpfmt; - if (!(global_capability = ast_format_cap_alloc())) { + if (!(global_capability = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } - if (!(mgcp_tech.capabilities = ast_format_cap_alloc())) { + if (!(mgcp_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } ast_format_cap_add(global_capability, ast_format_set(&tmpfmt, AST_FORMAT_ULAW, 0)); diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 29274e743a4daf3ca94643519a358d3ca63e59cc..38197c6381e63f4c7464dd9453aed02f23f15c94 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -10193,7 +10193,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) ch->addr = bc->addr; { - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format tmpfmt; if (!(cap)) { return RESPONSE_ERR; @@ -11298,7 +11298,7 @@ static int load_module(void) }; - if (!(misdn_tech.capabilities = ast_format_cap_alloc())) { + if (!(misdn_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_set(&prefformat, AST_FORMAT_ALAW, 0); diff --git a/channels/chan_motif.c b/channels/chan_motif.c index e13c66c6feaf15e5c7f95105f29696662c7502a6..1e7ee3cce67c58a37e53dcebcb606be04698ffaa 100644 --- a/channels/chan_motif.c +++ b/channels/chan_motif.c @@ -519,7 +519,7 @@ static void *jingle_endpoint_alloc(const char *cat) ast_string_field_set(endpoint, name, cat); - endpoint->cap = ast_format_cap_alloc_nolock(); + endpoint->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); endpoint->transport = JINGLE_TRANSPORT_ICE_UDP; return endpoint; @@ -741,9 +741,9 @@ static struct jingle_session *jingle_alloc(struct jingle_endpoint *endpoint, con session->connection = endpoint->connection; session->transport = endpoint->transport; - if (!(session->cap = ast_format_cap_alloc_nolock()) || - !(session->jointcap = ast_format_cap_alloc_nolock()) || - !(session->peercap = ast_format_cap_alloc_nolock()) || + if (!(session->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK)) || + !(session->jointcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK)) || + !(session->peercap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK)) || !session->callid) { ao2_ref(session, -1); return NULL; @@ -2707,7 +2707,7 @@ static int custom_transport_handler(const struct aco_option *opt, struct ast_var */ static int load_module(void) { - if (!(jingle_tech.capabilities = ast_format_cap_alloc())) { + if (!(jingle_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } diff --git a/channels/chan_multicast_rtp.c b/channels/chan_multicast_rtp.c index 4629829698ee3f754782513dfa24229767da9696..1b9e4d31f26a88e6300df9da4216dffaf603f7fc 100644 --- a/channels/chan_multicast_rtp.c +++ b/channels/chan_multicast_rtp.c @@ -176,7 +176,7 @@ failure: /*! \brief Function called when our module is loaded */ static int load_module(void) { - if (!(multicast_rtp_tech.capabilities = ast_format_cap_alloc())) { + if (!(multicast_rtp_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add_all(multicast_rtp_tech.capabilities); diff --git a/channels/chan_nbs.c b/channels/chan_nbs.c index e6384872ee1e48440d8f164a79572355ab117941..1d8c59d4e1d819c0c9e95030b4355aa84023cb38 100644 --- a/channels/chan_nbs.c +++ b/channels/chan_nbs.c @@ -281,7 +281,7 @@ static int unload_module(void) static int load_module(void) { ast_format_set(&prefformat, AST_FORMAT_SLINEAR, 0); - if (!(nbs_tech.capabilities = ast_format_cap_alloc())) { + if (!(nbs_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } ast_format_cap_add(nbs_tech.capabilities, &prefformat); diff --git a/channels/chan_oss.c b/channels/chan_oss.c index f8e67e59e800a1180842a899596882781936b40d..5ae18f362e8ae9b8c67fe84a44a782a7e70d321b 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -1479,7 +1479,7 @@ static int load_module(void) return AST_MODULE_LOAD_FAILURE; } - if (!(oss_tech.capabilities = ast_format_cap_alloc())) { + if (!(oss_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } ast_format_cap_add(oss_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); diff --git a/channels/chan_phone.c b/channels/chan_phone.c index 71a498a8585bb931ccc4b9ec1557a02129db9ff3..c1a24b8b1b95dffcc01eab349eabc4ed8403bb4d 100644 --- a/channels/chan_phone.c +++ b/channels/chan_phone.c @@ -1376,7 +1376,7 @@ static int load_module(void) struct ast_flags config_flags = { 0 }; struct ast_format tmpfmt; - if (!(phone_tech.capabilities = ast_format_cap_alloc())) { + if (!(phone_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_add(phone_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_G723_1, 0)); @@ -1384,11 +1384,11 @@ static int load_module(void) ast_format_cap_add(phone_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_ULAW, 0)); ast_format_cap_add(phone_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_G729A, 0)); - if (!(prefcap = ast_format_cap_alloc())) { + if (!(prefcap = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_copy(prefcap, phone_tech.capabilities); - if (!(phone_tech_fxs.capabilities = ast_format_cap_alloc())) { + if (!(phone_tech_fxs.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index e505751c3a1cd557ab6331b42f376950150191a8..6ceece4fcc889c2c11899e14952178fc8d95d013 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -2065,7 +2065,7 @@ static int chan_pjsip_incoming_ack(struct ast_sip_session *session, struct pjsip */ static int load_module(void) { - if (!(chan_pjsip_tech.capabilities = ast_format_cap_alloc())) { + if (!(chan_pjsip_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 497fb6e616350f64756c7e8b821239d9b29911ad..00a2a16cbb18859d2da7ffed3d03b81d3f278b64 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -8814,11 +8814,11 @@ struct sip_pvt *sip_alloc(ast_string_field callid, struct ast_sockaddr *addr, sip_pvt_callid_set(p, logger_callid); } - p->caps = ast_format_cap_alloc_nolock(); - p->jointcaps = ast_format_cap_alloc_nolock(); - p->peercaps = ast_format_cap_alloc_nolock(); - p->redircaps = ast_format_cap_alloc_nolock(); - p->prefcaps = ast_format_cap_alloc_nolock(); + p->caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + p->jointcaps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + p->peercaps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + p->redircaps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + p->prefcaps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!p->caps|| !p->jointcaps || !p->peercaps || !p->redircaps) { p->caps = ast_format_cap_destroy(p->caps); @@ -10052,15 +10052,15 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action int udptlportno = -1; /*!< UDPTL image destination port number */ /* Peer capability is the capability in the SDP, non codec is RFC2833 DTMF (101) */ - struct ast_format_cap *peercapability = ast_format_cap_alloc_nolock(); - struct ast_format_cap *vpeercapability = ast_format_cap_alloc_nolock(); - struct ast_format_cap *tpeercapability = ast_format_cap_alloc_nolock(); + struct ast_format_cap *peercapability = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + struct ast_format_cap *vpeercapability = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + struct ast_format_cap *tpeercapability = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); int peernoncodeccapability = 0, vpeernoncodeccapability = 0, tpeernoncodeccapability = 0; struct ast_rtp_codecs newaudiortp = { 0, }, newvideortp = { 0, }, newtextrtp = { 0, }; - struct ast_format_cap *newjointcapability = ast_format_cap_alloc_nolock(); /* Negotiated capability */ - struct ast_format_cap *newpeercapability = ast_format_cap_alloc_nolock(); + struct ast_format_cap *newjointcapability = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); /* Negotiated capability */ + struct ast_format_cap *newpeercapability = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); int newnoncodeccapability; const char *codecs; @@ -13136,8 +13136,8 @@ static char *crypto_get_attrib(struct ast_sdp_srtp *srtp, int dtls_enabled, int */ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int oldsdp, int add_audio, int add_t38) { - struct ast_format_cap *alreadysent = ast_format_cap_alloc_nolock(); - struct ast_format_cap *tmpcap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *alreadysent = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + struct ast_format_cap *tmpcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); int res = AST_SUCCESS; int doing_directmedia = FALSE; struct ast_sockaddr addr = { {0,} }; @@ -30358,7 +30358,7 @@ static struct sip_peer *temp_peer(const char *name) return NULL; } - if (!(peer->caps = ast_format_cap_alloc_nolock())) { + if (!(peer->caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ao2_t_ref(peer, -1, "failed to allocate format capabilities, drop peer"); return NULL; } @@ -30467,7 +30467,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str if (!(peer->endpoint = ast_endpoint_create("SIP", name))) { return NULL; } - if (!(peer->caps = ast_format_cap_alloc_nolock())) { + if (!(peer->caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ao2_t_ref(peer, -1, "failed to allocate format capabilities, drop peer"); return NULL; } @@ -34351,7 +34351,7 @@ static int load_module(void) return AST_MODULE_LOAD_FAILURE; } - if (!(sip_tech.capabilities = ast_format_cap_alloc())) { + if (!(sip_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } @@ -34373,7 +34373,7 @@ static int load_module(void) return AST_MODULE_LOAD_FAILURE; } - if (!(sip_cfg.caps = ast_format_cap_alloc())) { + if (!(sip_cfg.caps = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_FAILURE; } ast_format_cap_add_all_by_type(sip_tech.capabilities, AST_FORMAT_TYPE_AUDIO); diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 496de18667eefdb86bbfca62cb334947728cf22a..a65862ff3caaf70e40a9dc08d980facc40cbf97e 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -1677,8 +1677,8 @@ static struct skinny_line *skinny_line_alloc(void) return NULL; } - l->cap = ast_format_cap_alloc_nolock(); - l->confcap = ast_format_cap_alloc_nolock(); + l->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + l->confcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!l->cap || !l->confcap) { l->cap = ast_format_cap_destroy(l->cap); l->confcap = ast_format_cap_destroy(l->confcap); @@ -1704,8 +1704,8 @@ static struct skinny_device *skinny_device_alloc(const char *dname) return NULL; } - d->cap = ast_format_cap_alloc_nolock(); - d->confcap = ast_format_cap_alloc_nolock(); + d->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + d->confcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); d->endpoint = ast_endpoint_create("Skinny", dname); if (!d->cap || !d->confcap || !d->endpoint) { d->cap = ast_format_cap_destroy(d->cap); @@ -6643,7 +6643,7 @@ static int handle_capabilities_res_message(struct skinny_req *req, struct skinny struct skinny_device *d = s->device; struct skinny_line *l; uint32_t count = 0; - struct ast_format_cap *codecs = ast_format_cap_alloc(); + struct ast_format_cap *codecs = ast_format_cap_alloc(0); int i; if (!codecs) { @@ -8635,10 +8635,10 @@ static int load_module(void) { int res = 0; struct ast_format tmpfmt; - if (!(default_cap = ast_format_cap_alloc())) { + if (!(default_cap = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } - if (!(skinny_tech.capabilities = ast_format_cap_alloc())) { + if (!(skinny_tech.capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c index 5238679880b9c88b7bc5556f424985c8f52029c4..547cd7c2f6e23aeaa654fd13073a09e1643ea214 100644 --- a/channels/chan_unistim.c +++ b/channels/chan_unistim.c @@ -1836,7 +1836,7 @@ static struct unistim_line *unistim_line_alloc(void) return NULL; } - if (!(l->cap = ast_format_cap_alloc_nolock())) { + if (!(l->cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ast_free(l); return NULL; } @@ -6853,10 +6853,10 @@ int load_module(void) { int res; struct ast_format tmpfmt; - if (!(global_cap = ast_format_cap_alloc())) { + if (!(global_cap = ast_format_cap_alloc(0))) { goto buff_failed; } - if (!(unistim_tech.capabilities = ast_format_cap_alloc())) { + if (!(unistim_tech.capabilities = ast_format_cap_alloc(0))) { goto buff_failed; } diff --git a/channels/dahdi/bridge_native_dahdi.c b/channels/dahdi/bridge_native_dahdi.c index 13e1a84ddfae3713340088fa43c53c318536db22..7505eca3ef572f7ba52ed331bde1a61abfb7dbf0 100644 --- a/channels/dahdi/bridge_native_dahdi.c +++ b/channels/dahdi/bridge_native_dahdi.c @@ -911,7 +911,7 @@ int dahdi_native_load(struct ast_module *mod, const struct ast_channel_tech *tec dahdi_tech = tech; - native_bridge.format_capabilities = ast_format_cap_alloc(); + native_bridge.format_capabilities = ast_format_cap_alloc(0); if (!native_bridge.format_capabilities) { return -1; } diff --git a/include/asterisk/format_cap.h b/include/asterisk/format_cap.h index b34f1d3ca7e8325d7d7c434afab2e664676d76ae..aa4eb3bfd6242208b74c3c24ef76df00fbc706d6 100644 --- a/include/asterisk/format_cap.h +++ b/include/asterisk/format_cap.h @@ -29,32 +29,27 @@ /*! Capabilities are represented by an opaque structure statically defined in format_capability.c */ struct ast_format_cap; -/*! - * \brief Allocate a new ast_format_cap structure. - * - * \note Allocation of this object assumes locking - * is already occuring and that the point of contention - * is above this capabilities structure. For example, - * a tech_pvt object referencing a capabilities structure - * can use this function as long as it always holds the - * tech_pvt lock while accessing its capabilities. - * - * \retval ast_format_cap object on success. - * \retval NULL on failure. - */ -struct ast_format_cap *ast_format_cap_alloc_nolock(void); +enum ast_format_cap_flags { + /*! + * The ast_format_cap will be allocated with no lock. + * Useful if there is a separate lock used to protect the structure + */ + AST_FORMAT_CAP_FLAG_NOLOCK = (1 << 0), + /*! + * String representations of the formats are cached on the structure. + * Useful if string representation is frequently requested of the structure. + */ + AST_FORMAT_CAP_FLAG_CACHE_STRINGS = (1 << 1), +}; /*! - * \brief Allocate a new ast_format_cap structure with locking - * - * \note If no other form of locking is taking place, use this function. - * This function makes most sense for globally accessible capabilities structures - * that have no other means of locking. + * \brief Allocate a new ast_format_cap structure * + * \param flags Modifiers of struct behavior. * \retval ast_format_cap object on success. * \retval NULL on failure. */ -struct ast_format_cap *ast_format_cap_alloc(void); +struct ast_format_cap *ast_format_cap_alloc(enum ast_format_cap_flags flags); /*! * \brief Destroy an ast_format_cap structure. diff --git a/main/bridge_basic.c b/main/bridge_basic.c index 942a3ce25915bdd58765b6e4eaada6ce51de3f6f..76dfb289367133a0d367cbadb20559959bea5f33 100644 --- a/main/bridge_basic.c +++ b/main/bridge_basic.c @@ -2218,7 +2218,7 @@ static void recall_callback(struct ast_dial *dial) static int recalling_enter(struct attended_transfer_properties *props) { - RAII_VAR(struct ast_format_cap *, cap, ast_format_cap_alloc_nolock(), ast_format_cap_destroy); + RAII_VAR(struct ast_format_cap *, cap, ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK), ast_format_cap_destroy); struct ast_format fmt; if (!cap) { @@ -2346,7 +2346,7 @@ static int attach_framehook(struct attended_transfer_properties *props, struct a static int retransfer_enter(struct attended_transfer_properties *props) { - RAII_VAR(struct ast_format_cap *, cap, ast_format_cap_alloc_nolock(), ast_format_cap_destroy); + RAII_VAR(struct ast_format_cap *, cap, ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK), ast_format_cap_destroy); struct ast_format fmt; char destination[AST_MAX_EXTENSION + AST_MAX_CONTEXT + 2]; int cause; diff --git a/main/ccss.c b/main/ccss.c index 3068c6ffac9f5e09d9097737f112e4471c6f400c..fadc6e36f77bbad18ac069b7777a781e074aacc9 100644 --- a/main/ccss.c +++ b/main/ccss.c @@ -2815,7 +2815,7 @@ static void *generic_recall(void *data) const char *callback_sub = ast_get_cc_callback_sub(agent->cc_params); unsigned int recall_timer = ast_get_cc_recall_timer(agent->cc_params) * 1000; struct ast_format tmp_fmt; - struct ast_format_cap *tmp_cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *tmp_cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!tmp_cap) { return NULL; diff --git a/main/channel.c b/main/channel.c index 36528f5df82cfc693b7e6f450c6c7f66bfb06fad..e6025c0628baa4fddba44f7ac45d2e54267f3d70 100644 --- a/main/channel.c +++ b/main/channel.c @@ -879,7 +879,7 @@ __ast_channel_alloc_ap(int needqueue, int state, const char *cid_num, const char ast_channel_stage_snapshot(tmp); - if (!(nativeformats = ast_format_cap_alloc())) { + if (!(nativeformats = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_CACHE_STRINGS))) { ao2_ref(tmp, -1); /* format capabilities structure allocation failure */ return NULL; @@ -5401,7 +5401,7 @@ static int set_format(struct ast_channel *chan, int ast_set_read_format(struct ast_channel *chan, struct ast_format *format) { - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); int res; if (!cap) { @@ -5422,7 +5422,7 @@ int ast_set_read_format(struct ast_channel *chan, struct ast_format *format) int ast_set_read_format_by_id(struct ast_channel *chan, enum ast_format_id id) { - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format tmp_format; int res; @@ -5454,7 +5454,7 @@ int ast_set_read_format_from_cap(struct ast_channel *chan, struct ast_format_cap int ast_set_write_format(struct ast_channel *chan, struct ast_format *format) { - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); int res; if (!cap) { @@ -5475,7 +5475,7 @@ int ast_set_write_format(struct ast_channel *chan, struct ast_format *format) int ast_set_write_format_by_id(struct ast_channel *chan, enum ast_format_id id) { - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format tmp_format; int res; diff --git a/main/core_local.c b/main/core_local.c index d4ec06d9fb18cfa291982eacb1095857921499d5..4a047032ce4f91db42fbc6c69a81a0c6bcc24268 100644 --- a/main/core_local.c +++ b/main/core_local.c @@ -1018,7 +1018,7 @@ int ast_local_init(void) return -1; } - if (!(local_tech.capabilities = ast_format_cap_alloc())) { + if (!(local_tech.capabilities = ast_format_cap_alloc(0))) { return -1; } ast_format_cap_add_all(local_tech.capabilities); diff --git a/main/dial.c b/main/dial.c index 6d796e2b9ded7a905577da7fc5ab4a31fc55908e..8cc6f9c89431e0851a360e3e2dc52519cd0d2466 100644 --- a/main/dial.c +++ b/main/dial.c @@ -273,7 +273,7 @@ static int begin_dial_prerun(struct ast_dial_channel *channel, struct ast_channe } else if (chan) { cap_request = ast_channel_nativeformats(chan); } else { - cap_all_audio = ast_format_cap_alloc_nolock(); + cap_all_audio = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); ast_format_cap_add_all_by_type(cap_all_audio, AST_FORMAT_TYPE_AUDIO); cap_request = cap_all_audio; } diff --git a/main/file.c b/main/file.c index b24cdeeb320900d335fb49a3c3343f269d63ae9c..ffdbf1821d54c9331f26474893a4eb73b6630440 100644 --- a/main/file.c +++ b/main/file.c @@ -749,7 +749,7 @@ struct ast_filestream *ast_openstream_full(struct ast_channel *chan, const char buflen = strlen(preflang) + strlen(filename) + 4; buf = ast_alloca(buflen); - if (!(file_fmt_cap = ast_format_cap_alloc_nolock())) { + if (!(file_fmt_cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { return NULL; } if (!fileexists_core(filename, NULL, preflang, buf, buflen, file_fmt_cap) || @@ -797,7 +797,7 @@ struct ast_filestream *ast_openvstream(struct ast_channel *chan, const char *fil if (!ast_format_cap_has_type(ast_channel_nativeformats(chan), AST_FORMAT_TYPE_VIDEO)) { return NULL; } - if (!(tmp_cap = ast_format_cap_alloc_nolock())) { + if (!(tmp_cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { return NULL; } /* Video is supported, so see what video formats exist for this file */ diff --git a/main/format_cap.c b/main/format_cap.c index 5fc110812739c40e1210f7a07590569882927507..96c2fa3aaf4c1c110311b9874b9769e6e3aba8ee 100644 --- a/main/format_cap.c +++ b/main/format_cap.c @@ -38,13 +38,16 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$"); #include "asterisk/astobj2.h" #include "asterisk/utils.h" +#define FORMAT_STR_BUFSIZE 256 struct ast_format_cap { /* The capabilities structure is just an ao2 container of ast_formats */ struct ao2_container *formats; struct ao2_iterator it; /*! TRUE if the formats container created without a lock. */ - int nolock; + struct ast_flags flags; + unsigned int string_cache_valid; + char format_strs[0]; }; /*! format exists within capabilities structure if it is identical to @@ -67,17 +70,27 @@ static int hash_cb(const void *obj, const int flags) return format->id; } -static struct ast_format_cap *cap_alloc_helper(int nolock) +struct ast_format_cap *ast_format_cap_alloc(enum ast_format_cap_flags flags) { - struct ast_format_cap *cap = ast_calloc(1, sizeof(*cap)); + struct ast_format_cap *cap; + unsigned int alloc_size; + + alloc_size = sizeof(*cap); + if (flags & AST_FORMAT_CAP_FLAG_CACHE_STRINGS) { + alloc_size += FORMAT_STR_BUFSIZE; + } + cap = ast_calloc(1, alloc_size); if (!cap) { return NULL; } - cap->nolock = nolock; + + ast_set_flag(&cap->flags, flags); cap->formats = ao2_container_alloc_options( - nolock ? AO2_ALLOC_OPT_LOCK_NOLOCK : AO2_ALLOC_OPT_LOCK_MUTEX, - 283, hash_cb, cmp_cb); + (flags & AST_FORMAT_CAP_FLAG_NOLOCK) ? + AO2_ALLOC_OPT_LOCK_NOLOCK : + AO2_ALLOC_OPT_LOCK_MUTEX, + 11, hash_cb, cmp_cb); if (!cap->formats) { ast_free(cap); return NULL; @@ -86,16 +99,6 @@ static struct ast_format_cap *cap_alloc_helper(int nolock) return cap; } -struct ast_format_cap *ast_format_cap_alloc_nolock(void) -{ - return cap_alloc_helper(1); -} - -struct ast_format_cap *ast_format_cap_alloc(void) -{ - return cap_alloc_helper(0); -} - void *ast_format_cap_destroy(struct ast_format_cap *cap) { if (!cap) { @@ -106,7 +109,7 @@ void *ast_format_cap_destroy(struct ast_format_cap *cap) return NULL; } -void ast_format_cap_add(struct ast_format_cap *cap, const struct ast_format *format) +static void format_cap_add(struct ast_format_cap *cap, const struct ast_format *format) { struct ast_format *fnew; @@ -118,9 +121,16 @@ void ast_format_cap_add(struct ast_format_cap *cap, const struct ast_format *for } ast_format_copy(fnew, format); ao2_link(cap->formats, fnew); + ao2_ref(fnew, -1); } +void ast_format_cap_add(struct ast_format_cap *cap, const struct ast_format *format) +{ + format_cap_add(cap, format); + cap->string_cache_valid = 0; +} + void ast_format_cap_add_all_by_type(struct ast_format_cap *cap, enum ast_format_type type) { int x; @@ -129,9 +139,10 @@ void ast_format_cap_add_all_by_type(struct ast_format_cap *cap, enum ast_format_ for (x = 0; x < f_len; x++) { if (AST_FORMAT_GET_TYPE(f_list[x].format.id) == type) { - ast_format_cap_add(cap, &f_list[x].format); + format_cap_add(cap, &f_list[x].format); } } + cap->string_cache_valid = 0; ast_format_list_destroy(f_list); } @@ -142,8 +153,9 @@ void ast_format_cap_add_all(struct ast_format_cap *cap) const struct ast_format_list *f_list = ast_format_list_get(&f_len); for (x = 0; x < f_len; x++) { - ast_format_cap_add(cap, &f_list[x].format); + format_cap_add(cap, &f_list[x].format); } + cap->string_cache_valid = 0; ast_format_list_destroy(f_list); } @@ -153,7 +165,7 @@ static int append_cb(void *obj, void *arg, int flag) struct ast_format *format = (struct ast_format *) obj; if (!ast_format_cap_iscompatible(result, format)) { - ast_format_cap_add(result, format); + format_cap_add(result, format); } return 0; @@ -162,6 +174,7 @@ static int append_cb(void *obj, void *arg, int flag) void ast_format_cap_append(struct ast_format_cap *dst, const struct ast_format_cap *src) { ao2_callback(src->formats, OBJ_NODATA, append_cb, dst); + dst->string_cache_valid = 0; } static int copy_cb(void *obj, void *arg, int flag) @@ -169,28 +182,32 @@ static int copy_cb(void *obj, void *arg, int flag) struct ast_format_cap *result = (struct ast_format_cap *) arg; struct ast_format *format = (struct ast_format *) obj; - ast_format_cap_add(result, format); + format_cap_add(result, format); return 0; } +static void format_cap_remove_all(struct ast_format_cap *cap) +{ + ao2_callback(cap->formats, OBJ_NODATA | OBJ_MULTIPLE | OBJ_UNLINK, NULL, NULL); +} + void ast_format_cap_copy(struct ast_format_cap *dst, const struct ast_format_cap *src) { - ast_format_cap_remove_all(dst); + format_cap_remove_all(dst); ao2_callback(src->formats, OBJ_NODATA, copy_cb, dst); + dst->string_cache_valid = 0; } struct ast_format_cap *ast_format_cap_dup(const struct ast_format_cap *cap) { struct ast_format_cap *dst; - if (cap->nolock) { - dst = ast_format_cap_alloc_nolock(); - } else { - dst = ast_format_cap_alloc(); - } + + dst = ast_format_cap_alloc(ast_test_flag(&cap->flags, AST_FLAGS_ALL)); if (!dst) { return NULL; } ao2_callback(cap->formats, OBJ_NODATA, copy_cb, dst); + dst->string_cache_valid = 0; return dst; } @@ -217,6 +234,7 @@ int ast_format_cap_remove(struct ast_format_cap *cap, struct ast_format *format) fremove = ao2_callback(cap->formats, OBJ_POINTER | OBJ_UNLINK, find_exact_cb, format); if (fremove) { ao2_ref(fremove, -1); + cap->string_cache_valid = 0; return 0; } @@ -259,6 +277,7 @@ int ast_format_cap_remove_byid(struct ast_format_cap *cap, enum ast_format_id id /* match_found will be set if at least one item was removed */ if (data.match_found) { + cap->string_cache_valid = 0; return 0; } @@ -278,17 +297,20 @@ void ast_format_cap_remove_bytype(struct ast_format_cap *cap, enum ast_format_ty OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, multiple_by_type_cb, &type); + cap->string_cache_valid = 0; } void ast_format_cap_remove_all(struct ast_format_cap *cap) { - ao2_callback(cap->formats, OBJ_NODATA | OBJ_MULTIPLE | OBJ_UNLINK, NULL, NULL); + format_cap_remove_all(cap); + cap->string_cache_valid = 0; } void ast_format_cap_set(struct ast_format_cap *cap, struct ast_format *format) { - ast_format_cap_remove_all(cap); - ast_format_cap_add(cap, format); + format_cap_remove_all(cap); + format_cap_add(cap, format); + cap->string_cache_valid = 0; } int ast_format_cap_get_compatible_format(const struct ast_format_cap *cap, const struct ast_format *format, struct ast_format *result) @@ -434,7 +456,7 @@ int ast_format_cap_identical(const struct ast_format_cap *cap1, const struct ast struct ast_format_cap *ast_format_cap_joint(const struct ast_format_cap *cap1, const struct ast_format_cap *cap2) { struct ao2_iterator it; - struct ast_format_cap *result = ast_format_cap_alloc_nolock(); + struct ast_format_cap *result = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format *tmp; struct find_joint_data data = { .joint_found = 0, @@ -472,7 +494,7 @@ static int joint_copy_helper(const struct ast_format_cap *cap1, const struct ast .joint_found = 0, }; if (!append) { - ast_format_cap_remove_all(result); + format_cap_remove_all(result); } it = ao2_iterator_init(cap1->formats, 0); while ((tmp = ao2_iterator_next(&it))) { @@ -485,6 +507,8 @@ static int joint_copy_helper(const struct ast_format_cap *cap1, const struct ast } ao2_iterator_destroy(&it); + result->string_cache_valid = 0; + return ao2_container_count(result->formats) ? 1 : 0; } @@ -501,7 +525,7 @@ int ast_format_cap_joint_copy(const struct ast_format_cap *cap1, const struct as struct ast_format_cap *ast_format_cap_get_type(const struct ast_format_cap *cap, enum ast_format_type ftype) { struct ao2_iterator it; - struct ast_format_cap *result = ast_format_cap_alloc_nolock(); + struct ast_format_cap *result = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format *tmp; if (!result) { @@ -575,7 +599,7 @@ int ast_format_cap_iter_next(struct ast_format_cap *cap, struct ast_format *form return 0; } -char *ast_getformatname_multiple(char *buf, size_t size, struct ast_format_cap *cap) +static char *getformatname_multiple(char *buf, size_t size, struct ast_format_cap *cap) { int x; unsigned len; @@ -611,6 +635,20 @@ char *ast_getformatname_multiple(char *buf, size_t size, struct ast_format_cap * return buf; } +char *ast_getformatname_multiple(char *buf, size_t size, struct ast_format_cap *cap) +{ + if (ast_test_flag(&cap->flags, AST_FORMAT_CAP_FLAG_CACHE_STRINGS)) { + if (!cap->string_cache_valid) { + getformatname_multiple(cap->format_strs, FORMAT_STR_BUFSIZE, cap); + cap->string_cache_valid = 1; + } + ast_copy_string(buf, cap->format_strs, size); + return buf; + } + + return getformatname_multiple(buf, size, cap); +} + uint64_t ast_format_cap_to_old_bitfield(const struct ast_format_cap *cap) { uint64_t res = 0; @@ -632,11 +670,12 @@ void ast_format_cap_from_old_bitfield(struct ast_format_cap *dst, uint64_t src) int x; struct ast_format tmp_format = { 0, }; - ast_format_cap_remove_all(dst); + format_cap_remove_all(dst); for (x = 0; x < 64; x++) { tmp = (1ULL << x); if (tmp & src) { - ast_format_cap_add(dst, ast_format_from_old_bitfield(&tmp_format, tmp)); + format_cap_add(dst, ast_format_from_old_bitfield(&tmp_format, tmp)); } } + dst->string_cache_valid = 0; } diff --git a/main/manager.c b/main/manager.c index f06b7dbca1eca7bb243afb3a6eb6e49c422bc81d..f3e883407fe9f6ee6cb62bff8c419ef95079a618 100644 --- a/main/manager.c +++ b/main/manager.c @@ -4683,7 +4683,7 @@ static int action_originate(struct mansession *s, const struct message *m) int reason = 0; char tmp[256]; char tmp2[256]; - struct ast_format_cap *cap = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); struct ast_format tmp_fmt; pthread_t th; int bridge_early = 0; diff --git a/main/media_index.c b/main/media_index.c index 605cee927b45ceac32d7d29e90f102a3d73605e8..64fbbbddbe661aa8071768c2be566b9d894bf647 100644 --- a/main/media_index.c +++ b/main/media_index.c @@ -67,7 +67,7 @@ static struct media_variant *media_variant_alloc(const char *variant_str) return NULL; } - variant->formats = ast_format_cap_alloc(); + variant->formats = ast_format_cap_alloc(0); if (!variant->formats) { return NULL; } diff --git a/main/rtp_engine.c b/main/rtp_engine.c index c7e35979522beba03c40f9dc62ffe85a2cdc70bb..54e1e45e3875758134fa69217c0462687749f737 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -1081,8 +1081,8 @@ void ast_rtp_instance_early_bridge_make_compatible(struct ast_channel *c0, struc struct ast_rtp_glue *glue0, *glue1; enum ast_rtp_glue_result audio_glue0_res = AST_RTP_GLUE_RESULT_FORBID, video_glue0_res = AST_RTP_GLUE_RESULT_FORBID; enum ast_rtp_glue_result audio_glue1_res = AST_RTP_GLUE_RESULT_FORBID, video_glue1_res = AST_RTP_GLUE_RESULT_FORBID; - struct ast_format_cap *cap0 = ast_format_cap_alloc_nolock(); - struct ast_format_cap *cap1 = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap0 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + struct ast_format_cap *cap1 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); /* Lock both channels so we can look for the glue that binds them together */ ast_channel_lock_both(c0, c1); @@ -1167,8 +1167,8 @@ int ast_rtp_instance_early_bridge(struct ast_channel *c0, struct ast_channel *c1 struct ast_rtp_glue *glue0, *glue1; enum ast_rtp_glue_result audio_glue0_res = AST_RTP_GLUE_RESULT_FORBID, video_glue0_res = AST_RTP_GLUE_RESULT_FORBID; enum ast_rtp_glue_result audio_glue1_res = AST_RTP_GLUE_RESULT_FORBID, video_glue1_res = AST_RTP_GLUE_RESULT_FORBID; - struct ast_format_cap *cap0 = ast_format_cap_alloc_nolock(); - struct ast_format_cap *cap1 = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap0 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + struct ast_format_cap *cap1 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); /* If there is no second channel just immediately bail out, we are of no use in that scenario */ if (!c1 || !cap1 || !cap0) { diff --git a/pbx/pbx_spool.c b/pbx/pbx_spool.c index 79ef7166fdb34c5d8b41a08358c7c3e9cd79f2b2..31d883c94ec0923c63dd2b0d868abfffdebb6ca5 100644 --- a/pbx/pbx_spool.c +++ b/pbx/pbx_spool.c @@ -144,7 +144,7 @@ static struct outgoing *new_outgoing(const char *fn) return NULL; } - o->capabilities = ast_format_cap_alloc_nolock(); + o->capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!o->capabilities) { free_outgoing(o); return NULL; diff --git a/res/ari/resource_bridges.c b/res/ari/resource_bridges.c index ef7767f71cc7128b648efaa7bbcab90f27117e0e..77d5660ca7154e451d85383ca81f34601d460593 100644 --- a/res/ari/resource_bridges.c +++ b/res/ari/resource_bridges.c @@ -276,7 +276,7 @@ static struct ast_channel *prepare_bridge_media_channel(const char *type) RAII_VAR(struct ast_format_cap *, cap, NULL, ast_format_cap_destroy); struct ast_format format; - cap = ast_format_cap_alloc_nolock(); + cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return NULL; } diff --git a/res/parking/parking_applications.c b/res/parking/parking_applications.c index 7bd89226625c86f432b98dc4c8e216d0e88d9f36..2d481e42126b4f39a4db92ee417f4d07b2b13b11 100644 --- a/res/parking/parking_applications.c +++ b/res/parking/parking_applications.c @@ -687,7 +687,7 @@ static void announce_to_dial(char *dial_string, char *announce_string, int parki struct ast_channel *dchan; struct outgoing_helper oh = { 0, }; int outstate; - struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock(); + struct ast_format_cap *cap_slin = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); char buf[13]; char *dial_tech; char *cur_announce; diff --git a/res/res_agi.c b/res/res_agi.c index 84dcbebe9c5d3bbcc587f0a878df828183ad324f..e69a24cc1be4cc34a1aaf8a731d28b8e4f571cd9 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -3025,7 +3025,7 @@ static int handle_speechcreate(struct ast_channel *chan, AGI *agi, int argc, con return RESULT_SUCCESS; } - if (!(cap = ast_format_cap_alloc_nolock())) { + if (!(cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { return RESULT_FAILURE; } ast_format_cap_add(cap, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); diff --git a/res/res_clioriginate.c b/res/res_clioriginate.c index 42030d798558575199ac26e66bfb03bf6030179c..0d639c77d23da9be83195269d45ed2996eced6ac 100644 --- a/res/res_clioriginate.c +++ b/res/res_clioriginate.c @@ -70,7 +70,7 @@ static char *orig_app(int fd, const char *chan, const char *app, const char *app return CLI_SHOWUSAGE; } - if (!(cap = ast_format_cap_alloc_nolock())) { + if (!(cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { return CLI_FAILURE; } ast_format_cap_add(cap, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); @@ -115,7 +115,7 @@ static char *orig_exten(int fd, const char *chan, const char *data) exten = "s"; if (ast_strlen_zero(context)) context = "default"; - if (!(cap = ast_format_cap_alloc_nolock())) { + if (!(cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { return CLI_FAILURE; } ast_format_cap_add(cap, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c index c0a6acc4ab0d7765574a2b2a5520ddab5e568828..151ab101643190cee30d989ac57cdd1027a5cc95 100644 --- a/res/res_pjsip/pjsip_configuration.c +++ b/res/res_pjsip/pjsip_configuration.c @@ -832,7 +832,7 @@ void *ast_sip_endpoint_alloc(const char *name) ao2_cleanup(endpoint); return NULL; } - if (!(endpoint->media.codecs = ast_format_cap_alloc_nolock())) { + if (!(endpoint->media.codecs = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ao2_cleanup(endpoint); return NULL; } diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index 57c673e0c6e2d1d621f9ca319c75a79c60a6eca7..a2dda373fb0da46f21a3bfceb74cb015ebae447c 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -205,8 +205,8 @@ static int set_caps(struct ast_sip_session *session, struct ast_sip_session_medi int direct_media_enabled = !ast_sockaddr_isnull(&session_media->direct_media_addr) && !ast_format_cap_is_empty(session->direct_media_cap); - if (!(caps = ast_format_cap_alloc_nolock()) || - !(peer = ast_format_cap_alloc_nolock())) { + if (!(caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK)) || + !(peer = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ast_log(LOG_ERROR, "Failed to allocate %s capabilities\n", session_media->stream_type); return -1; } @@ -910,7 +910,7 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as /* Add ICE attributes and candidates */ add_ice_to_stream(session, session_media, pool, media); - if (!(caps = ast_format_cap_alloc_nolock())) { + if (!(caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK))) { ast_log(LOG_ERROR, "Failed to allocate %s capabilities\n", session_media->stream_type); return -1; } diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 9cb85dcf0d13d4b114e57fd595f696a19c133056..07ccd0ce2ee2b5b06b41e7c0acf91b6ee30d8d69 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -1123,7 +1123,7 @@ struct ast_sip_session *ast_sip_session_alloc(struct ast_sip_endpoint *endpoint, ao2_ref(endpoint, +1); session->endpoint = endpoint; session->inv_session = inv_session; - session->req_caps = ast_format_cap_alloc_nolock(); + session->req_caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (endpoint->dtmf == AST_SIP_DTMF_INBAND) { dsp_features |= DSP_FEATURE_DIGIT_DETECT; @@ -1151,7 +1151,7 @@ struct ast_sip_session *ast_sip_session_alloc(struct ast_sip_endpoint *endpoint, iter->session_begin(session); } } - session->direct_media_cap = ast_format_cap_alloc_nolock(); + session->direct_media_cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); AST_LIST_HEAD_INIT_NOLOCK(&session->delayed_requests); ast_party_id_init(&session->id); ao2_ref(session, +1); diff --git a/res/res_stasis.c b/res/res_stasis.c index ab2bf5c8690714a1e21fe9299017d8812f12be89..197022e725754f5ea851913f22d5badca29b1e2a 100644 --- a/res/res_stasis.c +++ b/res/res_stasis.c @@ -321,7 +321,7 @@ static struct ast_channel *prepare_bridge_moh_channel(void) RAII_VAR(struct ast_format_cap *, cap, NULL, ast_format_cap_destroy); struct ast_format format; - cap = ast_format_cap_alloc_nolock(); + cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { return NULL; } diff --git a/tests/test_config.c b/tests/test_config.c index 6b1a8e420cdb375729a6f52df89a8f0475b0146f..f9e9a6f4874c377ba9651140dc6b3dea93c41178 100644 --- a/tests/test_config.c +++ b/tests/test_config.c @@ -671,7 +671,7 @@ static void *test_item_alloc(const char *cat) ao2_ref(item, -1); return NULL; } - if (!(item->codeccapopt = ast_format_cap_alloc())) { + if (!(item->codeccapopt = ast_format_cap_alloc(0))) { ao2_ref(item, -1); return NULL; } @@ -855,10 +855,10 @@ AST_TEST_DEFINE(config_options_test) ast_sockaddr_parse(&acl_allow, "1.2.3.4", PARSE_PORT_FORBID); ast_sockaddr_parse(&acl_fail, "1.1.1.1", PARSE_PORT_FORBID); - defaults.codeccapopt = ast_format_cap_alloc(); + defaults.codeccapopt = ast_format_cap_alloc(0); ast_parse_allow_disallow(&defaults.codecprefopt, defaults.codeccapopt, CODEC_DEFAULT, 1); - configs.codeccapopt = ast_format_cap_alloc(); + configs.codeccapopt = ast_format_cap_alloc(0); ast_parse_allow_disallow(&configs.codecprefopt, configs.codeccapopt, CODEC_CONFIG, 1); ast_string_field_init(&defaults, 128); diff --git a/tests/test_format_api.c b/tests/test_format_api.c index c429e08954c56ca93201b32f5751bf1f561064d9..6cc3495700a474f5fdc4acd22bf2d3e55c0e5bca 100644 --- a/tests/test_format_api.c +++ b/tests/test_format_api.c @@ -622,8 +622,8 @@ AST_TEST_DEFINE(container_test1_nolock) break; } - cap1 = ast_format_cap_alloc_nolock(); - cap2 = ast_format_cap_alloc_nolock(); + cap1 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + cap2 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap1 || !cap2) { ast_test_status_update(test, "cap alloc failed.\n"); @@ -654,8 +654,8 @@ AST_TEST_DEFINE(container_test1_withlock) break; } - cap1 = ast_format_cap_alloc(); - cap2 = ast_format_cap_alloc(); + cap1 = ast_format_cap_alloc(0); + cap2 = ast_format_cap_alloc(0); if (!cap1 || !cap2) { ast_test_status_update(test, "cap alloc failed.\n"); @@ -710,7 +710,7 @@ AST_TEST_DEFINE(container_test2_no_locking) break; } - cap = ast_format_cap_alloc_nolock(); + cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); if (!cap) { ast_test_status_update(test, "alloc failed\n"); return AST_TEST_FAIL; @@ -737,7 +737,7 @@ AST_TEST_DEFINE(container_test2_with_locking) break; } - cap = ast_format_cap_alloc(); + cap = ast_format_cap_alloc(0); if (!cap) { ast_test_status_update(test, "alloc failed\n"); return AST_TEST_FAIL; @@ -756,13 +756,13 @@ static int container_test3_helper(int nolocking, struct ast_test *test) for (x = 0; x < 2000; x++) { if (nolocking) { - cap1 = ast_format_cap_alloc_nolock(); - cap2 = ast_format_cap_alloc_nolock(); - joint = ast_format_cap_alloc_nolock(); + cap1 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + cap2 = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); + joint = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK); } else { - cap1 = ast_format_cap_alloc(); - cap2 = ast_format_cap_alloc(); - joint = ast_format_cap_alloc(); + cap1 = ast_format_cap_alloc(0); + cap2 = ast_format_cap_alloc(0); + joint = ast_format_cap_alloc(0); } if (!cap1 || !cap2 || !joint) { ast_test_status_update(test, "cap alloc fail\n");