[asterisk-bugs] [JIRA] (ASTERISK-29241) pjsip / register: wrong port used in Contact and Via if multiple transports are defined.
Michael Maier (JIRA)
noreply at issues.asterisk.org
Sun Jan 10 15:02:16 CST 2021
Michael Maier created ASTERISK-29241:
----------------------------------------
Summary: pjsip / register: wrong port used in Contact and Via if multiple transports are defined.
Key: ASTERISK-29241
URL: https://issues.asterisk.org/jira/browse/ASTERISK-29241
Project: Asterisk
Issue Type: Bug
Security Level: None
Components: Resources/res_pjsip_outbound_registration
Affects Versions: 18.0.1
Environment: CentOS 7 x86_64
Reporter: Michael Maier
Define some transports:
CLI> pjsip show transports
{code}
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress....................>
==========================================================================================
Transport: 0.0.0.0-tls tls 3 184 0.0.0.0:5061
Transport: 0.0.0.0-tls2 tls 3 184 0.0.0.0:5062
Transport: 0.0.0.0-tls3 tls 3 184 0.0.0.0:5063
Transport: 0.0.0.0-udp udp 3 184 0.0.0.0:5060
{code}
The 3 TLS transports are added to different trunk configuration. 2 examples:
{code}
CLI> pjsip show registration telekomPJSIP-001
<Registration/ServerURI..............................> <Auth..........> <Status.......>
==========================================================================================
telekomPJSIP-001/sip:tel.t-online.de telekomPJSIP-001 Registered
ParameterName : ParameterValue
============================================================
auth_rejection_permanent : true
client_uri : sip:+49... at tel.t-online.de
contact_header_params :
contact_user : +49...
endpoint : telekomPJSIP-001
expiration : 660
fatal_retry_interval : 0
forbidden_retry_interval : 10
line : true
max_retries : 10000
outbound_auth : telekomPJSIP-001
outbound_proxy :
retry_interval : 60
server_uri : sip:tel.t-online.de
support_mediasec : true
support_outbound : no
support_path : false
transport : 0.0.0.0-tls
CLI> pjsip show registration telekomPJSIP-002
<Registration/ServerURI..............................> <Auth..........> <Status.......>
==========================================================================================
telekomPJSIP-002/sip:tel.t-online.de telekomPJSIP-002 Registered
ParameterName : ParameterValue
=============================================================
auth_rejection_permanent : true
client_uri : ...
contact_header_params :
contact_user : ...
endpoint : telekomPJSIP-002
expiration : 660
fatal_retry_interval : 0
forbidden_retry_interval : 10
line : true
max_retries : 10000
outbound_auth : telekomPJSIP-002
outbound_proxy :
retry_interval : 60
server_uri : sip:tel.t-online.de
support_mediasec : true
support_outbound : no
support_path : false
transport : 0.0.0.0-tls2
CLI> pjsip show endpoint telekomPJSIP-001
Endpoint: telekomPJSIP-001 Not in use 0 of inf
OutAuth: telekomPJSIP-001/+49...
Aor: telekomPJSIP-001 0
Contact: telekomPJSIP-001/sip:+49... at tel.t-o 88c72b9045 Avail 13.944
Transport: 0.0.0.0-tls tls 3 184 0.0.0.0:5061
Identify: telekomPJSIP-001/telekomPJSIP-001
Match: 127.0.0.10/32
CLI> pjsip show endpoint telekomPJSIP-002
Endpoint: telekomPJSIP-002 Not in use 0 of inf
OutAuth: telekomPJSIP-002/+49...
Aor: telekomPJSIP-002 0
Contact: telekomPJSIP-002/sip:+49... at tel.t- 7f03d717f5 Avail 13.425
Transport: 0.0.0.0-tls2 tls 3 184 0.0.0.0:5062
Identify: telekomPJSIP-002/telekomPJSIP-002
Match: 127.0.0.10/32
[root at myfw ~]# netstat -n | grep 506
tcp 0 0 3.2.1.5:53527 217.0.20.195:5061 ESTABLISHED
tcp 0 0 3.2.1.5:49161 217.0.20.195:5061 ESTABLISHED
tcp 0 0 3.2.1.5:56727 217.0.20.195:5061 ESTABLISHED
I verified via tcpdump, that each Register now uses its own connection.
Next, I checked the Register packets - to telekomPJSIP-001, e.g:
Via: SIP/2.0/TLS 3.2.1.5:5062;rport;branch=...
^^^^
Contact: <sip:+49... at 3.2.1.5:5062;transport=TLS;line=...>
^^^^
{code}
=> this should be 5061 (because of transport 0.0.0.0-tls which refers to 5061) - not 5062 ...
=> It turns out, that *all* Registers of all trunks are using port 5062 now. Why that? 5061 and 5063 is ignored completely.
Error can be seen in log and is print by pjsip_message_filter.c:
{code}
static pj_status_t filter_on_tx_message(pjsip_tx_data *tdata)
...
ast_debug(5, "Re-wrote Contact URI host/port to %.*s:%d (this may be re-written again later)\n",
(int)pj_strlen(&uri->host), pj_strbuf(&uri->host), uri->port);
{code}
I didn't test with 18.1.x - but I guess that it could behave the same way.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list