Module: sems Branch: 1.4 Commit: 8dac2df1b8f22acf98d5b16df961edc3582d1969 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=8dac2df1b8f22acf98d5b16df961edc3582d1969
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: Thu Dec 8 00:34:33 2011 +0100 b/f: fix SBC SDP filter with connection per media only --- core/AmSdp.cpp | 31 +++++++++++++++++++++++-------- 1 files changed, 23 insertions(+), 8 deletions(-) diff --git a/core/AmSdp.cpp b/core/AmSdp.cpp index fca5631..20c7f5d 100644 --- a/core/AmSdp.cpp +++ b/core/AmSdp.cpp @@ -175,12 +175,24 @@ SdpPayload* AmSdp::telephoneEventPayload() const { 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= @@ -199,6 +211,9 @@ void AmSdp::print(string& body) const out_buf += " " + int2str(pl_it->payload_type); + if (!media_it->conn.address.empty()) + options += "c=IN IP4 "+media_it->conn.address+"\r\n"; + if (pl_it->encoding_name.empty()) // don't add rtpmap if no encoding name given continue; @@ -1172,10 +1187,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
