]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
ast_format_cap: Avoid format creation on module load, use cache instead. 90/1590/1
authorAlexander Traud <pabstraud@compuserve.com>
Mon, 9 Nov 2015 13:04:43 +0000 (14:04 +0100)
committerAlexander Traud <pabstraud@compuserve.com>
Mon, 9 Nov 2015 13:07:37 +0000 (08:07 -0500)
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

main/format_cap.c

index 1725e386288b91bfd034e8afe05aaceddd013e04..4739efa0a7296cddd1450709b5583ad184d88e4e 100644 (file)
@@ -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) {