From: Joshua Colp Date: Mon, 18 May 2009 13:53:39 +0000 (+0000) Subject: Fix a bug where the codecs of the called party leg were not properly sent back to... X-Git-Tag: 1.4.26~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac71a26c0f24b928cf128ea9a3a338795a54670f;p=thirdparty%2Fasterisk.git Fix a bug where the codecs of the called party leg were not properly sent back to the caller call leg when reinvited. (closes issue #13569) Reported by: bkw918 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@195095 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index b1358175ae..3bc29bb75b 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -18559,11 +18559,8 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struc changed = 1; } if (codecs) { - if ((p->redircodecs != codecs)) { + if (p->redircodecs != codecs && (p->jointcapability & codecs) != p->jointcapability) { p->redircodecs = codecs; - changed = 1; - } - if ((p->capability & codecs) != p->capability) { p->jointcapability &= codecs; p->capability &= codecs; changed = 1; diff --git a/main/rtp.c b/main/rtp.c index de4ab9a2f5..4250661d38 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -3019,7 +3019,8 @@ static enum ast_bridge_result bridge_native_loop(struct ast_channel *c0, struct oldcodec1 = codec1; } if ((inaddrcmp(&t0, &ac0)) || - (vp0 && inaddrcmp(&vt0, &vac0))) { + (vp0 && inaddrcmp(&vt0, &vac0)) || + (codec0 != oldcodec0)) { if (option_debug > 1) { ast_log(LOG_DEBUG, "Oooh, '%s' changed end address to %s:%d (format %d)\n", c0->name, ast_inet_ntoa(t0.sin_addr), ntohs(t0.sin_port), codec0);