From: Mark Michelson Date: Wed, 6 Aug 2008 15:58:40 +0000 (+0000) Subject: Since adding the AST_CONTROL_SRCUPDATE frame type, X-Git-Tag: 1.4.22-rc1~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b48adf96dc027616d300f29a751d86d4e2111d5c;p=thirdparty%2Fasterisk.git 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: https://origsvn.digium.com/svn/asterisk/branches/1.4@136062 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 80ce09201d..51b1839d53 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -2868,9 +2868,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 14d8aafcdb..bbdb9d6496 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -2000,7 +2000,9 @@ int ast_rtp_settos(struct ast_rtp *rtp, int tos) void ast_rtp_new_source(struct ast_rtp *rtp) { - rtp->set_marker_bit = 1; + if (rtp) { + rtp->set_marker_bit = 1; + } return; }