diff options
author | Joshua Colp <jcolp@digium.com> | 2014-12-12 17:01:42 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2014-12-12 17:01:42 +0000 |
commit | 8d325be50333b58fe659dd67d4b4932bca068344 (patch) | |
tree | a3a0577aa4e605cee757995df2d020c03a33354b /main/format.c | |
parent | 72499dc6970e6679c35f8732a0a840f9e3f303b7 (diff) |
media: Fix crash when determining sample count of a frame during shutdown.
When shutting down Asterisk the codecs are cleaned up. As a result anything
attempting to get a codec based on ID or details will find that no codec
exists. This currently occurs when determining the sample count of a frame.
This code did not take this situation into account.
This change fixes this by getting the codec directly from the format and
eliminates the lookup. This is both faster and also provides a guarantee
that the codec will exist and will be valid.
ASTERISK-24604 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4260/
........
Merged revisions 429497 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429498 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/format.c')
-rw-r--r-- | main/format.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/main/format.c b/main/format.c index e54fca01b..09d7ef0c5 100644 --- a/main/format.c +++ b/main/format.c @@ -323,6 +323,11 @@ void ast_format_generate_sdp_fmtp(const struct ast_format *format, unsigned int format->interface->format_generate_sdp_fmtp(format, payload, str); } +struct ast_codec *ast_format_get_codec(const struct ast_format *format) +{ + return ao2_bump(format->codec); +} + unsigned int ast_format_get_codec_id(const struct ast_format *format) { return format->codec->id; |