From: Joshua Colp Date: Thu, 12 Nov 2015 12:24:06 +0000 (-0400) Subject: format_cap: Don't append the 'none' format when appending all. X-Git-Tag: 14.0.0-beta1~582^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fchanges%2F12%2F1612%2F3;p=thirdparty%2Fasterisk.git format_cap: Don't append the 'none' format when appending all. When appending all formats of a type all the codecs are iterated and added. This operation was incorrectly adding the ast_format_none format which is special in that it is supposed to be used when no format is present. It shouldn't be appended. ASTERISK-25535 Change-Id: I7b00f3bdf4a5f3022e483d6ece602b1e8b12827c --- diff --git a/main/format_cap.c b/main/format_cap.c index 2221c53399..9e16aa3e13 100644 --- a/main/format_cap.c +++ b/main/format_cap.c @@ -231,7 +231,15 @@ int ast_format_cap_append_by_type(struct ast_format_cap *cap, enum ast_media_typ } format = ast_format_cache_get(codec->name); + + if (format == ast_format_none) { + ao2_ref(format, -1); + ao2_ref(codec, -1); + continue; + } + if (!format || (codec != ast_format_get_codec(format))) { + ao2_cleanup(format); format = ast_format_create(codec); } ao2_ref(codec, -1); diff --git a/tests/test_format_cap.c b/tests/test_format_cap.c index b62f6e5d8b..1f02c29cd3 100644 --- a/tests/test_format_cap.c +++ b/tests/test_format_cap.c @@ -245,7 +245,7 @@ AST_TEST_DEFINE(format_cap_append_all_unknown) } else if (!ast_format_cap_has_type(caps, AST_MEDIA_TYPE_VIDEO)) { ast_test_status_update(test, "Added all media formats but no video formats exist when they should\n"); return AST_TEST_FAIL; - } else if ((ast_format_cap_count(caps) + 1) != ast_codec_get_max()) { + } else if ((ast_format_cap_count(caps) + 1) != (ast_codec_get_max() - 1)) { ast_test_status_update(test, "The number of formats in the capabilities structure does not match known number\n"); return AST_TEST_FAIL; }