From: Olle Johansson Date: Mon, 16 Apr 2007 14:08:33 +0000 (+0000) Subject: Don't stop RTP on errors on INFO messages. X-Git-Tag: 1.2.18~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=062368a175bdca050c9e01fb5597b523d6f5e791;p=thirdparty%2Fasterisk.git Don't stop RTP on errors on INFO messages. Disclaimer: This patch was needed for Edvina AstHoloApp and was meant to be included in 1.2, but never made it in time so I felt I could add it now. No, just joking, patching error found while testing T.140 with Omnitor earlier this spring. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@61663 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index f3d6edfc66..155c0d73eb 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -10201,13 +10201,15 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_ if ((resp >= 300) && (resp < 700)) { if ((option_verbose > 2) && (resp != 487)) ast_verbose(VERBOSE_PREFIX_3 "Got SIP response %d \"%s\" back from %s\n", resp, rest, ast_inet_ntoa(iabuf, sizeof(iabuf), p->sa.sin_addr)); - if (p->rtp) { - /* Immediately stop RTP */ - ast_rtp_stop(p->rtp); - } - if (p->vrtp) { - /* Immediately stop VRTP */ - ast_rtp_stop(p->vrtp); + if (sipmethod == SIP_INVITE) { + if (p->rtp) { + /* Immediately stop RTP */ + ast_rtp_stop(p->rtp); + } + if (p->vrtp) { + /* Immediately stop VRTP */ + ast_rtp_stop(p->vrtp); + } } /* XXX Locking issues?? XXX */ switch(resp) { @@ -10251,7 +10253,8 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_ /* ACK on invite */ if (sipmethod == SIP_INVITE) transmit_request(p, SIP_ACK, seqno, 0, 0); - ast_set_flag(p, SIP_ALREADYGONE); + if (sipmethod != SIP_MESSAGE && sipmethod != SIP_INFO) + ast_set_flag(p, SIP_ALREADYGONE); if (!p->owner) ast_set_flag(p, SIP_NEEDDESTROY); } else if ((resp >= 100) && (resp < 200)) {