Module: sems Branch: master Commit: 04fc38ec218d14becc0938aac3a1671ff26f849a URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=04fc38ec218d14becc0938aac3a1671ff26f849a
Author: Carsten Bock <[email protected]> Committer: Carsten Bock <[email protected]> Date: Wed Aug 20 10:10:33 2014 +0200 Improvement: Add option not to add ";transport=" to contact --- core/AmConfig.cpp | 5 +++-- core/sip/trans_layer.cpp | 16 +++++++++------- core/sip/transport.h | 7 ++++--- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/core/AmConfig.cpp b/core/AmConfig.cpp index 5cd8455..706a621 100644 --- a/core/AmConfig.cpp +++ b/core/AmConfig.cpp @@ -761,8 +761,9 @@ static int readSIPInterface(AmConfigReader& cfg, const string& i_name) it_opt != opt_strs.end(); ++it_opt) { if(*it_opt == "force_via_address") { opts |= trsp_socket::force_via_address; - } - else { + } else if(*it_opt == "no_transport_in_contact") { + opts |= trsp_socket::no_transport_in_contact; + } else { WARN("unknown signaling socket option '%s' set on interface '%s'\n", it_opt->c_str(),i_name.c_str()); } diff --git a/core/sip/trans_layer.cpp b/core/sip/trans_layer.cpp index 024d13e..aacf383 100644 --- a/core/sip/trans_layer.cpp +++ b/core/sip/trans_layer.cpp @@ -268,16 +268,18 @@ int _trans_layer::send_reply(sip_msg* msg, const trans_ticket* tt, assert(req); trsp_socket* local_socket = req->local_socket; - cstring trsp(local_socket->get_transport()); + if(!local_socket->is_opt_set(trsp_socket::no_transport_in_contact)) { + cstring trsp(local_socket->get_transport()); - // patch Contact-HF - vector<string> contact_buf(msg->contacts.size()); - vector<string>::iterator contact_buf_it = contact_buf.begin(); + // patch Contact-HF + vector<string> contact_buf(msg->contacts.size()); + vector<string>::iterator contact_buf_it = contact_buf.begin(); - for(list<sip_header*>::iterator contact_it = msg->contacts.begin(); - contact_it != msg->contacts.end(); contact_it++, contact_buf_it++) { + for(list<sip_header*>::iterator contact_it = msg->contacts.begin(); + contact_it != msg->contacts.end(); contact_it++, contact_buf_it++) { - patch_contact_transport(*contact_it,trsp,*contact_buf_it); + patch_contact_transport(*contact_it,trsp,*contact_buf_it); + } } bool have_to_tag = false; diff --git a/core/sip/transport.h b/core/sip/transport.h index e2789e9..e12ed90 100644 --- a/core/sip/transport.h +++ b/core/sip/transport.h @@ -44,9 +44,10 @@ class trsp_socket { public: enum socket_options { - force_via_address = (1 << 0), - force_outbound_if = (1 << 1), - use_raw_sockets = (1 << 2) + force_via_address = (1 << 0), + force_outbound_if = (1 << 1), + use_raw_sockets = (1 << 2), + no_transport_in_contact = (1 << 3) }; static int log_level_raw_msgs; _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
