summaryrefslogtreecommitdiff
path: root/main/format_cap.c
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 14:05:14 +0100
commite85f0c81af56e48711468e820d6bcdbbb65c6310 (patch)
tree78a23170a1b455dcd70f4233ef293486e4b9756f /main/format_cap.c
parentf12ebe35848c2ce82e53b332742e83b2b5875502 (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/format_cap.c')
-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 d486d5d8c..2221c5339 100644
--- a/main/format_cap.c
+++ b/main/format_cap.c
@@ -230,7 +230,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) {