aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-12-13 22:54:37 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-12-13 22:54:37 +0000
commit6baed0fd640678a1fd085cf45ddcd5d101150db6 (patch)
tree7ea21759e9397af465452dea23ac2d0d6176ed98
parentf19a371176ba2044958e19d93b88335db11c55b1 (diff)
The SIP motto is "There's More Than One Standard for Doing It"
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1856 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xchannels/chan_sip.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 09e16871d..891bdaf88 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1845,6 +1845,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
struct hostent *hp;
int codec;
int iterator;
+ int sendonly = 0;
int x;
/* Get codec and RTP info from SDP */
@@ -1925,6 +1926,13 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
sdpLineNum_iterator_init(&iterator);
while ((a = get_sdp_iterate(&iterator, req, "a"))[0] != '\0') {
char* mimeSubtype = ast_strdupa(a); // ensures we have enough space
+ if (!strcasecmp(a, "sendonly")) {
+ sendonly=1;
+ continue;
+ }
+ if (!strcasecmp(a, "sendrecv")) {
+ sendonly=0;
+ }
if (sscanf(a, "rtpmap: %u %[^/]/", &codec, mimeSubtype) != 2) continue;
if (sipdebug)
ast_verbose("Found description format %s\n", mimeSubtype);
@@ -1963,7 +1971,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
}
if (p->owner->bridge) {
/* Turn on/off music on hold if we are holding/unholding */
- if (sin.sin_addr.s_addr) {
+ if (sin.sin_addr.s_addr && !sendonly) {
ast_moh_stop(p->owner->bridge);
} else {
ast_moh_start(p->owner->bridge, NULL);