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

Reply via email to