[Asterisk-cvs] asterisk/channels chan_sip.c,1.473,1.474
markster at lists.digium.com
markster at lists.digium.com
Wed Aug 18 10:08:57 CDT 2004
Update of /usr/cvsroot/asterisk/channels
In directory localhost.localdomain:/tmp/cvs-serv17858/channels
Modified Files:
chan_sip.c
Log Message:
Make sure jointcapability really indicates joint capability (bug #2210)
Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.473
retrieving revision 1.474
diff -u -d -r1.473 -r1.474
--- chan_sip.c 18 Aug 2004 02:16:04 -0000 1.473
+++ chan_sip.c 18 Aug 2004 13:55:03 -0000 1.474
@@ -264,6 +264,7 @@
int capability; /* Special capability (codec) */
int novideo; /* Didn't get video in invite, don't offer */
int jointcapability; /* Supported capability at both ends (codecs ) */
+ int peercapability; /* Supported peer capability */
int prefcodec; /* Preferred codec (outbound only) */
int noncodeccapability;
int outgoing; /* Outgoing or incoming call? */
@@ -2735,7 +2736,8 @@
ast_rtp_get_current_formats(p->vrtp,
&vpeercapability, &vpeernoncodeccapability);
p->jointcapability = p->capability & (peercapability | vpeercapability);
- p->noncodeccapability = noncodeccapability & (peernoncodeccapability | vpeernoncodeccapability);
+ p->peercapability = (peercapability | vpeercapability);
+ p->noncodeccapability = noncodeccapability & p->peercapability;
if (debug) {
const unsigned slen=80;
@@ -3322,7 +3324,7 @@
ast_log(LOG_WARNING, "No way to add SDP without an RTP structure\n");
return -1;
}
- capability = p->jointcapability;
+ capability = p->capability;
if (!p->sessionid) {
p->sessionid = getpid();
@@ -5262,6 +5264,8 @@
p->restrictcid = user->restrictcid;
p->capability = user->capability;
p->jointcapability = user->capability;
+ if (p->peercapability)
+ p->jointcapability &= p->peercapability;
p->promiscredir = user->promiscredir;
if (user->dtmfmode) {
p->dtmfmode = user->dtmfmode;
@@ -5343,6 +5347,8 @@
p->pickupgroup = peer->pickupgroup;
p->capability = peer->capability;
p->jointcapability = peer->capability;
+ if (p->peercapability)
+ p->jointcapability &= p->peercapability;
p->promiscredir = peer->promiscredir;
if (peer->dtmfmode) {
p->dtmfmode = peer->dtmfmode;
@@ -5812,6 +5818,7 @@
ast_cli(fd, " Call-ID: %s\n", cur->callid);
ast_cli(fd, " Our Codec Capability: %d\n", cur->capability);
ast_cli(fd, " Non-Codec Capability: %d\n", cur->noncodeccapability);
+ ast_cli(fd, " Their Codec Capability: %d\n", cur->peercapability);
ast_cli(fd, " Joint Codec Capability: %d\n", cur->jointcapability);
ast_cli(fd, " Format %s\n", ast_getformatname(cur->owner ? cur->owner->nativeformats : 0) );
ast_cli(fd, " Theoretical Address: %s:%d\n", ast_inet_ntoa(iabuf, sizeof(iabuf), cur->sa.sin_addr), ntohs(cur->sa.sin_port));
@@ -8671,7 +8678,7 @@
static int sip_get_codec(struct ast_channel *chan)
{
struct sip_pvt *p = chan->pvt->pvt;
- return p->capability;
+ return p->peercapability;
}
static struct ast_rtp_protocol sip_rtp = {
More information about the svn-commits
mailing list