Module: sems Branch: master Commit: 644b58a14ded031472d574beae4c73c56d457367 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=644b58a14ded031472d574beae4c73c56d457367
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: Thu Dec 8 00:49:27 2011 +0100 b/f: fix SBC SDP filter with connection per media only was 1.4: 8dac2d --- core/AmSdp.cpp | 30 ++++++++++++++++++++++-------- 1 files changed, 22 insertions(+), 8 deletions(-) diff --git a/core/AmSdp.cpp b/core/AmSdp.cpp index 6d55116..51bfcd9 100644 --- a/core/AmSdp.cpp +++ b/core/AmSdp.cpp @@ -155,12 +155,24 @@ int AmSdp::parse(const char* _sdp_msg) void AmSdp::print(string& body) const { - string out_buf = - "v="+int2str(version)+"\r\n" - "o="+origin.user+" "+int2str(origin.sessId)+" "+int2str(origin.sessV)+" IN IP4 "+conn.address+"\r\n" - "s="+sessionName+"\r\n" - "c=IN IP4 "+conn.address+"\r\n" - "t=0 0\r\n"; + string out_buf = "v="+int2str(version)+"\r\n" + "o="+origin.user+" "+int2str(origin.sessId)+" "+ + int2str(origin.sessV)+" IN IP4 "; + if (!origin.conn.address.empty()) + out_buf += origin.conn.address+"\r\n"; + else if (!conn.address.empty()) + out_buf += conn.address+"\r\n"; + else if (media.size() && !media[0].conn.address.empty()) + out_buf += media[0].conn.address+"\r\n"; + else + out_buf += "0.0.0.0\r\n"; + + out_buf += + "s="+sessionName+"\r\n"; + if (!conn.address.empty()) + out_buf += "c=IN IP4 "+conn.address+"\r\n"; + + out_buf += "t=0 0\r\n"; // add attributes (session level) for (std::vector<SdpAttribute>::const_iterator a_it= @@ -178,6 +190,8 @@ void AmSdp::print(string& body) const pl_it != media_it->payloads.end(); pl_it++) { out_buf += " " + int2str(pl_it->payload_type); + if (!media_it->conn.address.empty()) + options += "c=IN IP4 "+media_it->conn.address+"\r\n"; // "a=rtpmap:" line if (!pl_it->encoding_name.empty()) { @@ -963,10 +977,10 @@ static void parse_sdp_origin(AmSdp* sdp_msg, char* s) next = parse_until(origin_line, ' '); //check if line contains more values than allowed if(next > line_end){ - string unicast_addr(origin_line, int(line_end-origin_line)-1); + origin.conn.address = string(origin_line, int(line_end-origin_line)-1); }else{ DBG("parse_sdp_origin: 'o=' contains more values than allowed; these values will be ignored\n"); - string unicast_addr(origin_line, int(next-origin_line)-1); + origin.conn.address = string(origin_line, int(next-origin_line)-1); } parsing = 0; break; _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
