]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel
authorlvl <digium@lvlconsultancy.nl>
Tue, 1 Oct 2019 11:29:11 +0000 (13:29 +0200)
committerlvl <digium@lvlconsultancy.nl>
Tue, 1 Oct 2019 13:14:21 +0000 (15:14 +0200)
ASTERISK-28086 #close

Change-Id: Ib3baadc89b9f0477a6f25a63861433812368c5ea

channels/chan_pjsip.c

index 5b91dfdc632b43d52e8e9c6c766eeb58211bb832..a54f6d90124537577d9762bab0b4e458fc5c60dc 100644 (file)
@@ -2267,6 +2267,12 @@ static int chan_pjsip_digit_end(struct ast_channel *ast, char digit, unsigned in
        struct ast_sip_session_media *media;
        int res = 0;
 
+       if (!channel || !channel->session) {
+               /* This happens when the channel is hungup while a DTMF digit is playing. See ASTERISK-28086 */
+               ast_debug(3, "Channel %s disappeared while calling digit_end\n", ast_channel_name(ast));
+               return -1;
+       }
+
        media = channel->session->active_media_state->default_session[AST_MEDIA_TYPE_AUDIO];
 
        switch (channel->session->dtmf) {