From: David Vossel Date: Tue, 12 Jan 2010 16:21:09 +0000 (+0000) Subject: Merged revisions 239427 via svnmerge from X-Git-Tag: 1.6.0.23~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff32d9c8865344057f49a6eaf1c9010436d0e91c;p=thirdparty%2Fasterisk.git Merged revisions 239427 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r239427 | dvossel | 2010-01-12 10:14:41 -0600 (Tue, 12 Jan 2010) | 14 lines fixes text support in sdp answer The code that handled setting 'm=text' in the sdp was not executing in the correct order. The check to see if text was needed came after the check to add 'm=text' to the sdp, this resulted in 'm=text' always being set to 0 because it looked like text was never required. (closes issue #16457) Reported by: peterj Patches: textportinsdp.diff uploaded by peterj (license 951) issue16457.diff uploaded by dvossel (license 671) Tested by: peterj ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@239447 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 062e058981..e81871cce6 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -8860,13 +8860,29 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int p->sessionversion++; } - /* Check if we need video in this call */ - if (add_audio && (p->jointcapability & AST_FORMAT_VIDEO_MASK) && !p->novideo) { - if (p->vrtp) { - needvideo = TRUE; - ast_debug(2, "This call needs video offers!\n"); - } else - ast_debug(2, "This call needs video offers, but there's no video support enabled!\n"); + if (add_audio) { + /* Check if we need video in this call */ + if ((p->jointcapability & AST_FORMAT_VIDEO_MASK) && !p->novideo) { + if (p->vrtp) { + needvideo = TRUE; + ast_debug(2, "This call needs video offers!\n"); + } else + ast_debug(2, "This call needs video offers, but there's no video support enabled!\n"); + } + /* Check if we need text in this call */ + if ((p->jointcapability & AST_FORMAT_TEXT_MASK) && !p->notext) { + if (sipdebug_text) + ast_verbose("We think we can do text\n"); + if (p->trtp) { + if (sipdebug_text) { + ast_verbose("And we have a text rtp object\n"); + } + needtext = TRUE; + ast_debug(2, "This call needs text offers! \n"); + } else { + ast_debug(2, "This call needs text offers, but there's no text support enabled ! \n"); + } + } } get_our_media_address(p, needvideo, &sin, &vsin, &tsin, &dest, &vdest); @@ -8901,19 +8917,6 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int ast_verbose("Video is at %s port %d\n", ast_inet_ntoa(p->ourip.sin_addr), ntohs(vdest.sin_port)); } - /* Check if we need text in this call */ - if((capability & AST_FORMAT_TEXT_MASK) && !p->notext) { - if (sipdebug_text) - ast_verbose("We think we can do text\n"); - if (p->trtp) { - if (sipdebug_text) - ast_verbose("And we have a text rtp object\n"); - needtext = TRUE; - ast_debug(2, "This call needs text offers! \n"); - } else - ast_debug(2, "This call needs text offers, but there's no text support enabled ! \n"); - } - /* Ok, we need text. Let's add what we need for text and set codecs. Text is handled differently than audio since we can not transcode. */ if (needtext) {