diff options
author | Alexander Traud <pabstraud@compuserve.com> | 2015-11-09 14:04:43 +0100 |
---|---|---|
committer | Alexander Traud <pabstraud@compuserve.com> | 2015-11-09 08:07:37 -0500 |
commit | f3ac4d8090207dd4440bf279e1d5ce4702aee314 (patch) | |
tree | 6b00a1c576a1748a7bdd497da248fca3113adbbb /main | |
parent | 506aea26e6c67cd53874aa3ffef278524dfd7878 (diff) |
ast_format_cap: Avoid format creation on module load, use cache instead.
Since Asterisk 13, formats are immutable and cached. However while loading a
module like chan_sip, some formats were created instead using cached ones.
ASTERISK-25535 #close
Change-Id: I479cdc220d5617c840a98f3389b3bd91e91fbd9b
Diffstat (limited to 'main')
-rw-r--r-- | main/format_cap.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/main/format_cap.c b/main/format_cap.c index 1725e3862..4739efa0a 100644 --- a/main/format_cap.c +++ b/main/format_cap.c @@ -264,7 +264,10 @@ int ast_format_cap_append_by_type(struct ast_format_cap *cap, enum ast_media_typ continue; } - format = ast_format_create(codec); + format = ast_format_cache_get(codec->name); + if (!format || (codec != ast_format_get_codec(format))) { + format = ast_format_create(codec); + } ao2_ref(codec, -1); if (!format) { |