From 79ec66657d9b2f67306d2a8ef91d8280e561e54c Mon Sep 17 00:00:00 2001 From: Damien Sandras Date: Tue, 31 Mar 2015 11:43:40 +0200 Subject: [PATCH] Registrar: Add contact-based aliasing when the remote UA supports it. If an endpoint supporting TCP connection reuse registers to OpenSIPS, we now create TCP connections aliases for all IP/ports announced by the UA. --- modules/registrar/save.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/registrar/save.c b/modules/registrar/save.c index b96c79a7646..daf7522ae0e 100644 --- a/modules/registrar/save.c +++ b/modules/registrar/save.c @@ -458,6 +458,13 @@ static inline int insert_contacts(struct sip_msg* _m, contact_t* _c, } else { e_max = e; } + if (_m->flags&tcp_persistent_flag && _m->via1->alias && tcp_accept_aliases) { + + if (tcpconn_add_alias(_m->rcv.proto_reserved1, uri.port_no ? uri.port_no : SIP_PORT, uri.proto)) + LM_ERR("tcp alias failed\n"); + else + LM_DBG("tcp alias contact port %d\n", uri.port_no ? uri.port_no : SIP_PORT); + } } } #endif @@ -668,6 +675,12 @@ static inline int update_contacts(struct sip_msg* _m, urecord_t* _r, LM_WARN("multiple TCP contacts on single REGISTER\n"); } if (e>e_max) e_max = e; + if (_m->flags&tcp_persistent_flag && _m->via1->alias && tcp_accept_aliases) { + if (tcpconn_add_alias(_m->rcv.proto_reserved1, uri.port_no ? uri.port_no : SIP_PORT, uri.proto)) + LM_ERR("tcp alias failed\n"); + else + LM_DBG("tcp alias contact port %d\n", uri.port_no ? uri.port_no : SIP_PORT); + } } } #endif