res_pjsip: Split type=identify to IP address and SIP header matching priorities

The type=identify endpoint identification method can match by IP address
and by SIP header.  However, the SIP header matching has limited
usefulness because you cannot specify the SIP header matching priority
relative to the IP address matching.  All the matching happens at the same
priority and the order of evaluating the identify sections is
indeterminate.  e.g., If you had two type=identify sections where one
matches by IP address for endpoint alice and the other matches by SIP
header for endpoint bob then you couldn't predict which endpoint is
matched when a request comes in that matches both.

* Extract the SIP header matching criteria into its own "header" endpoint
identification method so the user can specify the relative priority of the
SIP header and the IP address matching criteria in the global
endpoint_identifier_order option.  The "ip" endpoint identification method
now only matches by IP address.

ASTERISK-27491

Change-Id: I9df142a575b7e1e3471b7cda5d3ea156cef08095
This commit is contained in:
Richard Mudgett
2017-12-22 19:50:34 -06:00
parent 2f392bedb3
commit 8494e78010
9 changed files with 170 additions and 47 deletions

25
CHANGES
View File

@@ -56,6 +56,31 @@ cdr_syslog
* The cdr_syslog module is now deprecated and by default it is no longer
built.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------
------------------------------------------------------------------------------
res_pjsip
------------------
* Users who are matching endpoints by SIP header need to reevaluate their
global "endpoint_identifier_order" option in light of the "ip" endpoint
identifier method split into the "ip" and "header" endpoint identifier
methods.
res_pjsip_endpoint_identifier_ip
------------------
* The endpoint identifier "ip" method previously recognized endpoints either
by IP address or a matching SIP header. The "ip" endpoint identifier method
is now split into the "ip" and "header" endpoint identifier methods. The
"ip" endpoint identifier method only matches by IP address and the "header"
endpoint identifier method only matches by SIP header. The split allows the
user to control the relative priority of the IP address and the SIP header
identification methods in the global "endpoint_identifier_order" option.
e.g., If you have two type=identify sections where one matches by IP address
for endpoint alice and the other matches by SIP header for endpoint bob then
you can now predict which endpoint is matched when a request comes in that
matches both.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------
------------------------------------------------------------------------------