Merged revisions 136062 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Wed, 6 Aug 2008 15:59:29 +0000 (15:59 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 6 Aug 2008 15:59:29 +0000 (15:59 +0000)
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: https://origsvn.digium.com/svn/asterisk/trunk@136063 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_skinny.c
main/rtp.c

index f629cad..bd2ff6c 100644 (file)
@@ -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);
index bc3db9b..6e15433 100644 (file)
@@ -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;
 }