diff options
author | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-08-06 15:59:29 +0000 |
---|---|---|
committer | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-08-06 15:59:29 +0000 |
commit | c96a706021bede40bbfc00493f54c626dbaedd7c (patch) | |
tree | 24af709f49d83269c9aa22a79ae30e78329ab1a2 | |
parent | c64707ef77bbfc0c794d32052cc12501041457e9 (diff) |
Merged revisions 136062 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r136062 | mmichelson | 2008-08-06 10:58:40 -0500 (Wed, 06 Aug 2008) | 16 lines
Since adding the AST_CONTROL_SRCUPDATE frame type,
there are places where ast_rtp_new_source may be called
where the tech_pvt of a channel may not yet have an
rtp structure allocated. This caused a crash in chan_skinny,
which was fixed earlier, but now the same crash has been
reported against chan_h323 as well. It seems that the best
solution is to modify ast_rtp_new_source to not attempt to
set the marker bit if the rtp structure passed in is NULL.
This change to ast_rtp_new_source also allows the removal
of what is now a redundant pointer check from chan_skinny.
(closes issue #13247)
Reported by: pj
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@136063 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_skinny.c | 4 | ||||
-rw-r--r-- | main/rtp.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index f629cad78..bd2ff6c04 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -3909,9 +3909,7 @@ static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, s case AST_CONTROL_PROCEEDING: break; case AST_CONTROL_SRCUPDATE: - if (sub->rtp) { - ast_rtp_new_source(sub->rtp); - } + ast_rtp_new_source(sub->rtp); break; default: ast_log(LOG_WARNING, "Don't know how to indicate condition %d\n", ind); diff --git a/main/rtp.c b/main/rtp.c index bc3db9b4b..6e15433ba 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -2537,7 +2537,9 @@ int ast_rtp_setqos(struct ast_rtp *rtp, int tos, int cos, char *desc) void ast_rtp_new_source(struct ast_rtp *rtp) { - rtp->set_marker_bit = 1; + if (rtp) { + rtp->set_marker_bit = 1; + } return; } |