<div dir="ltr">The patch for <a href="https://issues.asterisk.org/jira/browse/ASTERISK-27206">https://issues.asterisk.org/jira/browse/ASTERISK-27206</a> which<br>is committed in 7385d1e017e562afe64431606e857e704f86a16d causes a<br>configuration regression by requiring the endpoint and identifier method<br>to agree to match the endpoint.  Doing so is redundant for methods that<br>explicitly specify which endpoints they match.  The redundancy allows<br>configuration errors that cannot be caught when the configuration is<br>loaded.<br><br>Relevant endpoint 101 configuration values:<br><br>[global]<br>; The order by which endpoint identifier methods are given priority.<br>; The endpoint_identifier_order default is<br>;endpoint_identifier_order=ip,username,anonymous<br><br>[101]<br>type=endpoint<br>; The identify_by default is<br>;identify_by=username<br><br>[identify_me]<br>type=identify<br>endpoint=101<br>; Match by some IP address<br>match=<a href="http://127.0.0.1/24">127.0.0.1/24</a><br><br>Before the patch, the 101 endpoint above would identify by either the<br>username endpoint identifier method or the<br>res_pjsip_endpoint_identifier_ip endpoint identifier method's<br>[identify_me] section.<br><br>After the patch, the 101 endpoint is still matched by either method.<br>However, the identify_by default had to change to "username,ip" and the<br>option meaning had to change slightly do it.  I think this is wrong.  If<br>you went to the trouble to create an [identify_me] section which must<br>explicitly specify the endpoint it matches then the endpoint should not<br>need to also specify in the identify_by value that it is identified by the<br>res_pjsip_endpoint_identifier_ip method.  Doing so is redundant and will<br>cause unnecessary configuration errors.<br><br>The goal of ASTERISK-27206 is to prevent the endpoint from being<br>identified by the username identification method so it could only be<br>identified by the res_pjsip_endpoint_identifier_ip method.  The key<br>difference between the two methods is the username identification method<br>has no other configuration than the endpoint's identify_by value available<br>to specify to which endpoint the method applies.<br><br>I think the previous and current identify_by documentation is a bit<br>misleading in any case.  The identify_by option historically specified<br>which identification methods that have no other configuration requirements<br>can match the endpoint.  i.e., The username and auth_username<br>identification methods.  To satisfy ASTERISK-27206, what is needed for the<br>identify_by option is a value to prevent methods that have no other<br>configuration requirements from matching the endpoint.<br><br>Proposed candidates for the new identify_by value are: "", "none", and<br>"other".  The "" or "none" value to indicate that none of the methods<br>without configuration will match.  The "other" value to indicate that the<br>endpoint is matched by only other matching mechanisms with their own<br>configuration.<br><br>Looking at the some some more, I think the empty value "" is already<br>allowable in the pjsip.conf file so the entire patch for ASTERISK-27206<br>would not be needed.  You could have configured identify_by to an empty<br>value and it would have satisfied the issue.  However, I think database<br>backends would have an issue with an empty value since the column is<br>declared as an enum while the code works with it as a string of comma<br>separated enum values.<br><br>Fortunately, the first ASTERISK-27206 patch hasn't come out in a release<br>yet.  However, it is currently in the 13.19.0-rc1 version.  As a result,<br>we may have to keep the "ip" value that the first ASTERISK-27206 patch<br>added to indicate_by as an alias and fix the database column definition.<br><br>Richard<br><br></div>