summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorAlexander Traud <pabstraud@compuserve.com>2015-11-09 14:04:43 +0100
committerAlexander Traud <pabstraud@compuserve.com>2015-11-09 08:07:37 -0500
commitf3ac4d8090207dd4440bf279e1d5ce4702aee314 (patch)
tree6b00a1c576a1748a7bdd497da248fca3113adbbb /main
parent506aea26e6c67cd53874aa3ffef278524dfd7878 (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.c5
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) {